如何在Kubernetes节点处于"未就绪"状态时进行调试

lex*_*lex 32 kubernetes

我初始化了主节点并添加了2个工作节点,但是当我运行以下命令时,只显示主节点和一个工作节点:

kubectl get nodes
Run Code Online (Sandbox Code Playgroud)

此外,这两个节点都处于"未就绪"状态.我应该采取哪些步骤来了解问题所在?

  • 我可以ping每个其他节点的所有节点.
  • Kubernetes的版本是1.8.
  • 操作系统是Cent OS 7
  • 我使用以下repo来安装Kubernetes:

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes] name=Kubernetes
    baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    EOF
    
    yum install kubelet kubeadm kubectl kubernetes-cni
    
    Run Code Online (Sandbox Code Playgroud)

Sha*_*idh 54

首先,描述节点并查看它是否报告任何内容:

$ 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
Run Code Online (Sandbox Code Playgroud)

如果此处一切正常,请通过SSH进入节点并观察kubelet日志以查看是否报告任何内容.像证书错误,身份验证错误等.

如果kubelet作为systemd服务运行,则可以使用

$ journalctl -u kubelet

  • 我的“NotReady”是由于 kubelet 退出并且没有在某些节点上重新启动。重新启动,回到“Ready”,仍然不知道发生了什么。 (2认同)

Dee*_*pak 12

调试步骤:-

如果您在 kubernetes 中遇到任何问题,第一步是检查 kubernetes 自身应用程序是否运行良好。

检查命令:- kubectl get pods -n kube-system

如果您看到任何 Pod 崩溃,请检查其日志

如果出现NotReady状态错误,请验证网络 pod 日志。

如果无法解决上述问题,请按照以下步骤操作:-

  1. kubectl get nodes # 检查哪个节点未处于就绪状态

  2. kubectl describe node nodename #nodename 未处于就绪状态

  3. ssh 到那个节点

  4. execute systemctl status kubelet # 确保 kubelet 正在运行

  5. systemctl status docker # 确保docker服务正在运行

  6. journalctl -u kubelet # 深入检查日志

您很可能会在这里了解错误,修复它后使用以下命令重置 kubelet:-

  1. systemctl daemon-reload
  2. systemctl restart kubelet

如果您仍然没有找到根本原因,请检查以下内容:-

  1. 确保您的节点有足够的空间和内存。/var特别检查目录空间。检查命令:-df -kh,free -m

  2. 使用 top 命令验证 CPU 利用率。并确保任何进程都没有占用意外的内存。