首页 文章

kubernetes pods无法与外界沟通

提问于
浏览
1

我创建了一个带有kubeadm版本1.11.2的HA kubernetes集群,并安装了正在运行的calico CNI插件 . 我正在尝试使用docker镜像创建部署 . 它成功创建了部署并在节点上创建了一个容器,但容器无法与托管它的节点(使用IP)之外的外部世界进行通信 .

我已登录到容器并试图ping主机和其他节点失败 .

任何人都可以帮我解决这个问题吗?

1 回答

  • 1

    很难说,但必须是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 容器没有初始化配置?例如:

    {
      "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 进行检查 .

相关问题