동일한 클러스터의 노드 간 요청에서 발생하는 소스 NAT

동일한 클러스터의 노드 간 요청에서 발생하는 소스 NAT

에서 설명한 것과 동일한 실험을 재현하려고 합니다.여기. 기본적으로 실험은 클러스터 내의 Pod에서 동일한 클러스터 내의 다른 Pod로 HTTP 요청을 보내는 것에 관한 것이지만 동일한 결과를 얻을 수는 없습니다. 요청을 보낸 클라이언트의 IP 주소로 HTTP 응답을 보내는 애플리케이션이 있는 다른 포드의 동일한 클러스터에 IP가 10.1.97.85/24인 포드가 있습니다. 말했듯이여기, 다음은 사실입니다:

iptables 모드에서 kube-proxy를 실행하는 경우 클러스터 내에서 ClusterIP로 전송된 패킷은 NAT로 소싱되지 않습니다.

위에 인용된 테스트를 수행했지만 IP 주소가 10.1.97.85/24인 Pod에서 요청을 수행하면 해당 요청이 IP 10.1.97.1인 Pod에서 전송되었다는 HTTP 응답을 받습니다. 알고 싶습니다. 무슨 일이 일어나고 있는지.

버전 1.17.9에서 microk8s 및 kubernetes를 사용하여 위의 실험을 수행했으며 노드가 하나만 있으므로 두 포드가 모두 동일한 노드에 있습니다.

다음 명령을 사용하여 배포를 생성했습니다.

microk8s.kubectl create deployment source-ip-app --image=k8s.gcr.io/echoserver:1.4

위 명령은 HTTP 응답에 client_address를 에코하는 애플리케이션으로 포드를 생성했습니다.

다음 명령을 사용하여 위 배포를 노출했습니다.

microk8s.kubectl expose deployment source-ip-app --name=clusterip --port=80 --target-port=8080

다음 명령을 사용하여 다른 포드를 시작했습니다.

microk8s.kubectl run busybox -it --image=busybox --restart=Never --rm

그리고 위에서 생성된 포드 내에서 다음 명령을 수행했습니다.

ip addr

위 명령을 사용하여 IP 주소: 10.1.97.85를 얻었지만 서비스에 대해 wget을 수행했을 때 IP 주소: 10.1.97.85를 다시 받았습니다.

관련 정보