1. 状态说明
在整个pod的生命周期分四个阶段, 每个阶段都是对pod的简单的总结, 下面是pod可能处于的阶段
- Pending: pod被k8s系统接受,但由于某种原因而未完全运行,如正在下载镜像文件
- Running: pod已运行于某一节点上(container里的进程处于启动或重启状态时也属于这一阶段)
- Succeeded: pod里所有的containers均已terminated
- Failed: pod里至少有一个container未正常terminated
- Unknown: 由于未知原因无法获取pod状态,比如node无法连接
每一个阶段都有更详细的conditions信息, 它代表了当前pod是否处于某一个condition(PodScheduled,Ready,Initialized,Unschedulable),"true" 表示处于,"false"表示不处于
- PodInitialized PodConditionType = "Initialized"
- PodReady PodConditionType = "Ready"
- PodScheduled PodConditionType = "PodScheduled"
- PodReasonUnschedulable PodConditionType = "Unschedulable"
注意 当阶段为Running, condition中Ready状态为True时, 即表示pod中的容器可以提供服务了
2. 在pod创建过程中, 通常会伴随着各种事件的产生, 可以使用curl监控pod状态得到, k8s事件的种类总共只有4种
- Added EventType = "ADDED"
- Modified EventType = "MODIFIED"
- Deleted EventType = "DELETED"
- Error EventType = "ERROR"
下图为pod产生到运行正常时的状态变化
image
可以看到第2行的type由ADDED变为MODIFIED, 78行的状态由Pending变为Running, 88行的状态由False变为True
其它的变化有第2行、12行
下图为pod从正常运行到被删除的状态变化
image
可以看到在第一个文件到最后一个文件的变化, 第2行的type由MODIFIED变为DELETED, 90行的状态由True变为False
3. 监控pod的状态变化方法
直接在上url后追加所需要查询的内容,方法使用GET 事例,返回json