Kubernetes V1.6.2无法更新cni config:在/etc/cni/net.d中找不到网络

时间:2017-05-01 02:28:23

标签: kubernetes

基于此(https://kubernetes.io/docs/getting-started-guides/kubeadm/)步骤,我在Centos 7框中安装了kubernets,然后使用kubeadm init命令。

但节点尚未处于就绪状态。当我查看/ var / log / messages时。低于消息。

<%= @stories.each do |story| %>
  <!-- RENDER story HERE -->
<% end %>

我的kubelet使用这些参数运行。

Apr 30 22:19:38 master kubelet: W0430 22:19:38.226441    2372 cni.go:157] Unable to update cni config: No networks found in /etc/cni/net.d
Apr 30 22:19:38 master kubelet: E0430 22:19:38.226587    2372 kubelet.go:2067] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

在我的服务器中我没有看到/etc/cni/net.d目录。在/ opt / cin / bin目录中我看到这些文件。

 /usr/bin/kubelet --kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt --cgroup-driver=systemd

如何清除此错误消息?

由于 SR

4 个答案:

答案 0 :(得分:3)

看起来你已选择法兰绒作为CNI网络。 请检查您是否在kubeadm init时指定了--pod-network-cidr 10.244.0.0/16。

同时检查您是否为法兰绒创建了ConfigMaps,如@ https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml

答案 1 :(得分:1)

如果您在AWS中...我使用的是云形成Yaml,建议您将Kubernetes版本AMI与Region + ID匹配:

Kubernetes版本1.13.8 地区:美国东部(弗吉尼亚北部)(us-east-1) Amazon EKS优化的AMI:ami-0d3998d69ebe9b214

然后应用您的映射:

kubectl apply -f aws-auth-cm.yaml

然后看魔术:

kubectl get nodes --watch

https://docs.aws.amazon.com/eks/latest/userguide/launch-workers.html

答案 2 :(得分:0)

我认为这个问题是由kuberadm首先初始化coredns而不是init法兰绒引起的,所以它抛出“网络插件尚未准备好:cni config未初始化”。
解决方案:
1.通过kubectl -n kube-system apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
安装法兰绒 2.重置coredns pod
kubectl delete coredns-xx-xx
3.然后运行kubectl get pods看看是否有效。

如果看到此错误,则“ cni0”已具有不同于10.244.1.1/24的IP地址。 请按照以下步骤操作:

ifconfig  cni0 down
brctl delbr cni0
ip link delete flannel.1

如果看到此错误“后退重新启动失败的容器”,则可以通过以下方式获取日志

root@master:/home/moonx/yaml# kubectl logs coredns-86c58d9df4-x6m9w -n=kube-system
.:53
2019-01-22T08:19:38.255Z [INFO] CoreDNS-1.2.6
2019-01-22T08:19:38.255Z [INFO] linux/amd64, go1.11.2, 756749c
CoreDNS-1.2.6
linux/amd64, go1.11.2, 756749c
 [INFO] plugin/reload: Running configuration MD5 = f65c4821c8a9b7b5eb30fa4fbc167769
 [FATAL] plugin/loop: Forwarding loop detected in "." zone. Exiting. See https://coredns.io/plugins/loop#troubleshooting. Probe query: "HINFO 1599094102175870692.6819166615156126341.".

然后您会在失败的节点上看到文件“ /etc/resolv.conf”,如果名称服务器是localhost,则会发生环回。更改为:

#nameserver 127.0.1.1
nameserver 8.8.8.8

github issue

答案 3 :(得分:0)

上述解决方案都没有对我有用。 我发现我的服务器没有默认路由!

# route -n
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp9s0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

所以我通过以下命令添加了默认网关:

# route add default gw 19.168.1.1
# route -n 
0.0.0.0         192.168.1.1     0.0.0.0         UG    600    0        0 wlp9s0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp9s0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

现在 iptables 工作正常