容器运行时网络未就绪:cni config未初始化

时间:2018-03-05 14:09:56

标签: kubernetes kubeadm cni

我在Virtualbox内运行的centos VM上安装kubernetes(kubeadm),因此我使用yum安装了kubeadm, kubeletdocker

现在,在尝试使用kubeadm init --pod-network-cidr=192.168.56.0/24 --apiserver-advertise-address=192.168.56.33/32设置群集时,我遇到以下错误:

Unable to update cni config: No networks found in /etc/cni/net.d

Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

所以我检查了cni中的/etc文件夹,即使安装了kubernetes-cni-0.6.0-0.x86_64也是如此。我尝试在KUBELET_NETWORK_ARGS中对/etc/systemd/system/kubelet.service.d/10-kubeadm.conf发表评论,但它没有成功。

PS:

  • 我在代理服务器后面安装。

  • 我有多个网络适配器:

    • NAT:10.0.2.15/24 for Internet

    • 仅限主持人:192.168.56.33/32

    • 和docker界面:172.17.0.1/16

  

Docker版本:17.12.1-ce
  kubectl版本:专业:" 1",   轻微:" 9",GitVersion:" v1.9.3"
  Centos 7

10 个答案:

答案 0 :(得分:2)

添加Pod Network插件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml

答案 1 :(得分:1)

使用“ kubeadm init”设置集群时要记住几点,并且在Kubernetes站点kubeadm cluster create上有明确记录:

  • “ kubeadm重设”(如果您已经创建了以前的集群)
  • 从主目录或根目录中删除“ .kube”文件夹
  • (也可以使用systemctl停止kubelet,以实现平滑的设置)
  • 永久禁用计算机上的交换,尤其是在重新启动linux系统时
  • 不要忘记,请按照添加站点(不是Kubernetes站点)上提供的说明安装a pod network add-on
  • 按照kubeadm在命令窗口上给出的后期初始化步骤进行操作。

如果正确执行了所有这些步骤,则您的集群将正常运行。

不要忘记执行以下命令以在创建的集群上启用调度:

kubectl taint nodes --all node-role.kubernetes.io/master-

答案 2 :(得分:0)

这是Github https://github.com/kubernetes/kubernetes/issues/34695

中提到的代理错误

他们建议使用kubeadm init --use-kubernetes-version v1.4.1,但我完全改变了我的网络(没有代理),我设法设置我的群集。

之后我们可以使用kubectl apply -f ...设置pod网络,请参阅https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network

答案 3 :(得分:0)

选中this answer

  

使用此PR(直到批准):

     

kubectl -n kube-system apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml

     

这是一个已知问题:coreos/flannel#1044

答案 4 :(得分:0)

我看不到掌舵服务器版本:

$ helm version --tiller-namespace digital-ocean-namespace
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Error: could not find a ready tiller pod

kubectl describe node kubernetes-master --namespace digital-ocean-namespace命令显示以下消息:

NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

节点尚未准备就绪:

$ kubectl get node --namespace digital-ocean-namespace
NAME                  STATUS     ROLES    AGE   VERSION
kubernetes-master     NotReady   master   82m   v1.14.1
kubernetes-worker-1   NotReady   <none>   81m   v1.14.1

我在Kubernetes和绒布网络之间存在版本兼容性问题。

我的k8s版本为1.14,如命令所示:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:02:58Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}

使用以下命令重新安装绒布网络后:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

然后我可以看到头盔服务器版本:

$ helm version --tiller-namespace digital-ocean-namespace
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

答案 5 :(得分:0)

我也遇到同样的错误,并且发现systemd存在问题。我不记得我的上一个systemd版本。但是更新它可以为我解决问题。

答案 6 :(得分:0)

我的问题是在创建集群之后,我正在更新主机名。这样,就像主人不知道是主人一样。

我仍在跑步:

sudo journalctl -u kubelet [1] [2]

但是现在我在集群初始化之前运行它

导致我无法运行Unable to register node "ip-10-126-121-125.ec2.internal" with API server: nodes "ip-10-126-121-125.ec2.internal" is forbidden: node "ip-10-126-121-125" cannot modify node "ip-10-126-121-125.ec2.internal" 的错误:

Hashtable

答案 7 :(得分:0)

这是针对 AWS VPC CNI

  1. 第一步:kubectl get mutatingwebhookconfigurations -oyaml > 变异.txt

  2. 第 2 步:Kubectl delete -f mutating.txt

  3. Step3:重启节点

  4. Step4 : 您应该能够看到节点已准备就绪

  5. 步骤 5:重新安装 mutatingwebhook 配置

答案 8 :(得分:0)

我通过安装 Pod 网络附加组件解决了这个问题, 我使用了 Flannel pod 网络,这是一个非常简单的覆盖网络,满足 kubernetes 的要求

你可以用这个命令:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

您可以在 kubernetes 文档中阅读更多相关信息

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network

答案 9 :(得分:0)

通过使用以下命令安装 Calico CNI 插件解决了这个问题:

curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml