pull/405/head
Jimmy song 2020-06-19 17:55:41 +08:00
parent 38cc74928e
commit 4b3f179330
2 changed files with 53 additions and 2 deletions

View File

@ -1,5 +1,7 @@
# Pod 的生命周期
本文讲解的是 Kubernetes 中 Pod 的生命周期,包括生命周期的不同阶段、存活和就绪探针、重启策略等。
## Pod phase
Pod 的 `status` 字段是一个 PodStatus 对象PodStatus中有一个 `phase` 字段。
@ -55,6 +57,42 @@ Kubelet 可以选择是否执行在容器上运行的两种探针执行和做出
请注意,如果您只想在 Pod 被删除时能够排除请求,则不一定需要使用就绪探针;在删除 Pod 时Pod 会自动将自身置于未完成状态,无论就绪探针是否存在。当等待 Pod 中的容器停止时Pod 仍处于未完成状态。
### readinessGates
自 Kubernetes 1.14(该版本 `readinessGates` GA在1.11 版本是为 alpha起默认支持 Pod 就绪检测机制扩展。
应用程序可以向 PodStatus 注入额外的反馈或信号Pod readiness。要使用这个功能请在 PodSpec 中设置 `readinessGates` 来指定 kubelet 评估 Pod readiness 的附加条件列表。
Readiness gates 由 Pod 的 `status.condition` 字段的当前状态决定。如果 Kubernetes 在 Pod 的 `status.conditions` 字段中找不到这样的条件,则该条件的状态默认为 "False"。
下面是一个例子。
```yaml
kind: Pod
...
spec:
readinessGates:
- conditionType: "www.example.com/feature-1"
status:
conditions:
- type: Ready # 内置的 Pod 状态
status: "False"
lastProbeTime: null
lastTransitionTime: 2018-01-01T00:00:00Z
- type: "www.example.com/feature-1" # 附加的额外的 Pod 状态
status: "False"
lastProbeTime: null
lastTransitionTime: 2018-01-01T00:00:00Z
containerStatuses:
- containerID: docker://abcd...
ready: true
...
```
您添加的 Pod 条件的名称必须符合 Kubernetes 的 [label key 格式](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set)。
只有到 Pod 中的所有容器状态都是 Ready且 Pod 附加的额外状态检测的 `readinessGates` 条件也是 Ready 的时候Pod 的状态才是 Ready。
## Pod 和容器状态
有关 Pod 容器状态的详细信息,请参阅 PodStatus 和 ContainerStatus。请注意报告的 Pod 状态信息取决于当前的 ContainerState。
@ -157,6 +195,8 @@ spec:
- 节点控制器将 Pod `phase` 设置为 Failed。
- 如果是用控制器来运行Pod 将在别处重建。
原文地址https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
## 参考
- [Pod lifecycle - kubernetes.io](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/)
翻译:[rootsongjc](https://github.com/rootsongjc)

View File

@ -1,2 +1,13 @@
# OpenKruise
[OpenKruise](http://openkruise.io/) 是阿里云开源的大规模应用自动化管理引擎,在 Kubernetes 原生 Deployment/StatefulSet 等控制器基础上,提供了更多的增强功能如:
- 优雅原地升级
- 发布优先级/打散策略
- 多可用区 workload 抽象管理
- 统一 sidecar 容器注入管理等
这些控制器可以帮助开发者应对更加多样化的部署环境和需求、为集群维护者和应用开发者带来更加灵活的部署发布组合策略。