men*_*nov 5 docker kubernetes flannel ubuntu-18.04
我正在尝试让 Kubernetes 集群与一些在没有公共 IP 地址的情况下在 NAT 后面工作的节点一起工作。(为什么我需要它是一个不同的故事)
有3个节点:
所有 3 个节点都运行带有 Kubernetes v1.10.2(3)、Docker 17.12 的 Ubuntu 18.04
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
Nginx 部署 + 服务(类型=NodePort)为 Node1 创建和调度(使用公共 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访问。
此外:我也无法nginx-behind-nat
通过kubectl exec
任何方式进入豆荚。
有什么方法可以实现吗?
正如 Kubernetes文档中提到的:
Kubernetes 对任何网络实现都提出以下基本要求(禁止任何有意的网络分段策略):
- 所有容器无需 NAT 即可与所有其他容器通信
- 所有节点都可以与所有容器通信(反之亦然),无需 NAT
- 容器将自己视为的 IP 与其他容器将其视为的 IP 相同
这在实践中意味着你不能只用两台运行 Docker 的计算机就期望 Kubernetes 能够工作。您必须确保满足基本要求。
默认情况下,从 api-server 到节点、端口或服务的连接只是纯 HTTP,没有身份验证和加密。
它们可以通过 HTTPS 工作,但默认情况下,apiserver 不会验证 HTTPS 端点证书,因此,它不会提供任何完整性保证,并且可能会受到中间人攻击。
有关保护集群内部连接的详细信息,请查看此文档
归档时间: |
|
查看次数: |
2722 次 |
最近记录: |