
Kubernetes 资源清单与Pod生命周期
kubectl 向 Kubernetes API 发送指令 Kubernetes API 会调用到 kubelet(调度过程是通过 etcd 完成的) kubelet 会对应操作 CR CR 会完成容器环境的初始化,初始化过程中会启动一个 pause 的基础容器,这是 Google 为我们做的一个非常经典容器,他负责我们的网络和存储卷的共享 接下来 CR 会进行一个或多个 init C(容器)的初始化(这取决于你的 Pod 中有多少个容器),当然 init C 也可以没有 如果 Pod 的 init 容器失败, Kubernetes 会不断重启该 Pod(重启 Pod 所有 init 容器都会重新执行),直到 init 容器成功为止。然而,如果 Pod 对应的 restartPolicy 为 Never,它不会重新启动 如果 Pod 的 restartPolicy 为 Always,那么失败的容器会以指数退避的方式重启 主容器在 start 和 stop 的过程中会有 readiness 和 liveness 的参与 readinessProbe 用于探测容器是否准备好服务请求 livenessProbe 用于指示容器是否正在运行 ExecAction:在容器内执行指定命令 TCPSocketAction:对指定端口执行 TCP 检查 HTTPGetAction:对指定端口和路径执行 HTTP 请求 成功:容器通过了诊断 失败:容器未通过诊断 未知:诊断失败但不会采取任何行动 exec:执行一段命令 HTTP:发送 HTTP 请求 挂起(Pending):Pod 已经被 Kubernetes 系统接受,但有一个或多个容器镜像尚未创建 运行中(Running):Pod 已经绑定到一个节点上,所有容器已被创建,至少有一个容器正在运行 成功(Succeeded):Pod 中的所有容器都被成功终止 失败(Failed):Pod 中的所有容器都已终止,至少有一个容器是因为失败终止 未知(Unknown):因为某些原因无法取得 Pod 的状态
发布日期:2021-05-17 08:32:07
浏览次数:31
分类:精选文章
本文共 2475 字,大约阅读时间需要 8 分钟。
Kubernetes 资源清单介绍
Kubernetes 中所有的内容都抽象为资源,资源实例化之后,叫做对象。资源清单是一种通过 YAML 格式文件定义 Kubernetes 资源的文件。
Kubernetes 中存在哪些资源
名称空间级别(仅在当前Namespace空间下生效):
- 工作负载型资源 (workload):Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob(ReplicationController在 v1.11 版本被废弃)
- 服务发现及负载均衡型资源 (ServiceDiscoveryLoadBalance):Service、Ingress、…
- 配置与存储型资源:Volume(存储卷)、CSI(容器存储接口,可扩展各种各样第三方存储卷)
- 特殊类型的存储卷:ConfigMap(当配置中心来使用的资源类型)、Secret(保存敏感数据)、DownwardAPI(把外部环境中的信息输出给容器)
集群级别(不管在哪个Namespace定义都可以看见):
- 集群级资源:Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding
元数据型(提供一个指标):
- 元数据型资源:HPA(水平扩展配置)、PodTemplate、LimitRange
资源清单的含义
资源清单是一种通过 YAML 格式文件定义 Kubernetes 资源的文件,通常用于创建符合预期期望的 Pod。
常用字段解释
详细信息可通过如下命令查看:
kubectl explain pod
必须存在的属性
主要对象
额外的参数项
Pod 生命周期
Pod 启动和停止的具体流程如下:
Init 容器的作用
- Init 容器可以包含并运行实用工具,而不推荐在应用程序容器镜像中包含这些实用工具
- Init 容器可以包含使用工具和定制化代码来安装
- 应用程序镜像可以分离出创建和部署的角色
- Init 容器可以访问 Secret,而应用程序容器不能
- Init 容器可以作为一种简单的阻塞或延迟应用容器启动的方法
特殊说明
- 在 Pod 启动过程中,init 容器会在网络和数据卷初始化之后启动
- 每个 init 容器必须在下一个容器启动之前成功完成
- 如果 Pod 的 restartPolicy 为 Never,它不会重新启动
- 在所有的 init 容器没有成功之前,Pod 将不会变成 Ready 状态
- 如果 Pod 重启,所有的 init 容器必须重新执行
- 修改 Init 容器的 image 字段会导致 Pod 重启
- Init 容器的 name 必须唯一,与任何其他容器共享同一个名称会导致错误
容器探针
探针是由 kubelet 对容器执行的定期诊断。探针有三种类型:
每次探测都将获得以下三种结果之一:
探测方式
- livenessProbe:指示容器是否正在运行
- readinessProbe:指示容器是否准备好服务请求
Podhook
Podhook 是 Kubernetes 管理的,用于在容器的生命周期中执行 hook。hook 有两种类型:
重启策略
PodSpec 中有一个 restartPolicy 字段,可能的值为 Always、OnFailure 和 Never。默认为 Always。restartPolicy 适用于 Pod 中的所有容器。失败的容器会被 kubelet 以指数退避的方式重启。
Pod 相位
Pod 的 status 字段是一个 PodStatus 对象,PodStatus 中有一个 phase 字段。Pod 相位(phase)是 Pod 在其生命周期中的简单宏观概述。Pod 相位的数量和含义是严格指定的。
Pod 相位可能存在的值:
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年05月17日 01时02分57秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
matlab中cat函数详解-ChatGPT4o作答
2025-04-12
matlab中CNN的使用详解-ChatGPT4o作答
2025-04-12
Matlab中imshow()函数的使用
2025-04-12
Matlab中save与load函数的使用
2025-04-12
matlab中函数fscanf
2025-04-12
matlab中如何进行优化问题求解-ChatGPT4o作答
2025-04-12
matlab中怎么样算距离,MATLAB 距离计算
2025-04-12
Matlab中数组下标是logical,如何处理?
2025-04-12
matlab中添加文件路径-ChatGPT4o作答
2025-04-12
matlab中的clear函数-ChatGPT4o作答
2025-04-12
Matlab中的LSTM-ChatGPT4o作答
2025-04-12
matlab中的readtable函数详解-ChatGPT4o作答
2025-04-12
matlab中的table数据结构详解-ChatGPT4o作答
2025-04-12
MATLAB中的代码分析器(Code Analyzer)详解-ChatGPT4o作答
2025-04-12
MATLAB中的集合运算
2025-04-12
matlab函数及其功用
2025-04-12
matlab利用guide编写简单计算器界面
2025-04-12