2017-05-10 7 views
0

컨테이너 포트에 포트 : eth0를 : 10.10.10.100 의 eth1 (내부) : 20.20.20.100 (외부)의 iptables의 IP에 요청을 전달하기 위해 DNAT 규칙을 추가 : 나는 2 인터페이스를 가지고는 Kubernetes 클러스터를

클러스터에서 플란넬 네트워킹을 사용하는 포드는 거의 없습니다. POD1 : 172.16.54.4 (nginx 서비스)

위의 k8s 클러스터에 연결된 다른 호스트에서 20.20.20.100:80에 액세스하여 nginx POD에 연결할 수 있습니다.

나는 IP 포워딩을 활성화했고 또한 DNAT 규칙을 추가 다음과 같이이 후

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.54.4:80 

을 내가 20.20.20.100에 컬을 할 때, 나는 어떻게 할

Failed to connect to 10.10.65.161 port 80: Connection refused 

를 얻을 수 이게 효과가 있니?

+0

k8s의 네트워킹 및 서비스에 대한 자세한 내용은 https://kubernetes.io/docs/concepts/cluster-administration/networking/ 및 https://kubernetes.io/docs/concepts/services-networking/service/를 참조하십시오. . –

답변

0

당신은

iptables -t nat -A PREROUTING -p tcp -d 20.20.20.100 --dport 80 -j DNAT --to-destination 172.16.54.4:80

시도 할 수 있습니다하지만 당신은 자신으로의 iptables을 관리하는 것이 내가하지 않는 것이 좋습니다, 그것은

당신은에서 hostPort을 사용할 수 있습니다 ... 규칙을 유지하기 위해 고통스러운 k8s. cni 플러그인은 hostPort을 지원하지 않으므로 kubenet을 네트워크 플러그인으로 사용할 수 있습니다.

0

nodeport 유형을 사용하지 않으시겠습니까? 나는 그것이 hostIP에 의해 서비스에 접근하는 더 좋은 방법이라고 생각한다. iptables -nvL -t nat을 시도하고 세부 정보를 보여주십시오.