前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubernetes(k8s)-Pod状态(Status)

Kubernetes(k8s)-Pod状态(Status)

作者头像
运维小路
发布于 2025-02-25 00:31:03
发布于 2025-02-25 00:31:03
29300
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

作者介绍:简历上没有一个精通的运维工程师。

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们前面介绍了很多类型的工作负载,最后都会落实到具体的Pod上的。上一小节我们也介绍了Pod的创建流程,实际运维中Pod状态也会根据实际情况进行变化,所以了解Pod的各种状态,对于分析处理问题非常有帮助。

在 Kubernetes 中,Pod 的生命周期涵盖了多个状态,其中包括一些长期状态和短暂状态。下面是这些状态的综合描述:

长期状态

  1. Pending(挂起):Pod 已经被 Kubernetes 系统接受,但一个或多个容器尚未被创建或调度,可能出现问题的原因是没有合适的节点,或者标签亲和性等不匹配,通过descirbe命令可以看到具体原因。
  2. Running(运行中):Pod 已经被调度到一个节点上,所有容器都被创建,至少有一个容器正在运行、启动或重启。如果是1/1, 2/2这种前后一致就说明是正常状态,如果前后数字不一致,就说明有部分容器异常。
  3. Completed(成功完成):Pod 中的所有容器都正常运行完成,并且退出码为 0。哪些Job任务或者InitContainers正常执行退出的容器就是这个状态。
  4. Unknown(未知):Pod 的状态无法被 Kubernetes 确定,通常是由于与 Pod 所在节点的通信故障。
  5. Evicted(被驱逐):Pod 被系统驱逐,通常是因为资源紧张,如内存或磁盘空间不足。属于服务器主动状态驱逐的,如果是维护管理员主动驱逐则Pod会被删除,不会保留状态。

短暂状态

  1. ContainerCreating:Pod 已经被调度到一个节点但容器尚未完全创建。Kubernetes 可能在拉取镜像、设置网络和准备储存卷。如果是长期存在,则说明该Pod异常,需要检查。Kubernetes 可能在拉取镜像、设置网络和准备储存卷。如果是长期存在,则说明该Pod异常,需要检查。如果是长期存在,则说明该Pod异常,需要检查。
  2. Init:Waiting:Pod 有初始化容器,这些容器在主容器启动前运行,如果正在等待它们完成,则会显示此状态。
  3. Terminating:Pod 正在被删除,处于清理和资源回收过程中。
  4. CrashLoopBackOff:Pod 中的一个或多个容器尝试启动后失败,Kubernetes 正在尝试重新启动容器。
  5. ImagePullBackOff/ErrImagePull:Kubernetes 无法拉取指定的容器镜像

当然其实这些所谓的长期和短暂状态其实不太准确,因为如果出现问题,这些状态就会长期保持,比如我们前面讲解InitContainers,就故意设置错误让这个初始化无法完成,他的状态就会长期维持在Init:xxx状态。

我们通过前面的状态,只能看到一个Pod状态,如果想要知道引发这个状态的详细信息,则可以通过下面的命令来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get pod <pod-name>
kubectl describe pod <pod-name>

kubectl describe pod 的输出中,Events 部分会显示 Pod 的生命周期中的各种短暂状态和相关事件,提供有关 Pod 创建、启动或删除过程中发生的详细信息,有助于诊断和解决问题。

但是这些状态并不绝对,短期状态也可能持续存在,比如下载镜像失败,就会持续存在。

特别注意Terminating状态如果长期不消失则只能强制删除,但是一般不要轻易这样操作。

要强制删除一个 Pod,你可以使用 kubectl 命令并传递 --force--grace-period=0 参数。这将立即删除 Pod 而不等待优雅终止的过程。请记住,强制删除可能会导致 Pod 中运行的服务不正常终止,可能会引起数据不一致或其他问题。只有当 Pod 无法正常删除时,才建议使用强制删除。

下面是强制删除 Pod 的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl delete pod <pod-name> --force --grace-period=0

这里的 <pod-name> 是你想要删除的 Pod 的名字。

如果节点失联,节点的Pod出现Unknown状态,一般不需要手工删除,只要等待节点恢复以后,这些Pod就会被自动删除。

另一个注意事项是,如果 Pod 被设置了 finalizers(终结器),那么即使使用了 --force 参数,它仍可能不会被立即删除。这是因为 finalizers 是用于在删除资源之前执行特定的清理工作。在这种情况下,你可能需要编辑 Pod 资源以移除 finalizers:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl edit pod <pod-name>

然后删除或清空 metadata.finalizers 字段,保存并退出编辑器,Pod 将被删除。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
百度搜索 “Java面试题” 前200页(面试必看)
本文中的题目来源于网上的一篇文章《百度搜索 “Java面试题” 前200页》,但该文章里面只有题目,没有答案。因此,我整理了一些答案发布于本文。本文整理答案的原则是尽量做到精简、点到即止(因为一般面试题的试卷里面的作答区域有限)。如果你有更好的答案,欢迎在评论区指出,或者给Github仓库提PR。
nnngu
2018/03/05
2.5K0
Java常见面试题及答案 21-30(集合类)
21.HashMap的工作原理是什么? HashMap内部是通过一个数组实现的,只是这个数组比较特殊,数组里存储的元素是一个Entry实体(jdk 8为Node),这个Entry实体主要包含key、v
Java高级架构
2018/04/19
6660
2016Java面试题与答案——集合专题(一)
Java集合框架作为Java编程语言的基础,也是Java面试中很重要的一个知识点,不管是学习还是为了入职,这一块都应该被小伙伴们充分重视,老九君列出了一些关于Java集合的重要面试题和答案提供给小伙伴们参考,希望能对小伙伴们的学习和入职能有所帮助! 1、Java集合框架是什么?说出一些集合框架的优点? 答:每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线
老九君
2018/03/01
7470
2016Java面试题与答案——集合专题(一)
Java基础八股文(背诵版)
二哥整理了一份 Java 基础篇的八股文,大家在面试前可以背一遍,一定能“吊打”面试官。
沉默王二
2021/09/03
45.3K1
Java基础八股文(背诵版)
一线互联网大厂真实面试题集锦
有的答案也并不是唯一的,所以这里我们只列题目,答出来的小伙伴可以在留言区一起交流交流呀~
老九君
2020/02/12
8870
Java集合源码分析(三)Vevtor和Stack
前言   前面写了一篇关于的是LinkedList的除了它的数据结构稍微有一点复杂之外,其他的都很好理解的。这一篇讲的可能大家在开发中很少去用到。但是有的时候也可能是会用到的!   注意在学习这一篇之前,需要有多线程的知识:   1)锁机制:对象锁、方法锁、类锁     对象锁就是方法锁:就是在一个类中的方法上加上synchronized关键字,这就是给这个方法加锁了。     类锁:锁的是整个类,当有多个线程来声明这个类的对象的时候将会被阻塞,直到拥有这个类锁的对象被销毁或者主动释放了类锁。这个时候在被阻
用户1195962
2018/01/18
6740
Java集合源码分析(三)Vevtor和Stack
“面试不败计划”:集合、日期、异常、序列化、其他知识点
关于集合 思考题:1、Java中的集合及其继承关系 思考题:希望大家积极的思考,并且可以踊跃的说出自己的想法,想法不管对与错,只要说出来就是一种提高,所以,希望小伙伴们可以把自己的想法在留言区给出,这
好好学java
2018/07/02
9420
Java常用集合List、Map、Set介绍以及一些面试问题
对于基本数据类型,集合使用自动装箱减少代码量,但是如果处理固定大小的基本数据类型时,相对比较慢。
Java技术债务
2022/08/09
1.6K0
Java常用集合List、Map、Set介绍以及一些面试问题
Java集合框架一览笔录
1、集合概念 集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所以的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,java5还在java.util.concurrent包下提供了一些多线程支持的集合类。 集合分为两大类:Collection、Map。 Collection(集合),每个元素存储单个数据(Java基本数据类型或者对象),通常这些元素都服从某种规则   1) List必须保持元素特定的顺序   2) Set不能有重复元素   3) Queue保持一个队列
斯武丶风晴
2018/03/01
6090
Java集合框架一览笔录
面试必备:30 个 Java 集合面试问题及答案
Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。
美的让人心动
2018/09/20
7140
Java技术300+面试题
一年一度的面试高峰期又来了,技术学习群的很多朋友问我有没有关于Java基础面试题,网上各种面试题没有分类很混乱,无法系统性参考学习。
用户9843318
2022/06/20
8600
Java技术300+面试题
2022 最新整理的 Java 集合面试题(最新版 Java 面试宝典)
21 JDK 8 HashMap 链表转红黑树,为啥是链表长度大于 8 才转?为什么是 8?
Java技术栈
2022/05/25
6010
2022 最新整理的 Java 集合面试题(最新版 Java 面试宝典)
40个Java集合面试问题和答案
每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:
田维常
2019/07/16
8380
《面试季》经典面试题(三)
    第一类: 没有实现阻塞接口,但是实现了Queue和AbstractQueue接口
IT学习日记
2022/09/13
3470
《面试季》经典面试题(三)
金九银十面试准备季:异常+IO与NIO流
4、try catch fifinally,try里有return,finally还执行么?
慕容千语
2020/08/10
5810
金九银十面试准备季:异常+IO与NIO流
Java 中的fail safe和fail fast迭代器是什么
Java Collections 支持两种类型的迭代器:fail-safe(故障安全) 和 fail fast(快速失败)。快速失败迭代器和故障安全迭代器之间的主要区别在于底层集合在开始迭代时是否可以修改。如果您使用过像 ArrayList 这样的 Collection,那么您就会知道,当您迭代遍历它们时,其他线程不应修改该集合。如果迭代器在迭代开始后检测到任何结构更改,例如添加或删除新元素,则会抛出ConcurrentModificationException,这称为快速失败行为,这些迭代器称为快速失败迭代器,因为它们一旦检测到任何修改就会失败。 
用户4235284
2023/11/08
2680
Java学习之迭代器
迭代器 Demo001---------阿里云基础P184 迭代器Enumeration和Iterator的区别 1、函数接口不同 Enumeration只有两个函数接口。通过Enumeration,我们只能读取集合的数据,而不能对数据进行修改 Iterator只有三个函数接口。Iterator除了能读取集合的数据之外,也能对数据进行删除操作 2、Iterator支持fail-fast机制,而Enumeration不支持 Enumeration是Java1.0之后
用户8447427
2022/08/18
2990
Core Java 52 问(含答案)
上篇文章 4.9k Star 安卓面试知识点,请收下! 翻译了 Mindorks 的一份超强面试题,今天带来的是其中 Core Java部分 52 道题目的答案。题目的质量还是比较高的,基本涵盖了 Java 基础知识点,面向对象、集合、基本数据类型、并发、Java 内存模型、GC、异常等等都有涉及。整理答案的过程中才发现自己也有一些知识点记不太清了,一边回忆学习,一边整理答案。52 道题,可以代码验证的都经过我的验证,保证答案准确。
路遥TM
2021/08/31
3950
Java集合面试题[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。 Java集合面试题 Java 集合框架的基础接口有哪些? Collection ,为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java 平台不提供这个接口任何直接的实现。 Set ,是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。 List ,是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List 更像长度动态变换的数组。 Map ,是一个将 key 映射到 value 的对
全栈程序员站长
2022/07/23
5940
java集合详解和集合面试题目
数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。
全栈程序员站长
2022/09/05
6930
相关推荐
百度搜索 “Java面试题” 前200页(面试必看)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档