【发布时间】:2018-05-21 21:34:38
【问题描述】:
我正在尝试让 Kubernetes 集群与一些在 NAT 后面工作但没有公共 IP 地址的节点一起工作。 (为什么我需要它是另一回事)
有3个节点:
- Kubernetes 集群主控(具有公共 IP 地址)
- Node1(带有公共 IP 地址)
- Node2(在我的笔记本电脑上作为虚拟机在 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
使用法兰绒网络:
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
为 Node1 创建和调度 Nginx 部署 + 服务(type=NodePort)(使用公共 IP):
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 创建和调度的 Nginx 部署 + 服务 (type=NodePort)(没有公共 IP):
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 22m
nginx-behind-nat NodePort 10.105.242.178 <none> 80:32350/TCP 22m
但是,无法通过http://MASTER_NODE_PUBLIC_IP:32350 或http://NODE1_PUBLIC_IP:32350 访问此服务。
只能通过笔记本电脑上的http://MY_VM_IP:32350 访问。
此外:我也无法通过 kubectl exec 进入 nginx-behind-nat 吊舱。
有什么方法可以实现吗?
【问题讨论】:
标签: docker kubernetes flannel ubuntu-18.04