패스잇
인프라 & 클라우드 · 심화

Kubernetes 클러스터 내에서 Pod 간 통신 문제를 진단하고 해결해야 할 때, 특히 Network Policy와 CNI(Container Network Interface) 플러그인의 복합적인 상호작용으로 인해 발생하는 문제에 초점을 맞춰 설명해 주십시오. 특정 Pod가 예상치 못하게 다른 Pod와 통신하지 못하거나, 외부 네트워크 접근에 실패하는 상황을 가정하고, 문제 진단 방법과 해결 절차를 구체적으로 제시해 주십시오.

힌트 · `kubectl describe pod`, `kubectl logs`, `netshoot` 같은 디버깅 도구 활용, CNI 플러그인의 설정 파일 및 로그 분석, 그리고 Network Policy의 Ingress/Egress 규칙 평가 순서를 이해하고 적용하는 과정을 중심으로 설명할 수 있습니다.

NetworkPolicyCNIkubectl describetcpdumpkube-proxy

모범답안

Kubernetes 클러스터에서 Pod 간 통신 문제, 특히 Network Policy와 CNI 플러그인 상호작용으로 인한 문제를 진단하고 해결하는 것은 복잡할 수 있습니다.

먼저, kubectl describe pod <pod-name> 명령어로 해당 Pod의 상태와 이벤트를 확인하여 네트워크 관련 오류 메시지가 있는지 살펴봅니다. kubectl logs <pod-name>으로 Pod 내부 애플리케이션 로그를 분석하여 통신 실패 지점을 파악합니다.

문제가 특정 Pod 간 통신에 국한된다면, Network Policy 설정을 검토해야 합니다. kubectl get networkpolicy -n <namespace>로 관련 Network Policy를 확인하고, kubectl describe networkpolicy <policy-name> -n <namespace>로 상세 설정을 분석하여 Ingress 및 Egress 규칙이 의도대로 적용되고 있는지 평가합니다. 특정 Pod가 다른 Pod로 접근하지 못한다면, 해당 Pod의 Egress 규칙이나 대상 Pod의 Ingress 규칙에 문제가 있을 수 있습니다.

만약 외부 네트워크 접근 실패라면, Pod의 Egress 규칙과 함께 CNI 플러그인의 동작을 의심해 볼 수 있습니다. CNI 플러그인(예: Calico, Cilium)의 설정 파일과 로그를 분석하여 네트워크 인터페이스 설정, 라우팅 규칙, IP 할당 등에 문제가 없는지 확인합니다. tcpdump와 같은 도구를 사용하여 Pod 내부 또는 노드에서 실제 네트워크 트래픽을 캡처하고 분석하면, 패킷이 어디서 드롭되는지 파악하는 데 도움이 됩니다. netshoot과 같은 디버깅 Pod를 활용하여 클러스터 외부로 ping이나 curl을 시도하며 네트워크 경로를 추적하는 것도 유용합니다.

kube-proxy의 동작도 확인해야 합니다. Service IP로의 접근이 실패하는 경우, kube-proxy가 올바른 Endpoints로 트래픽을 전달하고 있는지 점검합니다.

이러한 단계들을 체계적으로 거치면 Network Policy와 CNI 플러그인의 복합적인 문제로 인한 Pod 통신 문제를 효과적으로 진단하고 해결할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Docker / Kubernetes 면접 질문

← Docker / Kubernetes 면접 질문 전체 보기