【K8S系列】Kubernetes Pod节点Pending状态及解决方案详解【已解决】

news2024/10/23 0:25:05

在这里插入图片描述

在 Kubernetes 中,Pod 的状态为 Pending 表示 Pod
已被创建,但尚未被调度到节点上,或者已调度到节点上但容器尚未开始运行。这一状态常常是因为某些条件未满足,导致 Pod 无法正常启动。以下是对
Pending 状态的详细分析及解决方案。

在这里插入图片描述

一、Pending 状态的详细描述

描述

  • Pending 状态表示 Pod 已被创建,但由于某种原因尚未被调度到节点上,或者尽管已调度到节点上,但容器未能启动。这个状态通常表明 Pod 处于等待中,等待某些条件得到满足。

状态转移

  • Pod 从 Pending 状态可能会转移到其他状态,如 Running(容器成功启动)或 Failed(容器启动失败)。

二、Pending 状态的可能原因

1. 调度失败

  • 原因:Kubernetes 调度器未能找到合适的节点来运行 Pod。这可能是由于节点不满足 Pod 的要求。
  • 检查:查看 Pod 的事件日志,使用以下命令:
    kubectl describe pod <pod-name>
    

2. 资源不足

  • 原因:节点的 CPU、内存或存储资源不足以满足 Pod 的需求。每个 Pod 在其定义中可以请求特定的资源。
  • 检查:查看节点的资源使用情况:
    kubectl get nodes
    

3. 存储卷未绑定

  • 原因:Pod 需要的持久卷(Persistent Volume)未能正确绑定,导致 Pod 无法启动。
  • 检查:使用以下命令查看持久卷和 PVC 的状态:
    kubectl get pv
    kubectl get pvc
    

4. 节点不可用

  • 原因:所有节点都处于 NotReady 状态,Kubernetes 无法将 Pod 调度到任何节点。
  • 检查:查看节点状态:
    kubectl get nodes
    

5. 亲和性和反亲和性规则

  • 原因:Pod 的调度受到特定亲和性或反亲和性规则的限制,导致无法找到合适的节点。
  • 检查:查看 Pod 的 YAML 配置,确认是否有过于严格的调度规则。

6. Taints 和 Tolerations

  • 原因:节点可能被标记了 Taints,导致没有 Pod 能够调度到该节点。虽然 Pod 可能具有容忍(Tolerations),但如果没有匹配的容忍,Pod 将无法调度。
  • 检查:使用以下命令查看节点的 Taints:
    kubectl describe node <node-name>
    

7. 网络问题

  • 原因:网络问题可能导致调度器无法与节点通信,造成 Pod 无法被调度。
  • 检查:确保网络连接正常,可以使用以下命令进行基本的网络测试。

三、解决方案

1. 检查 Pod 状态

首先,检查 Pod 的状态和事件:

kubectl get pods
kubectl describe pod <pod-name>

2. 查看节点资源使用情况

查看所有节点的状态和资源使用情况:

kubectl get nodes -o wide
示例输出:
NAME         STATUS    ROLES    AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION    CONTAINER-RUNTIME
node-1      Ready     <none>   10d   v1.24.0   192.168.1.1     <none>        Ubuntu 20.04.3 LTS   5.4.0-89-generic   docker://20.10.7
node-2      NotReady  <none>   10d   v1.24.0   192.168.1.2     <none>        Ubuntu 20.04.3 LTS   5.4.0-89-generic   docker://20.10.7

3. 检查资源请求

查看 Pod 的 YAML 配置,确认资源请求是否合理:

resources:
  requests:
    memory: "512Mi"  # 检查内存请求
    cpu: "1000m"     # 检查 CPU 请求

4. 调整 Pod 的资源请求

如果资源不足,可以调整 Pod 的资源请求:

  • 编辑 Pod 的 YAML 文件,减少请求的 CPU 和内存:
resources:
  requests:
    memory: "256Mi"  # 减少内存请求
    cpu: "500m"      # 减少 CPU 请求

5. 检查存储卷的绑定状态

确保所需的持久卷已正确绑定:

kubectl get pvc
示例输出:
NAME        STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
my-pvc      Bound    pvc-123 1Gi        RWO            standard      5m

确保 PVC 的状态为 Bound。

6. 检查节点的 Taints 和 Pod 的 Tolerations

确保 Pod 能够容忍节点的 Taints:

  • 查看节点的 Taints:
kubectl describe node <node-name>
示例输出:
Taints:             node.kubernetes.io/unreachable:NoExecute
  • 确保 Pod 定义中包含相应的 Tolerations:
tolerations:
- key: "node.kubernetes.io/unreachable"
  operator: "Exists"
  effect: "NoExecute"
  tolerationSeconds: 60

7. 亲和性和反亲和性规则

检查 Pod 的亲和性和反亲和性规则,确保它们没有过于严格:

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: "kubernetes.io/hostname"
          operator: In
          values:
          - node-1

8. 增加节点或资源

如果集群资源不足,可以考虑:

  • 增加节点:向 Kubernetes 集群添加更多节点,以提高可用资源。
  • 扩展现有节点:增加现有节点的 CPU 和内存。

9. 监控和调试

使用监控工具(如 Prometheus 和 Grafana)监控集群状态,及时识别和解决问题。可以在集群中安装这些工具,收集和可视化集群的性能数据。

四、总结

Pod 在 Pending 状态通常是由于调度失败、资源不足、存储卷未绑定、节点不可用或调度规则限制等原因。通过系统地检查 Pod 和节点的状态、资源使用情况、存储卷状态、调度规则和网络连接,可以有效识别和解决问题。合理配置 Pod 的资源请求、存储卷和调度规则,有助于提高 Kubernetes 集群的稳定性和可用性。

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

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

相关文章

自由学习记录(12)

综合实践 2D的Shape&#xff0c;Tilemap都要导包的&#xff0c;编辑器也要导包&#xff0c;。。和2d沾边的可能3d都要主动导包 应该综合的去运用&#xff0c;不见得Tilemap就很万能&#xff0c;如果要做什么顶方块的有交互反应的物体&#xff0c; 那直接拖Sprite会更方便一些…

APIJSON 为零代码提供了新的思路

APIJSON 核心概念 APIJSON 是一种用于构建 RESTful API 的 JSON 格式&#xff0c;它提供了一种标准化的方式来定义和处理 API 请求和响应。APIJSON 的设计目标是简化前端和后端之间的数据交互&#xff0c;减少开发工作量&#xff0c;提高开发效率。 在线解析 自动生成文档&am…

【SpringBoot】16 文件上传(Thymeleaf + MySQL)

Gitee仓库 https://gitee.com/Lin_DH/system 介绍 文件上传是指将本地的图片、视频、音频等文件上传到服务器&#xff0c;供其他用户浏览下载的过程&#xff0c;文件上传在日常项目中用的非常广泛。 实现代码 第一步&#xff1a;在配置文件新增如下配置 application.yml s…

docker-compose-lnmp-wordpress

使用 docker-compose 在 CentOS 7 上编写并部署 LNMP (Linux, Nginx, MySQL, PHP) 环境的 YAML 文章目录 部署步骤&#xff1a;1. 安装 Docker 和 Docker Compose1.1安装 Docker&#xff1a;1.2安装 Docker Compose&#xff1a; 2.创建目录结构3.编写docker-compose.yml4.ngin…

Java项目-基于springboot框架的财务管理系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

科研进展 | RSE:全波形高光谱激光雷达数据Rclonte系列处理算法一

《环境遥感》&#xff08;Remote Sensing of Environment&#xff0c;IF11.1&#xff09;近日发表一项来自中国科学院空天信息创新研究院王力、牛铮研究员团队的全波形高光谱激光雷达&#xff08;hyperspectral LiDAR&#xff0c;HSL&#xff09;数据处理算法研究&#xff0c;论…

计算机组成原理一句话

文章目录 计算机系统概述存储系统 计算机系统概述 指令和数据以同等地位存储在存储器中&#xff0c;形式上没有差别&#xff0c;但计算机应能区分他们。通过指令周期的不同阶段。 完整的计算机系统包括&#xff0c;1&#xff09;软件系统&#xff1a;程序、文档和数据&#xff…

DC系列靶机-DC6

一&#xff0c;环境的搭建 VM17 官网下载 kali 2023.4版 https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2023.4/ 靶场文件 https://download.vulnhub.com/dc/DC-6.zip 二&#xff0c;攻略 首先进行主机发现&#xff1b; 接下来进行端口扫描&#xff1b; 开放了2…

初识git · 远程操作

目录 前言&#xff1a; 理解分布式版本控制系统 远程仓库 仓库操作 克隆仓库 推送和抓取 特殊文件 取别名 标签管理 前言&#xff1a; 在基本操作&#xff0c;分支管理这几个部分&#xff0c;我们都会在本地仓库操作了&#xff0c;但是目前还没有办法将自己的代码远程…

uniapp 实现input聚焦时选中内容(已封装)兼容微信小程序

老规矩先来看看效果噻&#xff01; 从上面的录屏中我们可以看出&#xff0c;要实现input自由选中内容的功能是可以实现的&#xff0c;原理其实很简单。 直接运行即可 <template><view><!-- <input class"psd"type"digit" :value"in…

第二代 GPT-SoVITS V2:解锁语音克隆与合成的无限可能

在 AI 技术蓬勃发展的今天&#xff0c;第二代 GPT-SoVITS V2 如一颗璀璨的明星闪耀登场&#xff0c;为语音处理领域带来了前所未有的变革。它是一款集先进技术与强大功能于一身的声音克隆与语音合成工具&#xff0c;由 RVC 变声器创始人 “花儿不哭” 与 AI 音色转换技术 Sovit…

当小程序学会‘读心术’:表单处理的神秘法则

哈喽&#xff0c;我是阿佑&#xff0c;今天将给大家给咱们的小程序赋能——“读心术”&#xff01; 文章目录 微信小程序的表单处理表单元素&#xff1a;小程序的“语言”表单事件&#xff1a;小程序的“听觉”表单提交&#xff1a;小程序的“表达”总结 微信小程序的表单处理 …

Oracle数据库系统表空间过大,清理SYSTEM、SYSAUX表空间

一.前言 在oracle数据库中&#xff0c;system为系统表空间&#xff0c;存放着一些我们经常用到的系统表和视图&#xff0c;sysaux为辅助表空间&#xff0c;辅助着系统表空间。这两个表空间不宜添加数据文件&#xff0c;会使系统表空间过于臃肿&#xff0c;从而影响数据库的使用…

【Jenkins】2024 最新版本的 Jenkins 权限修改为 root 用户启动,解决 permission-denied 报错问题

最新版本的 Jenkins 修改 /etc/sysconfig/jenkins 中的 JENKINS_USERroot不会再生效&#xff0c;需要按照以下配置进行操作&#xff1a; vim /usr/lib/systemd/system/jenkins.service然后重启就可以了 systemctl daemon-reload # 重新加载 systemd 的配置文件 systemctl res…

Shell编程-案例一(数据库备份服务监测)

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们前面学习了那么多命令&#xff0c;以及涉及到部分逻辑判断的问题。从简单来说&#xff0c;他就是Shell编程&#xff0c;…

基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)

【全套资料.zip】三极管B放大系数放大倍数测量电路电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.用三个数码管显示B的大小&#xff0c;分别显示个位、十位和百位。 2.显示范围…

springboot041师生健康信息管理系统(论文+源码)_kaic

摘 要 随着移动应用技术的发展&#xff0c;越来越多的用户借助于移动手机、电脑完成生活中的事务&#xff0c;许多的传统行业也更加重视与互联网的结合。 本论文主要介绍基于java的师生健康信息管理系统&#xff0c;运用软件工程原理和开发方法&#xff0c;采用springboot框架…

C++ 进阶:类相关特性的深入探讨

⭐在对C 中类的6个默认成员函数有了初步了解之后&#xff0c;现在我们进行对类相关特性的深入探讨&#xff01; &#x1f525;&#x1f525;&#x1f525;【C】类的默认成员函数&#xff1a;深入剖析与应用&#xff08;上&#xff09; 【C】类的默认成员函数&#xff1a;深入剖…

【凸优化】Legendre变换、共轭函数、对偶

推荐文章 [凸优化-凸共轭]Legendre and Legendre-Fenchel transforms - 知乎 (zhihu.com) 一、Legendre变换 1、几何解释1 Legendre 变换通过选择斜率 作为新的自变量&#xff0c;将函数描述为它的斜率与相应的 x 的函数值之间的关系。几何上&#xff0c;它可以理解为用函…

Vert.x,认证与授权 - HTTP基本认证

几乎所有的线上系统都离不开认证和授权&#xff0c;Vert.x auth相关组件提供了丰富(Session&#xff0c;JTW, OAuth&#xff0c;…)&#xff0c;便捷的认证和授权支持。 当前&#xff0c;使用最多是Web应用&#xff0c;所以在后续讨论中&#xff0c;都是关于Vert.x auth在Web应…