【问题标题】:kubernetes worker node in "NotReady" status处于“未就绪”状态的 kubernetes 工作节点
【发布时间】:2019-06-02 13:25:24
【问题描述】:

我正在尝试使用 Kubernetes 1.13.1 设置我的第一个集群。主节点初始化好了,但我的两个工作节点都是NotReadykubectl describe node 表明 Kubelet 停止在两个工作节点上发布节点状态。在其中一个工作节点上,我得到类似的日志输出

> kubelet[3680]: E0107 20:37:21.196128    3680 kubelet.go:2266] node
> "xyz" not found.

这里是完整的细节:

我正在使用 Centos 7 和 Kubernetes 1.13.1。

初始化如下:

[root@master ~]# kubeadm init --apiserver-advertise-address=10.142.0.4 --pod-network-cidr=10.142.0.0/24

成功初始化集群:

You can now join any number of machines by running the following on each node
as root:
`kubeadm join 10.142.0.4:6443 --token y0epoc.zan7yp35sow5rorw --discovery-token-ca-cert-hash sha256:f02d43311c2696e1a73e157bda583247b9faac4ffb368f737ee9345412c9dea4`

部署了法兰绒 CNI:

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

join 命令运行良好。

[kubelet-start] Activating the kubelet service [tlsbootstrap] Waiting for the kubelet to perform the TLS Bootstrap... [patchnode] Uploading the CRI Socket information "/var/run/dockershim.sock" to the Node API object "node01" as an annotation

此节点已加入集群:

* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the master to see this node join the cluster.

kubectl 获取节点结果:

[root@master ~]# kubectl get nodes

NAME     STATUS     ROLES    AGE   VERSION

master   Ready      master   9h    v1.13.1

node01   NotReady   <none>   9h    v1.13.1

node02   NotReady   <none>   9h    v1.13.1

在两个节点上:

[root@node01 ~]# service kubelet status 重定向到 /bin/systemctl 状态 kubelet.service ● kubelet.service - kubelet:Kubernetes 节点代理

 Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)

  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf

   Active: active (running) since Tue 2019-01-08 04:49:20 UTC; 32s ago

     Docs: https://kubernetes.io/docs/

 Main PID: 4224 (kubelet)

   Memory: 31.3M

   CGroup: /system.slice/kubelet.service
           └─4224 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfi

`Jan 08 04:54:10 node01 kubelet[4224]: E0108 04:54:10.957115    4224 kubelet.go:2266] node "node01" not found`

感谢您就如何解决此问题提出建议。

【问题讨论】:

  • 建立 kubernetes 集群的方法有很多种。 kubeadm、kubespray 和 kops 等等。几乎不可能说出你做错了什么,因为你没有说出你在做什么。我建议您仔细检查您是否执行了您所遵循的安装过程中所需的所有步骤,并且没有遗漏任何内容。一个疯狂的猜测是你没有正确配置你的 pod 网络,但实际上可能是任何东西。
  • 我重新格式化了这个问题,以便更清楚地了解您运行了哪个特定的 kubectl 命令并突出显示输出。如果您可以进一步编辑此内容以添加有关您用于设置集群的过程的详细信息,将会很有帮助。
  • @AndrewSavinykh 感谢您的帮助,编辑了更多信息
  • @Falcon,嘿,您是否仔细检查过您没有错过任何一步?听起来您没有正确配置您的 pod 网络。这是 kubeadm 要检查的 guide
  • 能否请您提供来自 node1 journalctl -u kubelet 的完整 kubelet 日志

标签: kubernetes kubeadm flannel


【解决方案1】:

前面的答案听起来是正确的。您可以通过运行来验证 kubectl describe node node01 在 master 上,或者 kubectl 配置正确的地方。

【讨论】:

    【解决方案2】:

    这个错误的原因似乎是由于子网不正确。在Flannel documentation 中写道,您应该将 /16 而不是 /24 用于 pod 网络。

    注意:如果使用 kubeadm,则传递 --pod-network-cidr=10.244.0.0/16 到 kubeadm init 以确保 podCIDR 已设置。

    我尝试使用 /24 运行 kubeadm,尽管我的节点处于就绪状态,但法兰绒 pod 无法正常运行,这导致了一些问题。

    您可以通过以下方式检查您的 flannel pod 是否正常运行: kubectl get pods -n kube-system 如果状态不是running,那么这是不正确的行为。在这种情况下,您可以通过运行kubectl describe pod PODNAME -n kube-system 查看详细信息。如果解决了问题,请尝试更改子网并更新我们。

    【讨论】:

      【解决方案3】:

      我遇到了几乎相同的问题,最后我发现原因是防火墙没有关闭。您可以尝试以下命令:

      sudo ufw disable
      

      systemctl disable firewalld
      

      setenforce 0
      

      【讨论】:

        猜你喜欢
        • 2018-06-03
        • 2018-04-16
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        • 2020-12-01
        • 2019-05-29
        • 2018-11-18
        • 1970-01-01
        相关资源
        最近更新 更多