IT InfraTree 가이드

Service 트래픽 가이드

Pod는 Running인데 Service traffic만 실패하는 경우

Pod 상태는 정상으로 보이지만 Service, Endpoint, NetworkPolicy, Ingress 경로가 끊긴 상황에서 먼저 볼 신호, CLI 확인 순서, 흔한 오진, 안전한 복구 방향을 정리한 InfraTree 가이드입니다.

Pod는 Running인데 Service로 트래픽이 안 간다면, 먼저 Endpoints를 본다

Pod가 Running이라는 건 “컨테이너가 떠 있다”는 뜻일 뿐, Service가 그 Pod로 트래픽을 보낸다는 보장이 아니다. Service와 Pod를 잇는 고리는 Endpoints(또는 EndpointSlice)이고, 트래픽이 안 가는 사례의 대부분은 이 목록이 비어 있다.

kubectl get endpoints <svc> -n <ns>    # ENDPOINTS 가 <none> 이면 여기서 이미 끝난 문제다

Endpoints가 비었다면 — 원인은 둘 중 하나

  • selector 불일치 — Service의 selector 라벨이 Pod 라벨과 정확히 같아야 한다. 오타 한 글자, 값의 대소문자, 추가 라벨 하나로도 안 잡힌다. kubectl get pod --selector=<key=val>로 실제 잡히는지 확인한다.
  • readiness 미통과 — Pod가 Running이어도 readinessProbe를 통과하지 못하면 Endpoints에서 제외된다. describe pod의 Conditions에서 Ready: False인지 본다. 이게 “Running인데 트래픽 안 감”의 가장 흔한 정체다.

Endpoints는 차 있는데도 안 된다면 — 포트와 바인딩

  • targetPort ≠ 컨테이너 포트 — Service의 port는 클러스터 쪽 포트, targetPort는 컨테이너가 실제로 듣는 포트다. targetPort가 앱의 listen 포트와 다르면 연결이 검게 끊긴다.
  • 127.0.0.1 바인딩 — 앱이 0.0.0.0이 아니라 루프백에만 바인딩하면 Pod 밖에서 못 붙는다. Pod 안에서는 되는데 밖에서 안 되면 이걸 의심한다.
kubectl exec -it <pod> -n <ns> -- sh -c 'wget -qO- localhost:<port> || echo FAIL'

그래도 막히면 — 정책 계층

Endpoints·포트·바인딩이 다 맞는데 막히면 NetworkPolicy가 ingress를 차단하는지 본다. 정책이 하나라도 Pod를 선택하면 “기본 허용”이 “기본 차단”으로 바뀐다. 그 위 계층(Ingress 컨트롤러, 클라우드 LB 헬스체크)도 같은 readiness를 본다는 점을 기억한다.

확인 순서 한 줄 요약

get endpoints → (비었으면) selector·readiness → (차 있으면) targetPort·바인딩 → NetworkPolicy. 이 순서면 “Pod는 멀쩡한데 왜 안 되지”를 대부분 첫 두 단계에서 끝낸다.

빠른 진단 체크리스트

  • kubectl get endpoints가 비었는지부터 본다
  • 비었으면 Service selector가 Pod 라벨과 정확히 같은지 확인한다
  • Running이어도 readiness 미통과면 Endpoints에서 빠진다
  • describe pod의 Conditions에서 Ready: False 여부를 본다
  • Endpoints가 찼으면 targetPort가 컨테이너 포트와 같은지 본다
  • 앱이 0.0.0.0이 아니라 127.0.0.1에 바인딩했는지 확인한다
  • Pod 안 curl은 되는데 밖이 안 되면 바인딩 주소를 의심한다
  • 다 맞으면 NetworkPolicy가 ingress를 막는지 본다

연결 허브

같이 보면 좋은 허브

관련 topic, symptom, vendor, certification 허브로 바로 이동할 수 있습니다.

cluster-networking-and-service-discovery

cluster-networking-and-service-discovery landing page grouping K8s troubleshooting searches around Fresh Record, Stale Resolver, cluster-networking-and-service-discove...

Rollout Stuck

Rollout troubleshooting landing page focused on unhealthy promotions, pending rollout state, blocked approval flow, and release steps that look green until the final h...

Timeouts and Latency

Slow responses, upstream timeout, and network path latency signals. Timeouts and Latency landing page grouping CI/CD troubleshooting searches around Monorepo Triggerin...

Kubernetes

Kubernetes landing page grouping vendor-shaped CI/CD troubleshooting drills around The Sync Plan Was Complete and a Policy Created a New Dependency After the Doors Clo...

CKA

CKA landing page built around CrashLoopBackOff, Service and Endpoint mismatch, image pull failures, and workload recovery order.

연결 가이드

같은 흐름의 가이드를 이어서 보기

같은 검색 의도에 가까운 다른 가이드를 묶어 보여줍니다.

대표 문제

이 가이드와 맞는 문제

가이드에서 읽은 점검 순서를 실제 문제로 연습할 수 있습니다.

다음 단계

가이드 다음으로 이어볼 흐름

허브, 대표 문제, 학습 허브 순서로 검색 흐름을 실제 연습으로 이어보세요.

FAQ

자주 묻는 질문

가이드 적용 전 확인하면 좋은 질문입니다.

Pod는 Running인데 Service traffic만 실패하는 경우에서 가장 먼저 확인할 것은 무엇인가요?

마지막 오류 메시지보다 같은 실패가 반복되는 경계와 최근 변경 내역을 먼저 확인해야 합니다.

기술 용어와 명령어는 번역해야 하나요?

아니요. Kubernetes, Pod, systemd, npm ci, package.json 같은 기술 용어와 명령어는 원문 그대로 두고 설명 문장만 한국어로 정리합니다.

바로 복구 조치를 해도 되나요?

영향 범위와 원인 후보가 좁혀지기 전에는 전체 재시작이나 정책 완화처럼 되돌리기 어려운 조치를 피하는 것이 안전합니다.