概述:
1. pod是k8s中的最小单元
2. 一个pod中可以运行一个容器,也可以运行多个容器
3. 运行多个容器的话,这些容器是一起被调度的
4. Pod的生命周期是短暂的,不会自愈,是用完就销毁的实体
5. 一般我们是通过Controller来创建和管理pod的
Pod生命周期:
初始化容器、启动前操作、就绪探针、存活探针、删除pod操作
Pod 是 Kubernetes 中最小的可调度和可管理单位,它可以包含一个或多个容器。以下是 Pod 的生命周期和各个阶段的描述:
Pending(挂起):在此阶段,Kubernetes 正在为 Pod 分配资源,并且正在等待这些资源准备就绪。此时,Pod 还没有运行在任何节点上。
Initializing Containers(初始化容器):如果 Pod 中定义了初始化容器(Init Containers),则在此阶段,初始化容器会按照顺序依次运行。初始化容器可以用于执行一些预配置任务,例如加载配置文件、下载数据等。只有当所有初始化容器成功完成后,Pod 才会进入下一个阶段。
ContainerCreating(创建容器):在此阶段,Kubernetes 正在创建并启动 Pod 中的容器。它会为每个容器分配网络和存储资源,并将容器的镜像拉取到节点上。
Running(运行中):一旦容器创建完成并成功启动,Pod 就会进入 Running 阶段。此时,容器正在运行,并且可以正常处理请求。
Ready(就绪):在此阶段,Pod 已经准备好接收请求,并且所有容器都已经启动并且就绪。Kubernetes 可以将流量路由到就绪的 Pod 上。
ContainerTerminated(容器终止):如果容器发生故障或被意外终止,Pod 将进入 ContainerTerminated 阶段。此时,Kubernetes 会根据重启策略(Restart Policy)来决定是否重新启动容器。
Terminating(终止中):在删除 Pod 或缩容时,Pod 将进入 Terminating 阶段。在此阶段,Kubernetes 会发送信号给 Pod 中的容器,并尝试优雅地终止它们。一旦所有容器都终止完成,Pod 就会被删除。
请注意,就绪探针(Readiness Probe)和存活探针(Liveness Probe)是 Kubernetes 用于检测容器健康状态的机制。就绪探针用于确定容器是否准备好接收流量,而存活探针用于确定容器是否仍然处于运行状态。这些探针可以在 Pod 的描述文件中配置,并且可以根据需要进行自定义设置。
livenessProbe:存活探针
检测应用发生故障时使用,不能提供服务、超时等
检测失败重启pod
readinessProbe:就绪探针
检测pod启动之后应用是否就绪,是否可以提供服务
检测成功,pod才开始接收流量
ExecAction
#在容器内执行指定命令,如果命令退出时返回码为0则认为诊断成功。
TCPSocketAction
#对指定端口上的容器的IP地址进行TCP检查,如果端口打开,则诊断被认为是成功的。
HTTPGetAction
#对指定的端口和路径上的容器的IP地址执行HTTPGet请求,如果响应的状态码大于等于200且小于 400,则诊断被认 为是成功的。
? Replication Controller #第一代pod副本控制器
? ReplicaSet #第二代pod副本控制器
? Deployment #第三代pod控制器
Replication Controller:副本控制器(selector = !=)
? https://kubernetes.io/zh/docs/concepts/workloads/controllers/replicationcontroller/
? https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/labels/
? ReplicaSet:副本控制集,和副本控制器的区别是:对选择器的支持
(selector 还支持in notin)
? https://kubernetes.io/zh/docs/concepts/workloads/controllers/replicaset/
? Deployment:比rs更高一级的控制器,除了有rs的功能之外,还有很多高级
功能,,比如说最重要的:滚动升级、回滚等
? https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/
参考资料:
马哥,杰哥