有3个节点:
1. Kubernetes集群主节点(带有公共IP地址) 2. Node1(带有公共IP地址) 3. Node2(作为VM在我的笔记本电脑上在NAT后面运行,没有公共IP地址)
所有3个节点都使用Ubuntu 18.04和Kubernetes v1.10.2(3),Docker 17.12运行。
Kubernetes集群是这样创建的:
``` kubeadm init --pod-network-cidr=10.244.0.0/16 ```
使用Flannel网络:
``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ```
Node1和Node2加入了集群:
``` NAME STATUS ROLES AGE VERSION master-node Ready master 3h v1.10.2 node1 Ready <none> 2h v1.10.3 node2 Ready <none> 2h v1.10.2 ```
创建并计划了Nginx部署+服务(类型=NodePort)用于Node1(带公共IP):
https://pastebin.com/6CrugunB
``` kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h my-nginx NodePort 10.110.202.32 <none> 80:31742/TCP 16m ```
此部署可以通过http://MASTER_NODE_PUBLIC_IP:31742和http://NODE1_PUBLIC_IP:31742访问,如预期。
为Node2(没有公共IP)创建了另一个Nginx部署+服务(类型=NodePort):
https://pastebin.com/AFK42UNW
kubectl get svc
名称 类型 集群IP 外部IP 端口(S) 年龄
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3小时
my-nginx NodePort 10.110.202.32 <none> 80:31742/TCP 22分钟
nginx-behind-nat NodePort 10.105.242.178 <none> 80:32350/TCP 22分钟
然而,无法通过http://MASTER_NODE_PUBLIC_IP:32350或http://NODE1_PUBLIC_IP:32350访问此服务。
仅可以从我的笔记本电脑通过http://MY_VM_IP:32350进行访问。
此外:我也无法通过kubectl exec
进入nginx-behind-nat
pods。
有没有办法实现这一点?