5.9. 호스트 네트워크 추적 수집

네트워크 통신을 추적하고 여러 노드의 패킷을 동시에 캡처하여 네트워크 관련 문제를 해결하는 것이 간소화되는 경우가 있습니다.

oc adm must-gather 명령과 registry.redhat.io/openshift4/network-tools-rhel8 컨테이너 이미지의 조합을 사용하여 노드에서 패킷 캡처를 수집할 수 있습니다. 패킷 캡처를 분석하면 네트워크 통신 문제를 해결하는 데 도움이 될 수 있습니다.

oc adm must-gather 명령은 특정 노드의 Pod에서 tcpdump 명령을 실행하는 데 사용됩니다. tcpdump 명령은 Pod에 패킷이 캡처되는 것을 기록합니다. tcpdump 명령이 종료되면 oc adm must-gather 명령은 Pod에서 클라이언트 머신으로 캡처된 파일을 전송합니다.

작은 정보

다음 절차의 샘플 명령은 tcpdump 명령을 사용하여 패킷 캡처를 수행하는 방법을 보여줍니다. 그러나 --image 인수에 지정된 컨테이너 이미지에서 명령을 실행하여 여러 노드에서 문제 해결 정보를 동시에 수집할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

절차

  1. 다음 명령을 실행하여 일부 노드에서 호스트 네트워크에서 패킷 캡처를 실행합니다.

    $ oc adm must-gather \
        --dest-dir /tmp/captures \  <.>
        --source-dir '/tmp/tcpdump/' \  <.>
        --image registry.redhat.io/openshift4/network-tools-rhel8:latest \  <.>
        --node-selector 'node-role.kubernetes.io/worker' \  <.>
        --host-network=true \  <.>
        --timeout 30s \  <.>
        -- \
        tcpdump -i any \  <.>
        -w /tmp/tcpdump/%Y-%m-%dT%H:%M:%S.pcap -W 1 -G 300

    <.> --dest-dir 인수는 oc adm must-gather 가 클라이언트 머신의 /tmp/capECDHEs에 상대적인 디렉터리에 패킷 캡처 를 저장하도록 지정합니다. 쓰기 가능한 모든 디렉터리를 지정할 수 있습니다. <.> oc adm must-gather 가 시작되는 디버그 Pod에서 tcpdump 가 실행되면 --source-dir 인수는 패킷 캡처가 Pod의 /tmp/tcpdump 디렉터리에 임시 저장되도록 지정합니다. <.> --image 인수 tcpdump 명령을 포함하는 컨테이너 이미지를 지정합니다. <.> --node-selector 인수 및 예제 값은 작업자 노드에서 패킷 캡처를 수행하도록 지정합니다. 또는 단일 노드에서 패킷 캡처를 실행하는 대신 --node-name 인수를 지정할 수 있습니다. --node-selector--node-name 인수를 모두 생략하면 패킷 캡처가 모든 노드에서 수행됩니다. <.> --host-network=true 인수가 필요하므로 패킷 캡처가 노드의 네트워크 인터페이스에서 수행됩니다. <.> --timeout 인수 및 값은 30초 동안 디버그 Pod를 실행하도록 지정합니다. --timeout 인수와 기간을 지정하지 않으면 디버그 Pod는 10분 동안 실행됩니다. <.> tcpdump 명령의 모든 인수는 모든 네트워크 인터페이스에서 패킷을 캡처하도록 지정합니다. 또는 네트워크 인터페이스 이름을 지정할 수 있습니다.

  2. 네트워크 추적에서 패킷을 캡처하는 동안 네트워크 통신 문제를 트리거하는 웹 애플리케이션 액세스와 같은 작업을 수행합니다.
  3. oc adm must-gather 가 Pod에서 클라이언트 머신으로 전송된 패킷 캡처 파일을 검토합니다.

    tmp/captures
    ├── event-filter.html
    ├── ip-10-0-192-217-ec2-internal  1
    │   └── registry-redhat-io-openshift4-network-tools-rhel8-sha256-bca...
    │       └── 2022-01-13T19:31:31.pcap
    ├── ip-10-0-201-178-ec2-internal  2
    │   └── registry-redhat-io-openshift4-network-tools-rhel8-sha256-bca...
    │       └── 2022-01-13T19:31:30.pcap
    ├── ip-...
    └── timestamp
    1 2
    패킷 캡처는 호스트 이름, 컨테이너 및 파일 이름을 식별하는 디렉터리에 저장됩니다. --node-selector 인수를 지정하지 않은 경우 호스트 이름의 디렉터리 수준이 존재하지 않습니다.