我在Virtualbox中设置了两个节点Kubernetes。师父起来很好。但是工作节点处于“NotReady”状态。
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 1d v1.10.2
node NotReady <none> 1h v1.10.2
工作节点上的“journalctl -u kubelet”命令报告与网络相关的错误:
kuberuntime_manager.go:757] checking backoff for container "install-cni" in pod "kube-flannel-ds-zjlvn_kube-system(873fa36d-4b83-11e8-9997-080027afb5ab)"
remote_runtime.go:278] ContainerStatus "459643e54de7f82df8ada0f60e8f3d51d42c5ce348747a66e20ad5720155e63f" from runtime service failed: rpc error: code = U
kuberuntime_container.go:636] failed to remove pod init container "install-cni": failed to get container status "459643e54de7f82df8ada0f60e8f3d51d42c5ce34
kuberuntime_manager.go:757] checking backoff for container "install-cni" in pod "kube-flannel-ds-zjlvn_kube-system(873fa36d-4b83-11e8-9997-080027afb5ab)"
kuberuntime_manager.go:767] Back-off 10s restarting failed container=install-cni pod=kube-flannel-ds-zjlvn_kube-system(873fa36d-4b83-11e8-9997-080027afb5a
pod_workers.go:186] Error syncing pod 873fa36d-4b83-11e8-9997-080027afb5ab ("kube-flannel-ds-zjlvn_kube-system(873fa36d-4b83-11e8-9997-080027afb5ab)"), sk
cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
kubelet.go:2125] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni con
cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
kubelet.go:2125] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni con
cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
kubelet.go:2125] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni con
我正在运行Kubernetes版本1.10和docker版本1.13.1。你能帮我找出这个问题的根本原因和解决方法吗?
答案 0 :(得分:0)
嗯,当你想要组建一个kubernetes集群时,它需要你部署一个CNI插件,它可以在你的pod之间提供网络连接。您在此处显示的错误是由于CNI插件未安装或未正确配置。
在您的群集上部署CNI插件之前,kube-dns pod将处于暂挂状态。一旦kube-dns进入running
状态,(在部署cni提供程序之后),您就可以运行应用程序工作负载。
如果您尚未部署CNI插件,可以选择几种插件。
Calico:通过标准BGP提供Pod网络。 (按照文档获取更多信息)
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml
Weave:创建一个覆盖网络。
export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
Flannel:创建一个覆盖网络,将每个主机视为子网。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
需要了解iptables的容器流量,你可以这样做
sysctl net.bridge.bridge-nf-call-iptables=1
这需要法兰绒和编织才能发挥作用。
请参阅适用于您的群集的每个CNI插件的文档。