首页 > 其他分享 >在K8S中,节点状态notReady如何排查?

在K8S中,节点状态notReady如何排查?

时间:2024-03-01 12:35:27浏览次数:22  
标签:NotReady 插件 kubectl notReady kubelet 排查 K8S 节点

在 Kubernetes (K8s) 集群中,当一个节点(Node)的状态变为NotReady时,意味着该节点可能无法运行Pod或不能正确响应Kubernetes控制平面。排查NotReady节点通常涉及以下步骤:

1. 获取基本信息
  • 使用 kubectl 命令行工具获取节点状态:

    kubectl get nodes
    
  • 检查具体出现问题的节点详情:

    kubectl describe node <node-name>
    
2. 检查事件(Event)
  • 查看节点的事件以了解与NotReady状态相关联的具体错误:

    kubectl describe node <node-name> | grep -A 10 'Conditions:'
    
3. 条件(Conditions)分析
  • 在输出中关注Conditions部分,特别是Ready状态及其原因和消息。
  • 不同原因可能包括但不限于:
    • 网络问题:如节点与Master通信中断、CNI网络插件问题等。
    • Kubelet问题:kubelet进程未运行或配置错误。
    • 容器运行时问题:Docker、containerd或其他容器引擎未能启动或报告错误。
    • 资源不足:磁盘空间满、内存或CPU不足等。
    • 节点健康状况探测失败:如kubelet定期向API Server汇报节点状况(通过心跳机制)出现问题。
4. 具体排查步骤
  • 网络连通性:确保节点能够正常与集群中的其他组件通信。

  • kubelet服务:检查kubelet服务是否运行正常,以及日志中是否有错误信息。

    systemctl status kubelet
    journalctl -u kubelet -xe
    
  • 容器运行时:确认容器运行时服务也正在运行,并无错误。

  • 磁盘空间与资源使用:检查节点的磁盘空间和系统资源使用情况。

    df -h
    free -m
    
  • 健康检查和PLEG:Kubelet有一个Pod生命周期事件Generator (PLEG),负责监测Pod的生命周期。若PLEG停滞可能导致节点NotReady,查看kubelet的pod状态。

  • CNI插件:确认网络插件工作正常,有时网络配置或插件故障也会导致节点NotReady。

  • 操作系统健康:检查操作系统层面是否有内核警告、硬件故障或安全组规则阻止必要的端口通信。

5. 恢复操作
  • 根据排查结果采取相应措施,例如重启kubelet服务、清理磁盘空间、修复网络配置、更新容器运行时等。

  • 如果需要,也可以尝试将节点从集群中删除并重新加入,以触发重新初始化过程:

    kubectl drain <node-name> --delete-local-data --force --ignore-daemonsets
    kubectl delete node <node-name>
    # 确保节点问题已解决后...
    kubectl uncordon <node-name>
    

综上所述,在实际环境中,排查过程应结合具体情况灵活调整,并可能需要深入了解Kubernetes的内部工作机制及特定版本的特性。

标签:NotReady,插件,kubectl,notReady,kubelet,排查,K8S,节点
From: https://www.cnblogs.com/huangjiabobk/p/18046704

相关文章

  • 使用kubeadm安装k8s 1.29单机版
    环境及版本信息kubernetes:1.29.0容器运行时:containerd1.6.28虚拟机系统:centos7.9虚拟机内核版本:5.4.238-1.el7.elrepo.x86_64在单虚拟机节点进行服务器设置参考:https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/设置......
  • k8s资源管理中request和limit的区别
    在Kubernetes(K8s)中,request和limit是两个重要的概念,用于控制和管理容器的资源使用。Request(请求):request定义了容器启动时需要保证的最小资源量。这表示Kubernetes在调度Pod到节点时,会确保该节点上有足够的资源来满足Pod的request。只有当节点上的可分配资源大于或等于Pod的req......
  • k8s资源管理之ResourceQuota、LimitRange和QoS
    ResourceQuotaResourceQuota是Kubernetes中的一个资源配额对象,用于限制命名空间(Namespace)中资源的使用量。ResourceQuota可以限制命名空间中的Pod数量、特定类型资源对象的数量(如Services、Deployments等),以及命名空间内所有Pod可以使用的计算资源总量(如CPU、内存等)。......
  • K8S-Pod 进阶
    Pod进阶资源限制当定义Pod时可以选择性地为每个容器设定所需要的资源数量。最常见的可设定资源是CPU和内存大小,以及其他类型的资源。当为Pod中的容器指定了request资源时,代表容器运行所需的最小资源量,调度器就使用该信息来决定将Pod调度到哪个节点上。当还为容器......
  • k8s使用
     查看节点[root@k8s-masterdata]#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEhelloworld-deployment-cddb745bf-5cvdm0/1ImagePullBackOff033mjava-68cd4b9d4b-l4zc7......
  • zookeeper的znode节点过多无法通过zkCli.sh移除节点
    背景描述:zookeeper的一个目录下的znode节点过多,导致在执行ls和rmr命令的时候,直接终止会话退出,无法递归删除下面的子节点,具体情况如下(生产环境的zookeeper是clickhouse的元数据管理集群,有一个故障是clickhouse副本同步堆积问题),接下来的操作需要知道这个子节点中的znode有序节点是......
  • kafka节点故障恢复原理
    Kafka的LEO和HWLEOLEO是Topic每一个副本的最后的偏移量offset+1HW(高水位线)HighWaterMark是所有副本中,最小的LEOFollower副本所在节点宕机由于数据同步的时候数据是先写入Leader,然后Follower副本向Leader同步只要Leader和其他的Follower副本继续往前存储数据,挂掉的节点在......
  • 在K8S中,ingress该如何使用?
    在Kubernetes(K8s)中,Ingress是一种API对象,它提供了对外部请求进入集群内部服务的一种统一入口和路由机制。Ingress控制器是一个运行在集群中的守护进程,它监听Ingress对象的变化并配置相应的负载均衡器或代理服务,以便根据定义的规则转发HTTP(S)请求到后端的Service。以下是使用......
  • 在K8S中,如果pod处于不健康状态怎么排查?
    在Kubernetes(K8s)中,Pod处于不健康状态可能由多种原因导致。为了排查这个问题,你需要采取一系列步骤来确定问题的根源。下面是一个详细的排查过程:检查Pod的状态:使用kubectlgetpods命令来查看Pod的当前状态。不健康的Pod可能处于CrashLoopBackOff、Error、Pending或Unknown等状......
  • 在K8S中,CNI有什么作用?
    在Kubernetes(简称K8s)中,ContainerNetworkInterface(CNI)起着至关重要的作用,它主要解决了容器网络配置及通信的问题,确保了Pod间的网络连通性及其与外部世界的通信。CNI的具体作用包括但不限于以下几个方面:网络配置自动化:当Kubernetes创建或销毁Pod时,CNI插件会自动为Pod中的每个......