Pod
pod 是K8s中最小的可部署单元,用于容纳一个或多个容器。Pod为容器提供了一个共享的环境,包括网络命名空间、存储卷和IP地址。
pod的阶段(phase)
-
Pending: Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间。
-
Running: Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建。至少有一个容器仍在运行,或者正处于启动或重启状态。
-
Failed: Pod 中的所有容器都已终止,并且至少有一个容器是因为失败终止。也就是说,容器以非 0 状态退出或者被系统终止。
Pod 生命周期详细解析:
1. 创建与调度阶段:
-
Pod 创建: 可通过定义 Pod 的 YAML 创建 Pod 对象。
apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: container-1 image: nginx
kubectl apply -f pod-definition.yaml
-
节点选择: 调度器选择一个满足调度约束和条件的节点,将 Pod 分配到该节点上。如果找不到合适的节点,Pod 将保持在未调度状态。
2. 运行:
- 存在 Init 容器: 如果 Pod 的配置中定义了 Init 容器,kubelet 将按照顺序执行这些 Init 容器。每个 Init 容器负责执行一些初始化任务,例如加载配置、准备数据等。这些任务在主容器启动之前完成,确保主容器运行时具备所需的环境。
- Initialized 状态设置: 一旦所有 Init 容器成功完成,kubelet 将设置 Pod 的
Initialized
状态为 True。这表示 Pod 已经完成了初始化阶段,并且已经准备好开始运行主容器。
在 Pod 中定义探针是为了监控容器的健康状况。在上述提供的 YAML 示例中,定义了一个 readinessProbe
,该探针使用 HTTP GET 请求检查容器的 /health
路径是否可达。以下是该探针的配置细节:
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
httpGet
配置: 使用 HTTP GET 请求进行健康检查,检查路径为/health
,端口为 8080。initialDelaySeconds
: 探针将在容器启动后等待 5 秒钟再执行第一次检查。periodSeconds
: 探针将每隔 10 秒执行一次检查。
PodReadyToStartContainersCondition:
如果启用了 PodReadyToStartContainersCondition 特性门控,Kubelet 会通过 Pod 的 status.conditions
字段中的 PodReadyToStartContainers
状态来报告 Pod 是否达到了初始化里程碑。这个条件反映了 Pod 是否具备了运行容器的必要条件,例如 Init 容器的成功完成、网络的正确配置等。 PodReadyToStartContainersCondition 的设置为 True 表示 Pod 已经准备好开始运行容器。
3. 终止阶段:
-
体面终止过程: Pod 在终止时尝试以优雅的方式关闭容器,可以配置
terminationGracePeriodSeconds
。terminationGracePeriodSeconds: 30
-
强制终止: 在需要立即删除 Pod 时,可以使用
kubectl delete
命令并设置宽限期为 0。kubectl delete pod example-pod --grace-period=0 --force
k8中的三种不同类型的探针
在 Kubernetes 中,探针(Probes)用于定期检查容器的健康状态,以确保容器能够正常运行。主要有三种类型的探针:livenessProbe
、readinessProbe
和 startupProbe
。
1. livenessProbe
存活探针:
-
目的: 指示容器是否仍在运行。
-
配置方式:
livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 10
2. readinessProbe
就绪探针:
3. startupProbe
启动探针:
原文地址:https://blog.csdn.net/AK47red/article/details/134756854
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_46208.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!