如何在云计算基础架构平台中创建云主机
152
2023-10-25
【摘要】 本书摘自《基于Kubernetes的容器云平台实战》一书中第8章,第1节,由陆平、左奇、付光和张晗等编著。
8.1.7 Pod 生命周期
1.容器状态
Pod 状态就是一组容器状态的体现和概括,容器的状态变化会影响 Pod 的状态变化, 并触发Pod 的生命周期状态发生变化。
使用docker run运行容器时,首先会下载镜像,成功后开始运行容器;当容器运行结 束并退出后,容器终止,这是一个完整的生命周期过程。 Kubernetes对 Pod 的完整生命周 期状态进行了记录,每个状态所含的信息如下:
1)Waiting: 容器正在等待创建,如正下载镜像。
■ reason: 等待的原因。
2)Running: 容器已经创建,正运行。
■ startAt: 容器创建时间。
3)Terminated: 容器终止退出。
■ exitCode: 退出码。
■ signal: 容器退出信号。
■ reason: 容器退出原因。
finishedAt: 容器退出时间。
containerID: 容器的ID。
Pod 运行后,可以通过Pod 查询接口来查询容器的状态。命令如下:
#Kubectl describe pod my pod
2.Pod 生命周期
Pod 被分配到 一个Node 上之后,直到被删除前都不会离开这个Node。 一 旦 某 个Pod 失败, Kubernetes 会将其清理,然后Replication Controller 将会在其他机器上(或本机)重 建 Pod。 重建后, Pod 的 ID 将发生变化,这便是 一个新的Pod。 因 此 ,Kubernetes 中 Pod 的迁移实际是在新Node 上重建 Pod。
Pod 的生命周期可以简单描述为:首先Pod 被创建,紧接着Pod 被调度到 Node 上进行 部署运行。 Pod 一 旦被分配到Node 后就不会离开这个Node, 直到它被删除,即生命周期 完结。
Pod 的生命周期被定义为以下几个相位:
■ Pending:Pod 已经被创建,但是一个或者多个容器还未创建,这包括Pod 调度阶 段,以及容器镜像的下载过程。
Running:Pod 已经被调度到Node, 所有容器已经创建,并且至少一个容器在运行
或者正在重启。
■ Succeeded:Pod 中所有容器正常退出。
■ Failed:Pod 中所有容器退出,至少有一个容器是一次退出的。 可以通过以下命令查询 Pod 处于生命周期的哪个阶段:
$ kubectl get pods my-app --template="{{.status.phase}}"
Running
Pod 被创建成功后,首先会进入Pending 阶段,然后被调度到某Node 节点后运行,进 入Running 阶段。如果Pod 中的某容器停止(正常或者异常退出),那么 Pod 会根据重启策 略的不同进入不同的阶段,举例如下:
1)Pod 是 Running 阶段,含有一个容器,容器正常退出:
■ 如果重启策略是Always, 那么会重启容器, Pod 保持 Running 阶段。
■ 如果重启策略是 OnFailure,Pod 进入 Succeeded 阶段。
■ 如果重启策略是Never,Pod 进入 Succeeded 阶段。
2)Pod 是 Running 阶段,含有一个容器,容器异常退出:
■ 如果重启策略是 Always, 那么会重启容器, Pod 保持 Running 阶段。
■ 如果重启策略是 OnFailure,Pod 保持 Running 阶段。
■ 如果重启策略是Never,Pod 进入 Failed 阶段。
3)Pod 是 Running 阶段,含有两个容器,其中一个容器异常退出:
■ 如果重启策略是 Always, 那么会重启容器, Pod 保 持 Running 阶段。
■ 如果重启策略是 OnFailure,Pod 保持 Running 阶段。
■ 如果重启策略是Never,Pod 保持Running 阶段。
4)Pod 是 Running 阶段,含有两个容器,两个容器都异常退出:
■ 如果重启策略是Always, 那么会重启容器, Pod 保持 Running 阶段。
■如果重启策略是 OnFailure,Pod 保持 Running 阶段。
■ 如果重启策略是Never,Pod 进入 Failed 阶段。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~