我创建了一个带有kubeadm版本1.11.2的HA kubernetes集群,并安装了正在运行的calico CNI插件 . 我正在尝试使用docker镜像创建部署 . 它成功创建了部署并在节点上创建了一个容器,但容器无法与托管它的节点(使用IP)之外的外部世界进行通信 .
我已登录到容器并试图ping主机和其他节点失败 .
任何人都可以帮我解决这个问题吗?
很难说,但必须是Calico / CNI的问题 . 您所有节点上的所有Calico pod都准备就绪,如下所示:
$ kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE calico-node-xxxxx 2/2 Running 0 15h
您可以查看 /etc/cni/net.d 下的CNI配置 . 也许你的Calico pod中的 install-cni.sh 容器没有初始化配置?例如:
/etc/cni/net.d
install-cni.sh
{ "name": "k8s-pod-network", "cniVersion": "0.3.0", "plugins": [ { "type": "calico", "log_level": "info", "datastore_type": "kubernetes", "nodename": "<node-name>", "mtu": 1500, "ipam": { "type": "host-local", "subnet": "usePodCidr" }, "policy": { "type": "k8s" }, "kubernetes": { "kubeconfig": "/etc/cni/net.d/calico-kubeconfig" } }, { "type": "portmap", "snat": true, "capabilities": {"portMappings": true} } ] }
通常,您的容器将分配一个接口和podCidr IP,因此在您进入pod /容器后,可以使用 $ ifconfig 进行检查 .
$ ifconfig
1 回答
很难说,但必须是Calico / CNI的问题 . 您所有节点上的所有Calico pod都准备就绪,如下所示:
您可以查看
/etc/cni/net.d
下的CNI配置 . 也许你的Calico pod中的install-cni.sh
容器没有初始化配置?例如:通常,您的容器将分配一个接口和podCidr IP,因此在您进入pod /容器后,可以使用
$ ifconfig
进行检查 .