【K8S系列】Kubernetes pod节点NotReady问题及解决方案详解【已解决】

news2024/10/18 10:25:23

在这里插入图片描述

Kubernetes 集群中的每个节点都是运行容器化应用的基础。当节点状态显示为 NotReady
时,意味着该节点无法正常工作,这可能会导致 Pod
无法调度,从而影响整个应用的可用性。本文将深入分析节点不健康的各种原因、详细的排查步骤以及有效的解决方案。

一、节点不健康的原因

节点不健康的原因可以归结为多种因素,以下是一些主要原因:

  1. 资源不足

    • CPU 和内存压力:当节点上的 CPU 或内存使用率接近 100% 时,Kubernetes 可能会将节点标记为不健康。
    • 磁盘空间不足:如果节点的磁盘空间不足,可能会导致 Pod 无法正常运行。
  2. Kubelet 服务故障

    • Kubelet 是负责管理节点上容器的主要组件。如果 Kubelet 进程未运行或崩溃,节点会被标记为 NotReady
  3. 网络问题

    • 节点与 Kubernetes 控制平面或其他节点之间的网络连接故障,导致无法与 API 服务器通信。
  4. 容器运行时问题

    • Docker 或其他容器运行时未正常工作,会导致 Pod 无法启动。
  5. 节点维护状态

    • 节点可能被人为标记为维护状态(cordon),这会阻止新的 Pod 调度到该节点。
  6. 系统级别问题

    • 操作系统的错误、内核崩溃或其他严重问题可能导致节点不健康。

二、排查步骤

步骤 1: 查看节点状态

首先,使用以下命令检查集群中所有节点的状态:

kubectl get nodes

输出示例:

NAME           STATUS     ROLES    AGE     VERSION
node1         NotReady   <none>   5d      v1.21.0
node2         Ready      <none>   5d      v1.21.0

这表明 node1 的状态为 NotReady

步骤 2: 描述节点

使用 kubectl describe 命令获取节点的详细信息:

kubectl describe node <node-name>

输出示例:

Name:               node1
Labels:             <none>
Annotations:        kubernetes.io/hostname=node1
...
Conditions:
  Type              Status
  Ready             False
  OutOfDisk         False
  MemoryPressure    False
  DiskPressure      False
  PIDPressure       False
  NetworkUnavailable False
...
Events:
  Type     Reason       Age                From                 Message
  ----     ------       ----               ----                 -------
  Warning  KubeletNotReady  5m                kubelet, node1     Kubelet is not posting active status

在输出中,关注以下几个方面:

  • Conditions:查看 Ready 状态是否为 False,以及其他条件(如 OutOfDiskMemoryPressure 等)。
  • Events:检查是否有异常事件,特别是 Kubelet 的状态信息。

步骤 3: 检查资源使用情况

确认节点的资源使用情况,确保没有达到限制:

kubectl top nodes

输出示例:

NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
node1      2000m        95%    1500Mi          90%
node2      1000m        30%    800Mi           50%

如果某个节点的 CPU 或内存使用率接近 100%,说明资源不足。

步骤 4: 检查 Kubelet 状态

SSH 登录到节点,检查 Kubelet 服务的状态:

sudo systemctl status kubelet

输出示例:

● kubelet.service - Kubernetes Kubelet
   Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2023-10-10 10:00:00 UTC; 5min ago

如果 Kubelet 未运行或状态为 failed,查看日志以查找故障原因:

journalctl -u kubelet

查找关键错误信息,帮助定位问题。

步骤 5: 检查 Docker 状态

确认 Docker 或其他容器运行时是否正常工作:

sudo systemctl status docker

输出示例:

● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2023-10-10 09:50:00 UTC; 10min ago

如果 Docker 服务未运行,查看 Docker 日志,检查是否有错误信息:

journalctl -u docker

步骤 6: 检查网络连接

确保节点能够访问 Kubernetes 控制平面和其他节点。可以使用 pingcurl 命令检查网络连通性。例如,检查 API 服务器是否可达:

curl -k https://<k8s-api-server>:6443/version

如果网络无法连接,可能需要检查防火墙或网络配置。

三、解决方案

解决方案 1: 释放资源

如果节点资源不足,考虑以下措施:

  • 减少 Pod 数量:使用 kubectl delete pod <pod-name> 删除不必要的 Pod。
  • 调整资源请求和限制:优化 Pod 的资源配置,确保不超过节点的可用资源。
  • 扩展节点:通过云服务提供商添加新的节点或将现有节点的资源进行扩展。

解决方案 2: 重启 Kubelet

如果 Kubelet 服务出现问题,可以尝试重启:

sudo systemctl restart kubelet

重启后,再次检查节点状态:

kubectl get nodes

解决方案 3: 处理网络问题

如果发现网络连接不通:

  • 检查防火墙设置:确保 Kubernetes 所需的端口(如 6443、10250 等)是开放的。
  • 确认网络插件:如果使用了网络插件(如 Calico、Flannel 等),确保其正常工作。

解决方案 4: 检查和重启 Docker

如果 Docker 服务出现问题,尝试重启 Docker:

sudo systemctl restart docker

然后再次检查节点状态。

解决方案 5: 检查节点维护状态

如果节点被标记为 cordon,可以使用以下命令解除该状态:

kubectl uncordon <node-name>

确保节点能够接收新的 Pod。

解决方案 6: 处理系统级别问题

如果排查后仍无法解决,可能需要检查系统日志,查找操作系统级别的问题。这可能包括:

  • 检查系统负载和进程状态。
  • 重新启动节点,解决临时问题。

四、总结

节点不健康的问题是 Kubernetes 运维中的常见挑战。通过系统化的排查步骤和针对性的解决方案,用户可以高效地定位和解决问题,确保集群的稳定运行。了解节点的健康状态以及如何进行有效的故障排查,将极大地提升运维效率和服务质量。掌握这些知识和技能,将使你在 Kubernetes 的管理和维护中更加游刃有余。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2217703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在CentOS系统下实现准实时SFTP上传指定目录下前2分钟的文件

在CentOS系统下实现准实时SFTP上传指定目录下前2分钟的文件 引言准备工作编写Shell脚本执行脚本定时执行脚本注意事项结论引言 在企业级的文件同步和备份场景中,经常需要将本地目录中最新生成的文件(如前2分钟内生成的文件)快速上传到远程服务器的指定目录。为了实现这一目…

【银河麒麟高级服务器操作系统-实例】集群存储文件系统异常,本地复现+详细分析+解决建议

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 服务器环境以及配置 【机型】物理机 TG225 B1 处…

XML\XXE漏洞基本原理

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理XXE漏洞的相应信息 XML与XXE漏洞 这个东西有许多叫法&#xff0c;XML漏洞与XXE漏洞差不多都是一个东西。 这个漏洞是出现在XMl上的&#xff0c;然后可以叫他XXE注入漏洞。 XML简介 XML是一种数据的传输…

5G NR:UE初始接入信令流程浅介

UE初始接入信令流程 流程说明 用户设备&#xff08;UE&#xff09;向gNB-DU发送RRCSetupRequest消息。gNB-DU 包含 RRC 消息&#xff0c;如果 UE 被接纳&#xff0c;则在 INITIAL UL RRC MESSAGE TRANSFER 消息中包括为 UE 分配的低层配置&#xff0c;并将其传输到 gNB-CU。IN…

测试说明

1.修改数据集 将 for_redistribution_files_only 文件夹下的 valid_data.csv 换成测试数据&#xff0c;文件名不要改变仍为valid_data.csv 2.加载镜像 在matlab-runtime-R2020a.tar所在路径下打开cmd&#xff0c;运行以下命令 docker load -i matlab-runtime-R2020a.tar 稍等…

jmeter中对于有中文内容的csv文件怎么保存

jmeter的功能很强大&#xff0c;但是细节处没把握好就得不到预期的结果。今天来讲讲有中文内容的csv文件的参数化使用中需要注意的事项。 对于有中文内容&#xff0c;涉及到编码格式&#xff0c;为了让jmeter能正确地读取csv文件中的中文&#xff0c;需要把文件转码为UTF-8BOM…

数据仓库基础概念

数据仓库 概念 数据仓库&#xff08;Data Warehouse, DW&#xff09;是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合。它是为满足企业决策分析需求而设计的。 面向主题&#xff1a;数据仓库围绕特定的主题组织数据&#xff0c;例如“销售”或“人力资源”&am…

【网络】详解TCP协议的延时应答、捎带应答、异常处理

【网络】详解TCP协议的延时应答和捎带应答 一. 延时应答模型 二. 捎带应答模型再谈四次挥手 三. 异常处理1.一方出现进程崩溃2.一方出现关机&#xff08;正常流程关机&#xff09;3.一方出现断电4.网线断开 一. 延时应答 也是基于滑动窗口&#xff0c;想要尽可能的去提高效率。…

mysql高级sql语句 二

目录 一. 求交集 1.1 内连接 1.2 左连接 1.3 右连接 1.4 子查询 1.5 多表查询 1.6 并集分组 二. 求差集 2.1 求左表差集 2.2 求右表差集 2.3 求两个表的差集 三. 视图表view 3.1 视图表的使用 3.2 视图表里的数据能不能修改&#xff1f; 四. case语句 五. 无值…

豪威集团技术突破

巴塞罗那AutoSens展会上发布的OX12A10采用豪威集团全新的a-CSP™超小尺寸封装技术&#xff0c;是TheiaCel™产品系列中分辨率最高的传感器&#xff0c;成为ADAS和AD的理想之选 巴塞罗纳&#xff0c;西班牙 – 2024年10月3日 – 豪威集团&#xff0c;全球排名前列的先进数字成像…

动力学的开环和闭环控制

工业机器人四大元件&#xff1a;控制器&#xff0c;驱动器&#xff0c;电机&#xff0c;减速器 流程&#xff1a;控制器的作用是规划一个机器人的路径&#xff0c;位置&#xff0c;速度。而驱动器是用来控制电流的&#xff0c;进行控制电机。本质上是驱动器来进行完成电流的调…

ssm基于SSM框架的成绩管理系统的设计与实现+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 1 绪论 1 1.1 选题背景 1 1.2 选题意义 1 1.3 研究内容 2 2 系统开发技术 3 2.1 MySQL数据库 3 2.…

【系统集成中级】OSI 七层模型

【系统集成中级】OSI 七层模型 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; OSI 七层模型&#xff1a; #mermaid-svg-FqFAWaiBSmivKOt2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mer…

常见的SD-WAN组网方案解析

随着SD-WAN技术的日益成熟&#xff0c;越来越多的企业开始采用这种网络架构来解决跨区域的数据传输难题。SD-WAN组网方案不仅提升了网络性能&#xff0c;还有效降低了网络成本&#xff0c;成为现代企业构建高效网络的重要选择。那么&#xff0c;如何搭建SD-WAN组网&#xff1f;…

mysql数据同步ES方案---DTS

在上一篇文章中&#xff0c;我通过一个简单的例子实现了如何通过 Canal 实现 MySQL 数据到 Elasticsearch 的同步&#xff0c;以满足增量捕获和实时同步的需求。然而实际情况中&#xff0c;比如在我之前工作的公司&#xff0c;为了减少运维工作量和代码操作的复杂性&#xff0c…

OpenHarmony 入门——ArkUI 自定义组件内同步的装饰器@State小结(二)

文章大纲 引言一、组件内状态装饰器State1、初始化2、使用规则3、变量的传递/访问规则说明4、支持的观察变化的场景5、State 变量的值初始化和更新机制6、State支持联合类型实例 引言 前一篇文章OpenHarmony 入门——ArkUI 自定义组件之间的状态装饰器小结&#xff08;一&…

Linux——网络层协议

前言 网络层&#xff1a;在复杂的网络环境中确定一个合适的路径 目录 前言 一IP协议 1预备知识 2基本概念 3格式 4网段划分 4.1理解IP 4.2IP组成 4.3划分方式 4.4为什么要网段划分 5特殊的IP地址 6IP地址的限制 7私有IP和公网IP 8NAT技术 9理解公网 10路由 …

软件数据安全评估

简介 SQLmap是一款「自动化」SQL注入 工具&#xff0c;kali自带。 可以自己手动安装 地址 源码 源码汉化版kali自带 开启 python 自己直接编译运行 kali 使用方法 1 Options&#xff08;选项&#xff09; -h,--help 显示帮助消息 -hh 显示详细帮助 -version -v…

【JavaScript】网页交互的灵魂舞者

我的主页&#xff1a;2的n次方_ 1. JavaScript 的三种引入方式 引⼊⽅式 语法描述 ⽰例 ⾏内样式 直接嵌⼊到 html 元素内部 <input type"button" value"点我⼀下" οnclick"alert(haha)"> 内部样式 定义<script>标签&a…

云计算第四阶段: cloud二周目 07-08

cloud 07 一、k8s服务管理 创建服务 # 资源清单文件 [rootmaster ~]# kubectl create service clusterip websvc --tcp80:80 --dry-runclient -o yaml [rootmaster ~]# vim websvc.yaml --- kind: Service apiVersion: v1 metadata:name: websvc spec:type: ClusterIPselector…