5.5. 네트워크 추적 방법
패킷 캡처 레코드 형태로 네트워크 추적을 수집하면 네트워크 문제 해결과 관련하여 Red Hat 지원을 지원할 수 있습니다.
OpenShift Dedicated는 네트워크 추적을 수행하는 두 가지 방법을 지원합니다. 다음 표를 검토하고 요구 사항에 맞는 방법을 선택합니다.
방법 | 이점 및 기능 |
---|---|
호스트 네트워크 추적 수집 | 하나 이상의 노드에 동시에 지정하는 기간에 대해 패킷 캡처를 수행합니다. 지정된 기간이 충족되면 패킷 캡처 파일이 노드에서 클라이언트 시스템으로 전송됩니다. 특정 작업에서 네트워크 통신 문제를 트리거하는 이유를 해결할 수 있습니다. 패킷 캡처를 실행하고 문제를 트리거하는 작업을 수행하고 로그를 사용하여 문제를 진단합니다. |
OpenShift Dedicated 노드 또는 컨테이너에서 네트워크 추적 수집 |
하나의 노드 또는 하나의 컨테이너에서 패킷 캡처를 수행합니다. 패킷 캡처를 수동으로 시작하고 네트워크 통신 문제를 트리거한 다음 패킷 캡처를 수동으로 중지할 수 있습니다.
이 방법은 |
5.5.1. 호스트 네트워크 추적 수집
네트워크 통신을 추적하고 동시에 여러 노드에서 패킷을 캡처하여 네트워크 관련 문제를 해결할 수 있습니다.
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 Dedicated에 로그인되어 있습니다.참고OpenShift Dedicated 배포에서 CCO(Customer Cloud Subscription) 모델을 사용하지 않는 고객은
oc adm must-gather
명령을 사용할 수 없습니다.cluster-admin
권한이 필요합니다.-
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
다음 명령을 실행하여 일부 노드에서 호스트 네트워크에서 패킷 캡처를 실행합니다.
$ 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/captures
와 관련된 디렉터리에 패킷 캡처를 저장하도록 지정합니다. 쓰기 가능한 디렉터리를 지정할 수 있습니다. <.>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
인수 및 값은 디버그 Pod를 30 초 동안 실행하기 위해 지정합니다.--timeout
인수와 기간을 지정하지 않으면 디버그 Pod가 10분 동안 실행됩니다. <.>tcpdump
명령의-i any
인수는 모든 네트워크 인터페이스에서 패킷을 캡처하도록 지정합니다. 또는 네트워크 인터페이스 이름을 지정할 수 있습니다.- 네트워크 추적에서 패킷을 캡처하는 동안 네트워크 통신 문제를 트리거하는 웹 애플리케이션 액세스와 같은 작업을 수행합니다.
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
5.5.2. OpenShift Dedicated 노드 또는 컨테이너에서 네트워크 추적 수집
잠재적인 네트워크 관련 OpenShift Dedicated 문제를 조사할 때 Red Hat 지원은 특정 OpenShift Dedicated 클러스터 노드 또는 특정 컨테이너에서 네트워크 패킷 추적을 요청할 수 있습니다. OpenShift Dedicated에서 네트워크 추적을 캡처하는 데 권장되는 방법은 디버그 Pod를 사용하는 것입니다.
사전 요구 사항
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.참고OpenShift Dedicated 배포에서 CCO(Customer Cloud Subscription) 모델을 사용하지 않는 고객은
oc debug
명령을 사용할 수 없습니다.cluster-admin
권한이 필요합니다.-
OpenShift CLI(
oc
)가 설치되어 있습니다. - 기존 Red Hat 지원 케이스 ID가 있습니다.
프로세스
클러스터 노드 목록을 가져옵니다.
$ oc get nodes
대상 노드에서 디버그 세션으로 들어갑니다. 이 단계는
<node_name>-debug
라는 디버그 Pod를 인스턴스화합니다.$ oc debug node/my-cluster-node
디버그 쉘 내에서
/host
를 root 디렉터리로 설정합니다. 디버그 Pod는 Pod 내의/host
에 호스트의 루트 파일 시스템을 마운트합니다. root 디렉토리를/host
로 변경하면 호스트의 실행 경로에 포함된 바이너리를 실행할 수 있습니다.# chroot /host
chroot
환경 콘솔에서 노드의 인터페이스 이름을 가져옵니다.# ip ad
sosreport
를 실행하는 데 필요한 바이너리 및 플러그인이 포함된toolbox
컨테이너를 시작합니다.# toolbox
참고기존
toolbox
Pod가 이미 실행 중인 경우toolbox
명령은'toolbox-' already exists를 출력합니다. Trying to start…
를 출력합니다.tcpdump
문제를 방지하려면podman rm toolbox-
에서 실행중인 toolbox 컨테이너를 제거하고 새 toolbox 컨테이너를 생성합니다.클러스터 노드에서
tcpdump
세션을 시작하고 출력을 캡처 파일로 리디렉션합니다. 이 예에서는ens5
를 인터페이스 이름으로 사용합니다.$ tcpdump -nn -s 0 -i ens5 -w /host/var/tmp/my-cluster-node_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap 1
- 1
- toolbox 컨테이너가 호스트의 root 디렉토리를
/host
에 마운트하기 때문에tcpdump
캡처 파일의 경로는chroot
환경 외부에 있습니다.
노드의 특정 컨테이너에
tcpdump
캡처가 필요한 경우 다음 단계를 따르십시오.대상 컨테이너 ID를 확인합니다. toolbox 컨테이너가 호스트의 root 디렉토리를
/host
에 마운트하기 때문에chroot host
명령은 이 단계에서crictl
명령 보다 우선합니다.# chroot /host crictl ps
컨테이너의 프로세스 ID를 확인합니다. 이 예에서 컨테이너 ID는
a7fe32346b120
입니다.# chroot /host crictl inspect --output yaml a7fe32346b120 | grep 'pid' | awk '{print $2}'
컨테이너에서
tcpdump
세션을 시작하고 출력을 캡처 파일로 리디렉션합니다. 이 예는 컨테이너의 프로세스 ID로49,628
을 사용하고 인터페이스 이름으로ens5
를 사용합니다.nsenter
명령은 대상 프로세스의 네임 스페이스를 입력하고 해당 네임 스페이스를 사용하여 명령을 실행합니다. 이 예에서 대상 프로세스는 컨테이너의 프로세스 ID이므로tcpdump
명령은 호스트에서 컨테이너 네임 스페이스를 사용하여 실행됩니다.# nsenter -n -t 49628 -- tcpdump -nn -i ens5 -w /host/var/tmp/my-cluster-node-my-container_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap 1
- 1
- toolbox 컨테이너가 호스트의 root 디렉토리를
/host
에 마운트하기 때문에tcpdump
캡처 파일의 경로는chroot
환경 외부에 있습니다.
분석을 위해 다음 방법 중 하나를 사용하여
tcpdump
캡처 파일을 Red Hat 지원팀에 제공합니다.OpenShift Dedicated 클러스터에서 직접 기존 Red Hat 지원 케이스에 파일을 업로드합니다.
toolbox 컨테이너 내에서
redhat-support-tool
을 실행하여 기존 Red Hat 지원 케이스에 직접 파일을 첨부합니다. 이 예에서는 지원 사례 ID01234567
을 사용합니다.# redhat-support-tool addattachment -c 01234567 /host/var/tmp/my-tcpdump-capture-file.pcap 1
- 1
- toolbox 컨테이너는
/host
에 호스트의 root 디렉토리를 마운트합니다.redhat-support-tool
명령에 업로드할 파일을 지정할 때/host/
를 포함하여 toolbox 컨테이너의 root 디렉토리에서 절대 경로를 참조합니다.
기존 Red Hat 지원 케이스에 파일을 업로드합니다.
oc debug node/<node_name>
명령을 실행하여sosreport
아카이브를 연결하고 출력을 파일로 리디렉션합니다. 이 명령은 이전oc debug
세션을 종료했다고 가정합니다.$ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/my-tcpdump-capture-file.pcap' > /tmp/my-tcpdump-capture-file.pcap 1
- 1
- 디버그 컨테이너는
/host
에 호스트의 root 디렉토리를 마운트합니다. 연결할 대상 파일을 지정할 때/host
를 포함하여 디버그 컨테이너의 root 디렉토리에서 절대 경로를 참조합니다.
- Red Hat 고객 포털 의 고객 지원 페이지에서 기존 지원 케이스로 이동합니다.
- Attach files를 선택하고 메시지에 따라 파일을 업로드합니다.
5.5.3. Red Hat 지원에 진단 데이터 제공
OpenShift Dedicated 문제를 조사할 때 Red Hat 지원팀에서 지원 케이스에 진단 데이터를 업로드하도록 요청할 수 있습니다. 파일은 Red Hat Customer Portal을 통해 지원 케이스에 업로드하거나 redhat-support-tool
명령을 사용하여 OpenShift Dedicated 클러스터에서 직접 업로드할 수 있습니다.
사전 요구 사항
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.참고OpenShift Dedicated 배포에서 CCO(Customer Cloud Subscription) 모델을 사용하지 않는 고객은
oc debug
명령을 사용할 수 없습니다.cluster-admin
권한이 필요합니다.-
OpenShift CLI(
oc
)가 설치되어 있습니다. - 기존 Red Hat 지원 케이스 ID가 있습니다.
프로세스
Red Hat 고객 포털을 통해 기존 Red Hat 지원 케이스에 진단 데이터를 업로드합니다.
oc debug node/<node_name> 명령을 사용하여 OpenShift Dedicated 노드에
포함된 진단 파일을 연결하고 출력을 파일로 리디렉션합니다. 다음 예에서는/host/var/tmp/my-diagnostic-data.tar.gz
를 디버그 컨테이너에서/var/tmp/my-diagnostic-data.tar.gz
로 복사합니다.$ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/my-diagnostic-data.tar.gz' > /var/tmp/my-diagnostic-data.tar.gz 1
- 1
- 디버그 컨테이너는
/host
에 호스트의 root 디렉토리를 마운트합니다. 연결할 대상 파일을 지정할 때/host
를 포함하여 디버그 컨테이너의 root 디렉토리에서 절대 경로를 참조합니다.
- Red Hat 고객 포털 의 고객 지원 페이지에서 기존 지원 케이스로 이동합니다.
- Attach files를 선택하고 메시지에 따라 파일을 업로드합니다.
5.5.4. toolbox
정보
toolbox
는 RHCOS(Red Hat Enterprise Linux CoreOS) 시스템에서 컨테이너를 시작하는 툴입니다. 이 툴은 주로 sosreport
및 redhat-support-tool
과 같은 명령을 실행하는 데 필요한 필수 바이너리 및 플러그인이 포함된 컨테이너를 시작하는 데 사용됩니다.
toolbox
컨테이너의 주요 목적은 진단 정보를 수집하여 Red Hat 지원에 제공하는 것입니다. 그러나 추가 진단 도구가 필요한 경우 RPM 패키지를 추가하거나 표준 지원 도구 이미지의 대체 이미지를 실행할 수 있습니다.
toolbox
컨테이너에 패키지 설치
기본적으로 toolbox
명령을 실행하면 registry.redhat.io/rhel8/support-tools:latest
이미지로 컨테이너를 시작합니다. 이 이미지에는 가장 자주 사용되는 지원 도구가 포함되어 있습니다. 이미지에 포함되지 않은 지원 툴이 필요한 노드별 데이터를 수집해야 하는 경우 추가 패키지를 설치할 수 있습니다.
사전 요구 사항
-
oc debug node/<node_name>
명령이 있는 노드에 액세스하고 있습니다.
프로세스
디버그 쉘 내에서
/host
를 root 디렉터리로 설정합니다. 디버그 Pod는 Pod 내의/host
에 호스트의 루트 파일 시스템을 마운트합니다. root 디렉토리를/host
로 변경하면 호스트의 실행 경로에 포함된 바이너리를 실행할 수 있습니다.# chroot /host
toolbox 컨테이너를 시작합니다.
# toolbox
wget
과 같은 추가 패키지를 설치합니다.# dnf install -y <package_name>
toolbox
를 사용하여 대체 이미지 시작
기본적으로 toolbox
명령을 실행하면 registry.redhat.io/rhel8/support-tools:latest
이미지로 컨테이너를 시작합니다. .toolboxrc
파일을 생성하고 실행할 이미지를 지정하여 대체 이미지를 시작할 수 있습니다.
사전 요구 사항
-
oc debug node/<node_name>
명령이 있는 노드에 액세스하고 있습니다.
프로세스
디버그 쉘 내에서
/host
를 root 디렉터리로 설정합니다. 디버그 Pod는 Pod 내의/host
에 호스트의 루트 파일 시스템을 마운트합니다. root 디렉토리를/host
로 변경하면 호스트의 실행 경로에 포함된 바이너리를 실행할 수 있습니다.# chroot /host
root 사용자 ID에 대한 홈 디렉터리에
.toolboxrc
파일을 생성합니다.# vi ~/.toolboxrc
REGISTRY=quay.io 1 IMAGE=fedora/fedora:33-x86_64 2 TOOLBOX_NAME=toolbox-fedora-33 3
대체 이미지를 사용하여 toolbox 컨테이너를 시작합니다.
# toolbox
참고기존
toolbox
Pod가 이미 실행 중인 경우toolbox
명령은'toolbox-' already exists를 출력합니다. Trying to start…
를 출력합니다.podman rm toolbox-
에서 실행중인 toolbox 컨테이너를 제거하고 새 toolbox 컨테이너를 생성하여sosreport
플러그인 문제를 방지합니다.