【问题标题】:kubectl get nodes shows NotReadykubectl get nodes 显示 NotReady
【发布时间】:2019-04-02 02:23:09
【问题描述】:

我在云虚拟机中安装了两个节点kubernetes 1.12.1,都在互联网代理后面。每个 VM 都有关联的浮动 IP 以通过 SSH 连接,kube-01 是主服务器,kube-02 是节点。执行导出:

no_proxy=127.0.0.1,localhost,10.157.255.185,192.168.0.153,kube-02,192.168.0.25,kube-01

在运行kubeadm init 之前,但我得到kubectl get nodes 的以下状态:

NAME      STATUS     ROLES    AGE   VERSION
kube-01   NotReady   master   89m   v1.12.1
kube-02   NotReady   <none>   29s   v1.12.2

我是否缺少任何配置?我是否需要在各自 VM 的 /etc/hosts 中添加 192.168.0.153192.168.0.25

【问题讨论】:

  • 你能粘贴“kubect get pods -n kube-system”的输出吗
  • NAME READY STATUS RESTARTS AGE coredns-576cbf47c7-krtb6 0/1 Pending 0 54m coredns-576cbf47c7-nvgg8 0/1 Pending 0 54m etcd-kube-01 1/1 Running 0 53m kube-apiserver- kube-01 1/1 运行 0 53m kube-controller-manager-kube-01 1/1 运行 0 53m kube-proxy-5rxfq 1/1 运行 0 54m kube-scheduler-kube-01 1/1 运行 0 53m跨度>
  • 您安装了任何 CNI 吗?像法兰绒还是编织?
  • 在你的 master 上安装一个 cni 并检查。应用法兰绒使用“kubectl apply -f raw.githubusercontent.com/coreos/flannel/master/Documentation/…”这应该工作

标签: kubernetes kubectl kubeadm


【解决方案1】:

您的集群上似乎尚未安装 pod 网络。例如,您可以使用以下命令安装 weave

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

几秒钟后,Weave Net pod 应该会在每个节点上运行,并且您创建的任何其他 pod 都将自动附加到 Weave 网络。

您可以安装您选择的 pod 网络。这是list

检查后

$ kubectl describe nodes

检查一切都很好,如下所示

Conditions:
  Type              Status
  ----              ------
  OutOfDisk         False
  MemoryPressure    False
  DiskPressure      False
  Ready             True
Capacity:
 cpu:       2
 memory:    2052588Ki
 pods:      110
Allocatable:
 cpu:       2
 memory:    1950188Ki
 pods:      110

下一个 ssh 到尚未准备好的 pod 并观察 kubelet 日志。最可能的错误可能是证书和身份验证。

您还可以在 systemd 上使用 journalctl 来检查 kubelet 错误。

$ journalctl -u kubelet

【讨论】:

  • 我的工作节点仍然显示 Not ready root@kube-01:~# kubectl get nodes NAME STATUS ROLES AGE VERSION kube-01 Ready master 63m v1.12.1 kube-02 NotReady 51m v1. 12.2
  • kubect get pods -n kube-system 和 "kubectl describe node " 的结果是什么
  • 得到关注 与服务器 localhost:8080 的连接被拒绝 - 您是否指定了正确的主机或端口?
  • 您需要在您的主节点上运行 kubect get pods -n kube-system 和“kubectl describe node ”。 Kubectl 不能在工作节点上运行。粘贴这些命令的结果
  • 将节点加入集群时出现以下错误
【解决方案2】:

试试这个

您的 coredns 处于等待状态检查您使用的网络插件并检查是否添加了正确的插件

查看 kubernates 故障排除指南

https://kubernetes.io/docs/setup/independent/troubleshooting-kubeadm/#coredns-or-kube-dns-is-stuck-in-the-pending-state

https://kubernetes.io/docs/concepts/cluster-administration/addons/

并用这些安装以下内容

然后检查

kubectl get pods -n kube-system

【讨论】:

    【解决方案3】:

    万一其他人也一样,在我的情况下,我使用了错误的 AMI 映像来创建节点组。

    【讨论】:

      【解决方案4】:

      运行

      journalctl -u kubelet

      然后检查节点日志,如果出现以下错误,请使用 swapoff -a 禁用锯齿

      "运行 kubelet 失败" err="运行 Kubelet 失败:不支持使用 swap 运行,请禁用 swap!或设置 --fa 主进程退出,code=exited,status=1/FAILURE

      【讨论】:

        猜你喜欢
        • 2017-08-07
        • 2018-11-29
        • 1970-01-01
        • 2019-08-31
        • 2021-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-06
        相关资源
        最近更新 更多