Table of Contents
+
toc = true
categories = [“技术文章”]
date = “2023-12-03T10:42:05+08:00”
description = “”
keywords = [“K8S”,“云计算”]
tags = [“K8S”,“云计算”]
title = “K8S学习笔记(08): POD生命周期”
url = “2023/12/03/pod-life-cycle“
+
简介
pod 遵循预定义的生命周期,起始于 Pending 阶段, 如果至少其中有一个主要容器正常启动,则进入 Running,之后取决于 Pod 中是否有容器以失败状态结束而进入 Succeeded 或者 Failed 阶段。
pod状态
主要状态
Pod主要有以下几个状态, 定义在pkg/apis/core/types.go中:
状态 | 意义 | 描述 |
---|---|---|
Pending | 等待中 | Pod已经被创建,但还没有完成调度,或者说有一个或多个镜像正处于从远程仓库下载的过程。处在这个阶段的Pod可能正在写数据到etcd中、调度、pull镜像或启动容器。 |
Running | 运行中 | 该 Pod 已经绑定到了一个节点上,Pod 中所有的容器都已被创建。至少有一个容器正在运行,或者正处于启动或重启状态。 |
Succeeded | 正常终止 | Pod中的所有的容器已经正常的执行后退出,并且不会自动重启,一般会是在部署job的时候会出现。 |
Failed | 异常停止 | Pod 中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止。 |
Unkonwn | 未知状态 | API Server无法正常获取到Pod对象的状态信息,通常是由于其无法与所在工作节点的kubelet通信所致。 |
其他状态
定义在pkg/kubelet/container/sync_result.go等。
状态 | 描述 |
---|---|
CrashLoopBackOff | 容器退出,kubelet正在将它重启 |
InvalidImageName | 无法解析镜像名称 |
ImageInspectError | 无法校验镜像 |
ErrImageNeverPull | 策略禁止拉取镜像 |
ImagePullBackOff | 正在重试拉取 |
RegistryUnavailable | 连接不到镜像中心 |
ErrImagePull | 通用的拉取镜像出错 |
CreateContainerConfigError | 不能创建kubelet使用的容器配置 |
CreateContainerError | 创建容器失败 |
m.internalLifecycle.PreStartContainer | 执行hook报错 |
RunContainerError | 启动容器失败 |
PostStartHookError | 执行hook报错 |
ContainersNotInitialized | 容器没有初始化完毕 |
ContainersNotRead | 容器没有准备完毕 |
ContainerCreating | 容器创建中 |
PodInitializing | pod 初始化中 |
DockerDaemonNotReady | docker还没有完全启动 |
NetworkPluginNotReady | 网络插件还没有完全启动 |
Unschedulable | Pod不能被调度, scheduler没有匹配到合适的node节点 |
PodScheduled | pod正处于调度中 |
Initialized | 所有pod中的初始化容器已经完成了 |
容器状态
状态 | 意义 | 描述 |
---|---|---|
Waiting | 等待 | 处于 Waiting 状态的容器仍在运行它完成启动所需要的操作 |
Running | 运行中 | Running 状态表明容器正在执行状态并且没有问题发生。 如果配置了 postStart 回调,那么该回调已经执行且已完成。 |
Terminated | 已终止 | 处于 Terminated 状态的容器已经开始执行并且或者正常结束或者因为某些原因失败。 |
kubelet状态
微信扫一扫
作者:mospan
微信关注:墨斯潘園
本文出处:http://mospany.github.io/post/2023/2023-12-03-pod-life-cycle/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。