我在同一个网络上有 4 台服务器;
- 10.0.0.10:Kubernetes 主控
- 10.0.0.11:Kubernetes 节点 1
- 10.0.0.12:Kubernetes 节点 2
- 10.0.0.20:普通 ubuntu 服务器(未安装 kubernetes)
我使用 Calico 作为网络提供商,按照https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/中的说明设置了一个 kubernetes 集群。
我可以通过以下命令成功运行一个 pod(我以带有 ssh 访问的 Ubuntu docker 映像为例)
kubectl run ubuntupod --image=rastasheep/ubuntu-sshd:16.04
kubectl get
并且可以使用and看到这个 pod 的 IP 地址kubectl describe
(在这种情况下,pod 的 IP 是 192.168.65.74。)
然后我确认以下连接已启用
- kubernetes master/nodes (10.0.0.10 ~ 10.0.0.12) -> pod (192.168.65.74)
- pod (192.168.65.74) -> kubernetes master/nodes (10.0.0.10 ~ 10.0.0.12)
- 吊舱 (192.168.65.74) -> 普通 ubuntu 服务器 (10.0.0.20)
但是,我没有建立以下连接,我想请教人们怎么做;
- 普通 ubuntu 服务器 (10.0.0.20) -> pod (192.168.65.74)
我尝试向ubuntu服务器(10.0.0.20)添加路由表,希望kubernetes主节点可以作为路由器,但没有成功;
sudo route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.0.0.10
我怀疑Kubernetes master中的iptables有什么关系,但我不知道该怎么做。
有人可以帮我解决这个问题。
顺便说一句,我知道我想做的事情可能与 kubernetes 或 docker 的基本原理不同。也许我应该使用 kubernetes 的 Service 机制,但是我需要这种在 pod 和实际服务器之间访问的透明性。