我怎么知道Kubernetes中所有可能的状态和原因的列表?
现在,我正在处理Kubernetes事件。基于某些异常事件,我将对此做出反应。例如,如果某个Pod已退出或待处理,则将收到此类事件并通过电子邮件(自定义代码)得到通知。对于每个此类事件,将采取进一步的措施。
我必须知道Pod和节点的所有可能状态的列表。这将帮助我处理代码中的异常行为。如果可能的话,也最好知道可能的事件原因列表。
我正在使用Fabric8 kubernetes-client,因为我发现Java Kubernetes-client处理事件时遇到了一些问题。
我通过Google搜索的方式无法获得某些结果。
答案 0 :(得分:4)
如果您需要在Kubernetes中拥有events
的完整列表,则应直接查看github上的Kubernetes
项目。
Here到event.go
文件的链接。
答案 1 :(得分:2)
Pod的一个阶段是Pod在其lifecycle中位置的简单概括。
该阶段并非旨在对Container或Pod状态的观测进行全面汇总, 也不打算成为一个全面的状态机。
以下是相位的可能值:
Pending
Pod已被Kubernetes系统接受,但是尚未创建一个或多个Container图像。这包括计划之前的时间以及通过网络下载图像所花费的时间,这可能需要一段时间。
Running
Pod已绑定到一个节点,并且所有容器都已创建。至少一个容器仍在运行,或者正在启动或重新启动。
Succeeded
Pod中的所有容器已成功终止,并且不会重新启动。
Failed
Pod中的所有容器都已终止,并且至少一个容器因故障而终止。也就是说,容器要么以非零状态退出,要么被系统终止。
Unknown
由于某种原因,无法获得Pod的状态,通常是由于与Pod的主机通信时出错。
如果您对Pod条件下的详细数组感兴趣,建议您参考Kubernetes文档中的Pod Lifecycle并检查source code以获取剩余信息。
答案 2 :(得分:1)
我已经能够记录一些其他内容:
Terminating
吊舱正在尝试终止;如果吊舱卡在这种状态下,则说明发生了某些阻碍该进程成功的事情(这可能是僵尸进程,有时甚至是已装入卷的问题)
ContainerCreating
此Pod所需的容器配置出了点问题;可能是输入错误的容器名称或某些网络配置问题
Error
种类繁多;可能不是特别有用。如果您经常看到这种情况,最好检查一下this doc
答案 3 :(得分:0)
k8s文档在状态,阶段,原因,条件等方面具有令人困惑的含义。实际上,Pod不具有kubectl get pods
在STATUS列中返回的状态。要确认这一点,您需要查看PodStatus
,PodCondition
,ContainerState
对象,您将看到报告为Pod状态的信息取决于当前的ContainerState