k8spacket 및 Grafana를 통한 kubernetes용 TCP 패킷 트래픽 시각화

보고 있지 않을 때 k8s 클러스터가 무엇을 하는지 알고 있습니까? 누가 그와 TCP 통신을 설정합니까? 예를 들어 타사 라이브러리에서 누가 그를 호출합니까?
k8spacketGrafana 를 사용하여 클러스터의 TCP 트래픽을 시각화할 수 있습니다. 워크로드가 함께 통신하는 방법을 확인하십시오. 설정된 연결 수, 교환된 바이트 수 및 이러한 연결이 활성화된 시간을 검사합니다.

설명


k8spacket는 Golang으로 작성된 도구이며 gopacket 타사 라이브러리를 사용하여 워크로드(수신 및 발신)에서 TCP 패킷을 스니핑합니다. 실행 중인 컨테이너 네트워크 인터페이스에 TCP 리스너를 생성합니다. 쿠버네티스가 새 컨테이너를 생성할 때 CNI 플러그인은 다른 컨테이너 또는 클러스터에서 전 세계로 통신할 수 있는 가능성을 제공합니다. 가장 일반적인 접근 방식은 linux namespace를 사용하여 네트워크를 격리하고 veth pair를 사용하여 격리된 네임스페이스를 브리지와 연결합니다. 더 알고 싶다면 Safak( )이 쓴 훌륭한 기사를 참조하십시오. type bridge 외에도 CNI 플러그인은 다른 유형( vlan , ipvlan , macvlan )을 사용할 수 있지만 모두 k8spacket 스니퍼의 기본 핸들인 컨테이너 Linux 네임스페이스에 대한 네트워크 인터페이스를 생성합니다.
k8spacket가 옵션으로 실행 중입니다.

hostNetwork: true


앞에서 언급한 격리를 제거합니다. TCP 스트림을 수집하고, 데이터를 처리하고, Grafana에서 사용할 API를 통해 결과를 노출합니다.

추가적으로,
  • k8spacket는 Kubernetes API 클라이언트이며 스니핑된 워크로드를 시각화에 표시되는 클러스터 리소스 이름( PodsServices )으로 해결할 수 있습니다.
  • 모든 노드에서 네트워크 인터페이스를 수신하기 위해 DaemonSet로 실행됩니다.
  • 관찰(또는 잊어버릴)할 새(또는 이전) 네트워크 인터페이스가 있는 경우 관찰자 확인 주기10s(기본값)를 구현했습니다.



  • 클러스터 리소스의 그래프를 표시하는 것 외에도 지표도 노출합니다Prometheus.



    설치


    k8spacket를 설치하려면 Helm 및 Grafana가 설치되어 있어야 합니다. 또한 이 도구에는 Hamad의 Node Grafana API 플러그인( Node Graph API )이 필요합니다.
    모든 설치 단계here를 참조하십시오.

    용법



    통계 유형


  • connection - 워크로드와 외부 클라이언트 간에 설정된 연결 수를 이해하는 데 도움이 됩니다. 어떤 소켓이 열려 있고 문제를 일으킬 수 있는지 알려줍니다. 포트가 소진된 일부 SNAT 게이트웨이 뒤에 있을 때 유용합니다(예: Azure AKS ).
  • bytes - 워크로드에서 보내고 받은 바이트 수를 표시합니다.
  • duration - 연결 수명을 계산합니다.



  • 필터


  • by namespace - 하나 이상의 k8s 네임스페이스 선택


  • by names included - 시각화를 위한 워크로드 이름 선택
  • by names excluded - 시각화에서 작업 부하 이름 제외



  • 요약



    클러스터에서 TCP 트래픽이 어떻게 진행되고 있는지 알고 싶다면 k8spacket를 시도하십시오. 트래픽 차단에 대한 조사( network policy )는 외부에서 패키지가 누출되는 것을 볼 때 고통스럽지 않을 수 있습니다. 타사 라이브러리를 검토하여 세상과의 연결을 확인하십시오.

    좋은 웹페이지 즐겨찾기