容器运行时网络未就绪: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

所以我检查了一下,/etc没有cni文件夹,甚至没有安装kubernetes-cni-0.6.0-0.x86_64。我尝试在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf中评论KUBELET_NETWORK_ARGS,但没有用。

附注:

  • 我正在代理后面安装。

  • 我有多个网络适配器:

    • NAT : 10.0.2.15/24 互联网

    • 仅主机 : 192.168.56.33/32

    • 和码头工人接口:172.17.0.1/16

Docker 版本: 17.12.1-ce
kubectl 版本 : 主要:"1", 次要:"9", GitVersion:"v1.9.3">
Centos 7

添加 pod 网络插件 - 编织网

kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml

在使用 "kubeadm init" 设置集群时,有几点需要记住,并且在 Kubernetes 站点 kubeadm 集群创建中清楚地记录了它:

  • "kubeadm 重置",如果您已经创建了以前的集群
  • 从主目录或根目录中删除".kube"文件夹
  • (此外,使用 systemctl 停止 kubelet 将允许顺利设置)
  • 计算机上永久禁用交换,尤其是在重新启动 Linux 系统时
  • 不要忘记,根据附加站点(不是 Kubernetes 站点)上提供的说明安装 Pod 网络附加组件
  • 按照 kubeadm 在命令窗口中给出的初始化后步骤进行操作。

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

并且不要忘记执行以下命令以在创建的集群上启用计划:

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

关于如何从代理后面安装,您可能会发现这很有用:

使用代理安装

停止并禁用 apparmor 并重新启动该节点上的容器服务将解决您的问题

root@node:~# systemctl stop apparmor
root@node:~# systemctl disable apparmor 
root@node:~# systemctl restart containerd.service

检查这个答案。

使用此 PR(直到获得批准):

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

这是一个已知问题:Coreos/法兰绒#1044

我看不到 helm 服务器版本:

$ 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 服务器版本:

$ 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"}

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

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

我通过安装 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

这是Githubhttps://github.com/kubernetes/kubernetes/issues/34695 中提到的代理错误

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

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

我面临同样的错误,它看到它看到systemd有问题。我不记得我上一个systemd版本了。但是更新它为我解决了问题。

我遇到了同样的错误,我在从属节点加入集群后看到了问题。从属节点在加入后显示状态为"未就绪"。

我检查了kubectl describe node ksalve并观察到了提到的问题。 深入挖掘后,我发现systemd主节点和从节点不同。 在主站中,我已经配置了systemd但是从属服务器只有默认cfgroup

从主节点中删除systemd后,从属状态立即更改为Ready

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

我还在跑步:

sudo hostname $(curl 169.254.169.254/latest/meta-data/hostname)[1][2]

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

导致我从运行sudo journalctl -u kubelet到这个的错误:

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"

就我而言,这是因为我忘记打开8285端口。 法兰绒使用8285端口,您需要从防火墙打开它。

例如:
如果你使用法兰绒插件,而你的操作系统是 centOS:

firewall-cmd --permanent --add-port=8285/tcp 
firewall-cmd --reload

就我而言,我重新启动了 docker,状态更改为就绪

sudo systemctl stop docker
sudo systemctl start docker

这适用于 AWS VPC CNI

  1. Step1 : kubectl get mutatingwebhookconfiguration -oyaml> 变异.txt

  2. 第 2 步:Kubectl 删除 -f 突变.txt

  3. 步骤3:重启节点

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

  5. 步骤5:重新安装变异网络钩子配置

相关内容

  • 没有找到相关文章

最新更新