Kubernetus集群中处于待定状态的Coredns

时间:2018-10-02 13:22:12

标签: docker kubernetes kubectl kubeadm kubelet

我正在尝试配置2节点Kubernetes集群。首先,我尝试在CentOS VM上配置集群的主节点。我已经使用'kubeadm init --apiserver-advertise-address = 172.16.100.6 --pod-network-cidr = 10.244.0.0 / 16'初始化了集群,并将法兰网部署到了集群。但是当我执行“ kubectl获取节点”时,我得到以下输出----

[root@kubernetus ~]# kubectl get nodes
NAME         STATUS     ROLES    AGE   VERSION
kubernetus   NotReady   master   57m   v1.12.0

以下是'kubectl get pods --all-namespaces -o wide'的输出

[root@kubernetus ~]# kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE   IP             NODE         NOMINATED NODE
kube-system   coredns-576cbf47c7-9x59x             0/1     Pending   0          58m   <none>         <none>       <none>
kube-system   coredns-576cbf47c7-l52wc             0/1     Pending   0          58m   <none>         <none>       <none>
kube-system   etcd-kubernetus                      1/1     Running   2          57m   172.16.100.6   kubernetus   <none>
kube-system   kube-apiserver-kubernetus            1/1     Running   2          57m   172.16.100.6   kubernetus   <none>
kube-system   kube-controller-manager-kubernetus   1/1     Running   1          57m   172.16.100.6   kubernetus   <none>
kube-system   kube-proxy-hr557                     1/1     Running   1          58m   172.16.100.6   kubernetus   <none>
kube-system   kube-scheduler-kubernetus            1/1     Running   1          57m   172.16.100.6   kubernetus   <none>

coredns处于挂起状态的时间很长。我已经删除docker和kubectl,kubeadm,kubelet了几次,并尝试重新创建集群,但是每次显示相同的输出时。有人可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:2)

尝试安装Pod网络附加组件(基于this guide)。

运行此行:

kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

答案 1 :(得分:1)

  

无法更新cni配置:在/etc/cni/net.d中找不到网络。   10月2日19:21:32 kubernetus kubelet [19007]:E1002 19:21:32.886170 19007   kubelet.go:2167]容器运行时网络未就绪:   NetworkReady = false原因:NetworkPluginNotReady消息:docker:   网络插件尚未准备就绪:cni config未初始化

根据此错误,您忘记了初始化Kubernetes Pod网络附加组件。查看您的设置,我想应该是法兰绒。

这是Kubernetes官方文档中的说明:

  

要使法兰绒正常工作,您必须通过   --pod-network-cidr=10.244.0.0/16到kubeadm init。

     

通过运行将/proc/sys/net/bridge/bridge-nf-call-iptables设置为1   sysctl net.bridge.bridge-nf-call-iptables=1通过桥接的IPv4   iptables链的流量。这是某些CNI的要求   插件正常工作,有关更多信息,请参见此处。

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

请注意,法兰绒可在amd64,arm,arm64和ppc64le上使用,但直到   法兰绒v0.11.0发布,您需要使用以下清单   支持所有架构:

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

有关更多信息,您可以访问此link

答案 2 :(得分:0)

检查docker和kubernetes是否使用相同的cgroup驱动程序。 我遇到了同样的问题(CentOS 7,kubernetes v1.14.1),并设置了相同的cgroup驱动程序(systemd)对其进行了修复。

答案 3 :(得分:0)

要使Kubernetes群集可用,该群集应具有容器网络接口(CNI)。必须配置一个Pod网络才能使dns Pod正常工作。

安装任何CNI提供程序,例如:  -绒布  -印花布  -运河  -WeaveNet等,

否则,托管的Kubernetes集群将使主服务器处于未就绪状态。

答案 4 :(得分:0)

我安装了 1 个主节点 + 1 个工作节点的 kubernetes。
制作 kubeadm init ... 后,我遇到了两个问题:

  1. 在主节点上,coredns 处于待处理状态。
  2. 在工作节点上,kubectl 命令不起作用

在工作节点上,我执行了以下操作并解决了这两个问题:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config**