Skip to content

Commit

Permalink
Merge pull request #37 from FogDong/master
Browse files Browse the repository at this point in the history
fix(docs): fix typo and punctuation in zh-cn version of doc
  • Loading branch information
jamiehannaford authored May 7, 2021
2 parents 6d6d233 + ffde20a commit 7c0fd6a
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions zh-cn/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -292,9 +292,9 @@ Scheduler 作为一个独立的组件运行在集群控制平面上,工作方
一旦获取到了这个列表,它就会通过与自己的内部缓存进行比较来检测差异,如果有差异,就开始同步 Pod 列表。我们来看看同步过程是什么样的:

1. 如果 Pod 正在创建, Kubelet 就会[暴露一些指标](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/kubelet.go#L1504),可以用于在 Prometheus 中追踪 Pod 启动延时;
1. 然后,[生成一个 PodStatus 对象](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/kubelet_pods.go#L1333),表示 Pod 当前阶段的状态。Pod 的 Phase 状态是 Pod 在其生命周期中的高度概括,包括 `Pending``Running``Succeeded``Failed``Unkown` 这几个值。状态的产生过程非常复杂,因此很有必要深入深挖一下:
1. 然后,[生成一个 PodStatus 对象](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/kubelet_pods.go#L1333),表示 Pod 当前阶段的状态。Pod 的 Phase 状态是 Pod 在其生命周期中的高度概括,包括 `Pending``Running``Succeeded``Failed``Unknown` 这几个值。状态的产生过程非常复杂,因此很有必要深入深挖一下:
- 首先,串行执行一系列 `PodSyncHandlers`,每个处理器检查 Pod 是否应该运行在该节点上。当其中之一的处理器认为该 Pod 不应该运行在该节点上,则 Pod 的 Phase 值就会[变成 `PodFailed`](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/kubelet_pods.go#L1340-L1345) 并将从该节点被驱逐。例如,以 Job 为例,当一个 Pod 失败重试的时间超过了 `activeDeadlineSeconds` 设置的值,就会将该 Pod 从该节点驱逐出去;
- 接下来,Pod 的 Phase 值由 init 容器和主容器状态共同决定。由于主容器尚未启动,容器被视为处于[等待阶段](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/kubelet_pods.go#L1284),如果 [Pod 中至少有一个容器处于等待阶段,则其 Phase 值为 `Pending`](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/kubelet_pods.go#L1298-L1301)、;
- 接下来,Pod 的 Phase 值由 init 容器和主容器状态共同决定。由于主容器尚未启动,容器被视为处于[等待阶段](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/kubelet_pods.go#L1284),如果 [Pod 中至少有一个容器处于等待阶段,则其 Phase 值为 `Pending`](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/kubelet_pods.go#L1298-L1301)
- 最后,Pod 的 Condition 字段由 Pod 内所有容器状态决定。现在我们的容器还没有被容器运行时 (Container Runtime) 创建,所以,Kubelet [`PodReady` 的状态设置为 False](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/status/generate.go#L72-L83)
1. 生成 PodStatus 之后,Kubelet 就会将它发送到 Pod 的 status 管理器,该管理器的任务是通过 kube-apiserver 异步更新 etcd 中的记录;
1. 接下来运行一系列 admit handlers 以确保该 Pod 具有正确的权限(包括强制执行 [AppArmor profiles 和 NO_NEW_PRIVS](https://github.com/kubernetes/kubernetes/blob/v1.14.0/pkg/kubelet/kubelet.go#L864-L865)),在该阶段被拒绝的 Pod 将永久处于 `Pending` 状态;
Expand Down

0 comments on commit 7c0fd6a

Please sign in to comment.