设置NAT后面的kubernetes工作节点
我已经使用kubeadm设置了一个kubernetes集群 环境设置NAT后面的kubernetes工作节点,kubernetes,Kubernetes,我已经使用kubeadm设置了一个kubernetes集群 环境 主节点安装在具有公共IP的PC中 NAT地址后面的工作节点(接口具有本地内部IP,但需要使用公共IP访问) 状态 工作节点能够加入集群并运行 kubectl get nodes 节点的状态为就绪 Kubernetes可以在该节点上部署和运行吊舱 问题 我遇到的问题是,我无法访问部署在该节点上的吊舱。例如,如果我跑步 kubectl logs <pod-name> 因为它试图使用本地IP 192.168.0.17,这
kubectl get nodes
节点的状态为就绪
Kubernetes可以在该节点上部署和运行吊舱
问题
我遇到的问题是,我无法访问部署在该节点上的吊舱。例如,如果我跑步
kubectl logs <pod-name>
因为它试图使用本地IP 192.168.0.17,这是外部无法访问的
我已经看到该节点具有以下注释:
flannel.alpha.coreos.com/public-ip: 192.168.0.17
因此,我尝试通过以下方式修改注释,设置外部IP:
flannel.alpha.coreos.com/public-ip: <my_externeal_ip>
flannel.alpha.coreos.com/public-ip:
我看到该节点已正确注释,但它仍然使用192.168.0.17
我还需要在worker节点或集群配置中设置其他内容吗?侧边栏中有大量相关问题,我大约90%确定这是一个常见问题,但不必费心对重复的问题进行分类
是否需要在工作节点或集群配置中设置其他内容
不,这种情况不是工作节点配置错误,也不是集群配置错误。这只是kubernetes处理以吊舱为中心的通信方式的副作用。这意味着,如果您选择继续进行该设置,您将无法使用kubectl exec
或kubectl日志
(我认为port forward
),因为这些命令不会通过API服务器发送流量,相反,它直接联系节点上的kubelet
端口,该节点承载与您交互的Pod。这主要是为了减轻通过API服务器传输的流量,但如果同时发生足够多的exec/log/port foward/etc命令,也可能是一个扩展问题,因为TCP端口不是无限的
我认为从理论上讲,让您的工作站加入覆盖网络是可能的,因为从定义上讲,它与外部网络无关,但我没有太多的经验尝试让覆盖网络与NAT配合,所以这是“理论上”的部分
我个人已经让Wireguard跨NAT工作,这意味着您可以将VPN接入节点的网络,但这是一个转折点,可能会带来更多的麻烦
flannel.alpha.coreos.com/public-ip: <my_externeal_ip>