Kubernetes(k8s)

Kubernetes(k8s)

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

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

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

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

长期状态

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

ContainerCreating:Pod 已经被调度到一个节点但容器尚未完全创建。Kubernetes 可能在拉取镜像、设置网络和准备储存卷。如果是长期存在,则说明该Pod异常,需要检查。Kubernetes 可能在拉取镜像、设置网络和准备储存卷。如果是长期存在,则说明该Pod异常,需要检查。如果是长期存在,则说明该Pod异常,需要检查。Init:Waiting:Pod 有初始化容器,这些容器在主容器启动前运行,如果正在等待它们完成,则会显示此状态。Terminating:Pod 正在被删除,处于清理和资源回收过程中。CrashLoopBackOff:Pod 中的一个或多个容器尝试启动后失败,Kubernetes 正在尝试重新启动容器。ImagePullBackOff/ErrImagePull:Kubernetes 无法拉取指定的容器镜像。当然其实这些所谓的长期和短暂状态其实不太准确,因为如果出现问题,这些状态就会长期保持,比如我们前面讲解InitContainers,就故意设置错误让这个初始化无法完成,他的状态就会长期维持在Init:xxx状态。

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

代码语言:javascript复制kubectl get pod

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

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

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

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

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

代码语言:javascript复制kubectl delete pod --force --grace-period=0这里的 是你想要删除的 Pod 的名字。

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

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

代码语言:javascript复制kubectl edit pod 然后删除或清空 metadata.finalizers 字段,保存并退出编辑器,Pod 将被删除。

相关推荐

淘宝推广怎么设置关键词?有哪些推广方式?
365正规网站是多少

淘宝推广怎么设置关键词?有哪些推广方式?

📅 07-12 👁️ 4869
女生抽什么烟好?适合女孩子的香烟推荐指南
365直播是什么

女生抽什么烟好?适合女孩子的香烟推荐指南

📅 09-09 👁️ 8876
解决Maya软件中显示被隐藏的对象的几种方法
365正规网站是多少

解决Maya软件中显示被隐藏的对象的几种方法

📅 10-11 👁️ 860
WHEREVER中文(简体)翻译:剑桥词典
约彩365彩票官方app下载安卓

WHEREVER中文(简体)翻译:剑桥词典

📅 11-05 👁️ 6670
华为主题2023年度榜单发布!这些主题总有一个你喜欢的
365正规网站是多少

华为主题2023年度榜单发布!这些主题总有一个你喜欢的

📅 09-26 👁️ 8377
天涯明月刀航海版本造船所需材料数据一览
365正规网站是多少

天涯明月刀航海版本造船所需材料数据一览

📅 07-26 👁️ 5646
[海印广场]详细地址,位置示意图,地图位置,交通指引,附近酒店
电脑安全模式怎么退出 电脑退出安全模式方法【详细教程】
沙特主帅豪言:世界杯抽签再遇强敌,沙特能否复刻奇迹?