[CKA] Kubernetes Service 네트워킹

Service의 가상 IP와 kube-proxy 전달 규칙이 안정적인 Pod 접근점을 만드는 원리를 정리합니다.

Pod IP는 Pod의 수명에 따라 바뀔 수 있습니다. Service는 셀렉터에 맞는 Pod 집합 앞에 안정적인 이름과 가상 IP를 제공해 호출자가 개별 Pod의 위치를 몰라도 되게 합니다.

Service 유형

apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 8080

Service IP는 개별 Pod의 주소와 별개인 가상 IP입니다. 각 노드의 서비스 프록시 구현이 Service와 EndpointSlice 변화를 감시하고, Service IP와 포트로 들어온 트래픽을 준비된 백엔드 Pod로 전달합니다. 환경에 따라 iptables, IPVS 또는 네트워크 플러그인의 서비스 프록시 구현을 사용할 수 있습니다.

kubectl get svc
kubectl get endpointslices
kubectl logs -n kube-system <kube-proxy-pod>

Pod CIDR과 Service CIDR은 겹치지 않아야 합니다. Service CIDR은 API 서버 설정에서, Pod CIDR은 클러스터와 CNI 설정에서 확인합니다.

참고: Kubernetes Service