企业实战--kubernetes(四)---pod的生命周期&init容器&探针

Kubernetes K8S之Pod生命周期与探针检测 K8S中Pod的生命周期与ExecAction、TCPSocketAction和HTTPGetAction探针检测 阅读详情

一、pod的生命周期

在这里插入图片描述Pod 是 kubernetes 系统的基础单元,是由用户创建或部署的最小组件,也是 kubernetes 系统上运行容器化应用的资源对象
pod可以包含多个容器,应用运行在这些容器里面,同时pod也可以有一个或多个先于应用容器启动的init容器。、

二、init容器介绍

Pod 可以包含多个容器,应用运行在这些容器里面,同时 Pod 也可以有一个或多个先于应用容器启动的 Init 容器。

Init 容器与普通的容器非常像,除了如下三点:

它们总是运行到完成。
Init 容器不支持 Readiness,因为它们必须在 Pod 就绪之前运行完成。
每个 Init 容器必须运行成功,下一个才能够运行。

如果 Pod 的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成功为止。然而,如果 Pod 对应的 restartPolicy 值为 Never,它不会重新启动。

Init 容器作用

Init 容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码。

Init 容器可以安全地运行这些工具,避免这些工具导致应用镜像的安全性降低。

应用镜像的创建者和部署者可以各自独立工作,而没有必要联合构建一个单独的应用镜像。

Init 容器能以不同于Pod内应用容器的文件系统视图运行。因此,Init容器可具有访问 Secrets 的权限,而应用容器不能够访问。

由于 Init 容器必须在应用容器启动之前运行完成,因此 Init
容器提供了一种机制来阻塞或延迟应用容器的启动,直到满足了一组先决条件。一旦前置条件满足,Pod内的所有的应用容器会并行启动。

init容器实验

[root@server1 manifest]# vim init.yaml
[root@server1 manifest]# cat init.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
    - name: myapp-container
      image: myapp:v1
  initContainers:
    - name: init-container
      image: busybox
      command: ["/bin/sh", "-c", "until nslookup myservice.default.svc.cluster.local; do echo waiting for myservice; sleep 2; done"]

 

其中init容器种执行的命令是用来检测default 命名空间的解析,这个解析需要一个service,即init容器在运行时会检测service,若果service没有运行的话就会一直处于初始化状态。

我们先来运行一下这个pod:

[root@server1 manifest]# kubectl create -f init.yaml 
pod/myapp-pod created
[root@server1 manifest]# kubectl get pod
NAME        READY   STATUS     RESTARTS   AGE
myapp-pod   0/1     Init:0/1   0          83s

   

可以看出pod一直处于初始化状态。

现在进入容器内部查看解析:

[root@server1 manifest]# kubectl exec -it myapp-pod -c init-container -- sh
/ # nslookup myservice.default.svc.cluster.local
Server:		10.96.0.10
Address:	10.96.0.10:53

** server can't find myservice.default.svc.cluster.local: NXDOMAIN

^C
/ # 

可以看出果然没有解析。

接下来我们创建一个service:

[root@server1 manifest]# vim service.yaml 
[root@server1 manifest]# cat service.yaml 
kind: Service
apiVersion: v1
metadata:
  name: myservice
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

[root@server1 manifest]# kubectl create -f service.yaml 
service/myservice created
[root@server1 manifest]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   2d4h
myservice    ClusterIP   10.109.148.189   <none>        80/TCP    9s

创建service成功,之后再查看pod状态:

[root@server1 manifest]# kubectl get pod -o wide
NAME        READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
myapp-pod   1/1     Running   0          53s   10.244.2.18   server3   <none>           <none>

可以看出已经处于运行状态,同样我们可以访问它:
[

root@server1 manifest]# curl 10.244.2.18
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

之后再进入容器查看解析:

[root@server1 manifest]# kubectl run test -it  --image=radial/busyboxplus
If you don't see a command prompt, try pressing enter.
/ # nslookup myservice.default.svc.cluster.local
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      myservice.default.svc.cluster.local
Address 1: 10.109.148.189 myservice.default.svc.cluster.local
/ # 

果然解析成功。

因此可以验证如果 Pod 的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成功为止。

实验完成后删除:

[root@server1 manifest]# kubectl delete pod test
[root@server1 manifest]# kubectl delete pod myapp-pod 
[root@server1 manifest]# kubectl delete svc myservice

三、探针

理解探针

容器探针用来检测主容器的运行状态。

在pod生命周期中可以做的一些事情。主容器启动前可以完成初始化容器,初始化容器可以有多个,他们是串行执行的,执行完成后就退出了,在主程序刚刚启动的时候可以指定一个post start 主程序启动开始后执行一些操作,在主程序结束前可以指定一个 pre stop 表示主程序结束前执行的一些操作。在程序启动后可以做两类常用检测 liveness probe(存活性探测) 和 readness probe(就绪性探测)

探针是由 kubelet 对容器执⾏的定期诊断。 要执⾏诊断, kubelet 调⽤由容器实现的 Handler。

有三种类型的探测方式:

ExecAction: 在容器内执⾏指定命令。 如果命令退出时返回码为 0 则认为诊断成功。
TCPSocketAction: 对指定端⼝上的容器的 IP 地址进⾏ TCP 检查。 如果端⼝打开, 则诊断被认为是成功的
HTTPGetAction: 对指定的端⼝和路径上的容器的 IP 地址执⾏ HTTP Get 请求。 如果响应的状态码⼤于等于200且⼩于400, 则诊断被认为是成功的。

每次探测都将获得以下三种结果之一

:

成功:容器通过了诊断。
失败:容器未通过诊断。
未知:诊断失败,因此不会采取任何行动。

Kubelet 可以选择是否执行在容器上运行的两种探针执行和做出反应:

livenessProbe:指示容器是否正在运行。如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其 重启策略的影响。如果容器不提供存活探针,则默认状态为 Success。
readinessProbe:指示容器是否准备好服务请求。如果就绪探测失败,端点控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的 IP 地址。初始延迟之前的就绪状态默认为 Failure。如果容器不提供就绪探针,则默认状态为 Success。
startupProbe: 指示容器中的应用是否已经启动。如果提供了启动探测(startup probe),则禁用所有其他探测,直到它成功为止。如果启动探测失败,kubelet 将杀死容器,容器服从其重启策略进行重启。如果容器没有提供启动探测,则默认状态为成功Success。

重启策略

PodSpec 中有一个 restartPolicy 字段,可能的值为 Always、OnFailure 和 Never。默认为 Always。

livenessProbe存活探测示例

编辑以下yaml文件:

[root@server1 manifest]# vim liveness.yaml
[root@server1 manifest]# cat liveness.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: liveness-http
spec:
  containers:
    - name: myapp
      image: ikubernetes/myapp:v1
      imagePullPolicy: IfNotPresent
      livenessProbe:
        tcpSocket:
          port: 8080
        initialDelaySeconds: 1
        periodSeconds: 3
        timeoutSeconds: 1

以上使用tcpsock检测容器8080端口,若liveness探针没有检测到8080端口则判定为不存活。由于我们运行的容器只暴露出来80端口,因此会检测失败。其中:

initialDelaySeconds: 1表示pod运行1s后检测状态。

periodSeconds: 3表示每3s检测一次。

timeoutSeconds: 1表示检测1s后即超时进行下次检测

之后运行并查看状态:

[root@server1 manifest]# kubectl create -f liveness.yaml 
pod/liveness-http created
[root@server1 manifest]# kubectl get pod
NAME            READY   STATUS    RESTARTS   AGE
liveness-http   1/1     Running   0          10s
[root@server1 manifest]# kubectl get pod
NAME            READY   STATUS             RESTARTS   AGE
liveness-http   0/1     CrashLoopBackOff   2          51s
[root@server1 manifest]# kubectl get pod
NAME            READY   STATUS    RESTARTS   AGE
liveness-http   1/1     Running   3          54s
[root@server1 manifest]# kubectl get pod
NAME            READY   STATUS    RESTARTS   AGE
liveness-http   1/1     Running   3          56s
[root@server1 manifest]# kubectl get pod
NAME            READY   STATUS    RESTARTS   AGE
liveness-http   1/1     Running   3          61s

可以看出检测失败一直在重启。

接下来我们将检测端口改为80端口再运行:

[root@server1 manifest]# kubectl delete -f liveness.yaml 

[root@server1 manifest]# vim liveness.yaml
[root@server1 manifest]# cat liveness.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: liveness-http
spec:
  containers:
    - name: myapp
      image: ikubernetes/myapp:v1
      imagePullPolicy: IfNotPresent
      livenessProbe:
        tcpSocket:
          port: 80
        initialDelaySeconds: 1
        periodSeconds: 3
        timeoutSeconds: 1

[root@server1 manifest]# kubectl create -f liveness.yaml 
pod/liveness-http created
[root@server1 manifest]# kubectl get pod
NAME            READY   STATUS    RESTARTS   AGE
liveness-http   1/1     Running   0          23s

可以看出启动成功,在运行状态。

实验后删除:

[root@server1 manifest]# kubectl delete -f liveness.yaml 

    

readinessProbe就绪检测示例:

编辑测试文件:

[root@server1 manifest]# vim reainess.yaml 
[root@server1 manifest]# cat reainess.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: readiness-http
spec:
  containers:
    - name: readiness
      image: nginx
      readinessProbe:
        httpGet:
          path: /test.html
          port: 80
        initialDelaySeconds: 1
        periodSeconds: 3
        timeoutSeconds: 1

以上使用httpGet的方式使用readinessProbe进行探测,表示在容器运行后检测test.html发布文件内容,若返回200到400之间的状态码则检测通过为READY状态,其他为不通过。

运行pod,并查看状态:

[root@server1 manifest]# kubectl create -f reainess.yaml 
pod/readiness-http created
[root@server1 manifest]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
readiness-http   0/1     Running   0          51s
[root@server1 manifest]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
readiness-http   0/1     Running   0          60s

可以看出是运行状态但是并不是READY状态,可以看出检测没有通过。

 [root@server1 manifest]# kubectl describe pod readiness-http

在这里插入图片描述查看日志:

[root@server1 manifest]# kubectl logs readiness-http

在这里插入图片描述
此时我们进入容器添加test.html发布文件:

[root@server1 manifest]# kubectl exec -it readiness-http -- sh
# echo redhat > /usr/share/nginx/html/test.html
# 

查看pod状态:

[root@server1 manifest]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
readiness-http   1/1     Running   0          2m37s

可以看出已经是READY状态了。

可以看出就绪探针的作用了,即指示容器是否准备好服务请求。

实验后删除:

[root@server1 manifest]# kubectl delete -f reainess.yaml 
kubernetes(k8s) :pod的生命周期&探针 文章目录1. pod的生命周期一、初始化容器二、init容器实验三、容器探测四、探针4.1 liveness测试,检测存活4.2 readiness探针测试,检测就绪4.3 就绪检测+存活检测并存 1. pod的生命周期 Pod 是 kubernetes 系统的基础单元,是由用户创建或部署的最小组件,也是 kubernetes 系统上运行容器化应用的资源对象。 Kubernetes 集群中其他资源对象都是为 pod 这个资源对象做支撑来实现 kubernetes 管理应用服务的目的。 Pod 可以包含多个容 阅读详情

相关推荐

Kubernetes Pod 是什么?

Kubernetes Pod是Kubernetes中最小的可部署计算单元,相当于一个&quot;逻辑主机&quot;,包含一个或多个紧密相关的容器。Pod内的容器共享网络、存储和主机名等资源。Pod的设计源于&quot;一个容器一个进程&quot;理念,允许将需要协同工作的容器组合管理。Pod通过YAML文件定义,包含容器、资源限制、探针等配置。通常不直接创建裸Pod,而是通过Deployment、StatefulSet等控制器管理Pod生命周期。最佳实践包括使用控制器、配置探针、设置资源限制等。理解Pod

guigenyi的专栏 1543

阿里云k8s出现大量Terminating和Init状态的pod

检查/var/log/messages日志发现报错:Jan 19 11:40:13 iZbp1cl iwssrsvZ kubelet: E0119 11:40:13.074936 4030 docker_sandbox.go:267] Failed to stop sandbox “62481fabdbfcf662du094bf9514fc631c5703a1f676skd17585651069ca09ed2084”: operation timeout: context deadline exceede.

at1358的博客 965

K8S—Pod详解

Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理Pod运行的StatefulSet和Deployment等控制器对象,用于暴露Pod应用的Service和Ingress对象,为Pod提供存储的PersistentVolume存储资源对象等。

qq_64441401的博客 3409

pod应用生命周期(init容器,容器探针)

init容器:检测功能测试 启动server1的harbor私有仓库: 编辑以下的文件,此文件表明在启动主容器之前,首先利用Init容器查看相关服务(在此设置为dns检测服务)有没有开启,服务开启的话,才会启动主容器: 以上0/1表明当前处于初始化状态,所以主容器虽然有pod应用,但是并没有启动 可以进入容器查看,发现dns服务解析不了,会一直进行init启动,所以导致主容器无法打...

weixin_44791884的博客 1366

【Kubernetes】Pod生命周期、初始化容器、主容器

Pod生命周期、初始化容器、主容器

Mr.ACO的专栏 1236

Linux - Hosts域名解析服务

vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 www.baidu.com...

⚡ 1574

【云原生】Kubernetes之 Pod hook(钩子)

Pod hook(钩子)是由 Kubernetes 管理的 kubelet 发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。可以同时为 Pod 中的所有容器都配置 hook。

运维那些事儿 1097

【云原生】kubernetes中pod的生命周期、探测钩子的实战应用案例解析

Pod 里面可以有一个或者多个容器,部署应用的容器可以称为主容器, 在创建Pod时候,Pod 中可以有一个或多个先于主容器启动的Init容器,这个init容器就可以成为初始化容器, 初始化容器一旦执行完,它从启动开始到初始化代码执行完就退出了,它不会一直存在, 所以在主容器启动之前执行初始化,初始化容器可以有多个,多个初始化容器是要串行执行的,先执行初始化容器1, 在执行初始化容器2等,等初始化容器执行完初始化就退出了,然后再执行主容器,主容器一退出,pod就结束了, 主容器退出的时间点就是pod的结束点,

景天科技苑 2万+

pod排错---- Pod 一直处于 ContainerCreating 或 Waiting 状态

Pod 配置错误 检查是否打包了正确的镜像 检查配置了正确的容器参数 挂载 Volume 失败 Pod 漂移没有正常解挂之前的磁盘 命中 K8S 挂载 configmap/secret 的 subpath 的 bug 最近发现如果 Pod 挂载了 configmap 或 secret, 如果后面修改了 configmap 或 secret 的内容,Pod 里的容器又原地重启了(比如存活检查失...

任我行的博客 6118

Outlook日历同步全攻略:Win10+安卓+iOS三端无缝衔接(附常见问题解决)

本文提供了一份详尽的Outlook日历同步指南,帮助用户在Windows 10、安卓和iOS三端实现无缝衔接。文章深入解析了Exchange ActiveSync等核心同步原理,并给出了从账户创建到各设备(特别是华为手机)的具体配置步骤、进阶管理技巧以及针对同步失败、事件重复等常见问题的实战解决方案,旨在彻底解决跨平台日程管理的痛点。

l3m4n的博客 554

Arduino程序设计(十四)舵机控制实验(SG90)

本文介绍SG90舵机控制原理及实验,主要内容有:1、介绍SG90舵机;2、舵机0°~180°来回转动;3、串口控制舵机转动固定角度。(1)舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。(2)舵机的转动角度为0~180°,其内部结构包括电机,控制电路和机械结构三部分。电机有三根线引出,分别接VCC、GNG和信号线。

Alice的博客 1万+

【Kubernetes 系列】 一文带你吃透 K8S 中Pod 的生命周期

在pod 中,生命周期主要分为三个状态,开始阶段,如果有容器启动,进入运行 状态,然后进入成功或者失败状态/。在 Pod 运行期间,kubelet 能够重启容器以处理一些失效场景。 在 Pod 内部,Kubernetes 跟踪不同容器的状态,并使 Pod 重新运行所采取的动作。在 Kubernetes 中,Pod 包含规定约束部分和实际状态部分。 Pod 对象的状态包含了一组 Pod 状况(Conditions)。Pod 在其生命周期中只会被调度一次。 一旦 P...

半身风雪 1226

MATLAB - Gazebo 联合仿真 —— 使用 UR10 机械臂检测和采摘水果

本示例演示如何在 Gazebo 物理模拟器中设置 Universal Robotics UR10 机械臂和仿真环境。您需要配置一个机器人从树上摘苹果的仿真环境。本示例演示如何利用这些工具箱,使用 Universal Robotics UR10 机械手模拟机器人检测并从树上摘取苹果。Robotics System Toolbox™ - 在 Simulink® 和 Gazebo 中对机械手进行建模、规划和模拟。Navigation Toolbox™ - 生成三维环境的占用图。

机器人控制与仿真应用 4183

深入解析K8s Pod生命周期与探针配置

摘要: Pod生命周期涵盖从创建到终止的全过程,包含init容器、探针检测和事件处理三大核心机制。init容器在主容器前执行初始化任务,支持多容器顺序执行。探针检测包括启动(startupProbe)、存活(livenessProbe)和就绪(readinessProbe)三种类型,分别通过TCP/HTTP/命令等方式监控容器状态。事件处理函数postStart和preStop分别在容器启动后和终止前执行特定操作。这些机制共同确保Pod的健康运行和有序管理,解决了服务依赖、慢启动检测等复杂场景问题。

2503_90661597的博客 1210

【C++PCL】点云文件读写

本文介绍 PCL 中 PCD 与 PLY 点云文件的读取、保存和字段检查,覆盖 PointXYZI、PointXYZRGB、ASCII、二进制及压缩二进制,并给出 C++11 实操代码与参数调试建议。

weixin_45196569的博客 42

RK3576 PCIE接口调试:基于RTL8111HS的网卡驱动移植

检查项方法电源电压复位时序检查设备树 reset-gpios链路速率设备识别lspci -vvv驱动加载。

小灰灰的博客 737

kubernetes—Pod容器的探针

探针是由 kubelet 对容器执行的定期诊断(pod中探针又分为三类): 存活探针(livenessProbe)探测容器是否运行正常。如果探测失败则kubelet杀掉容器(不是Pod),容器会根据重启策略决定是否重启 就绪探针(readinessProbe)探测Pod是否能够进入READY状态,并做好接收请求的准备。如果探测失败Pod则会进入NOTREADY状态(READY为0/1)并且从所关联的service资源的端点(endpoints)中踢出

ll945608651的博客 2750

Python 爬虫实战:在丁香医生抓取健康科普文章阅读量,普及健康知识

requests:用于发送 HTTP 请求,获取网页内容。或 lxml:用于解析 HTML 页面,提取目标数据。pandas:用于数据清洗和分析。matplotlib和seaborn:用于数据可视化。通过本项目,我们实现了以下目标:使用 Python 爬虫抓取丁香医生的健康科普文章阅读量。对数据进行清洗和分析,找出热门文章。通过可视化展示数据,并普及健康知识。

u014481728的博客 1567

【kubernetes】关于云原生之k8s集群中pod的容器资源限制和三种探针

三种探针存活探针(livenessProbe):探测Pod容器是否在正常运行。如果探测失败则kubelet杀掉容器,并根据容器重启策略决定是否重启容器就绪探针(readinessProbe):探测Pod是否进入就绪状态(ready状态栏是否100%比例),并做好接收service转发来的请求准备。如果探测失败则Pod变成未就绪状态(0/1 1/2),service就会删除相关联的Pod端点,并不再转发请求给处于未就绪状态的Pod。

liu_xueyin的博客 1884

【即插即用模块】Transformer篇 | CVPR 2025 | D2T:双域特征融合,完美适配缺陷检测/小目标检测和分割等频域细节敏感的任务!

本文提出了一种基于小波和原型增强的双域Transformer(WPFormer)用于像素级表面缺陷检测。该模型通过Dual-domain Transformer (D2T)模块融合频域和空间域特征:小波增强交叉注意力(WCA)分解高低频特征并加权平衡,增强缺陷细节捕捉;原型引导注意力(PCA)生成全局原型向量强化关键信息聚合。实验表明,该模块在缺陷检测任务中性能优于现有方法,通过频域细节增强和全局依赖建模有效提升了复杂场景下的检测效果。代码已开源,适用于对频域敏感的目标检测和分割任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1374

Unity最强动作战斗框架?Combat System Framework 深度解析

Combat System Framework 并不是一个简单的角色控制器,而是一套完整的动作游戏战斗开发框架。它借鉴了现代 AAA 游戏常见的架构思想,以 Gameplay Tag 为核心,结合 ScriptableObject 数据驱动设计,将技能、属性、Buff、伤害、武器、动画通知等系统有机整合在一起。同时,配套的可视化动画时间轴、Root Motion 工具和实时预览窗口,大幅优化了动作开发流程。当然,这套框架也有一定的学习门槛。

2403_88403568的博客 681

【kubernetes】k8s集群中pod的容器资源限制和三种探针

例如:在买硬盘的时候,操作系统报的数量要比产品标出或商家号称的小一些,主要原因是标出的是以 MB、GB为单位的,1GB 就是1,000,000,000Byte,而操作系统是以2进制为处理单位的,因此检查硬盘容量时是以MiB、GiB为单位,1GiB=2^30=1,073,741,824,相比较而言,1GiB要比1GB多出1,073,741,824-1,000,000,000=73,741,824Byte,所以检测实际结果要比标出的少一些。这里包含调度到node上的时间以及下载镜像的时间,会持续一小段时间。

zzzxxx520369的博客 1279

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【模块一】kubernetes容器编排进阶实战之pod生命周期、探针简介、类型及示例

pod的生命周期(pod lifecycle),从pod start时候可以配置postStart检测,运行过程中可以配置livenessProbe和 readinessProbe,最后在 stop前可以配置preStop操作探针是由 kubelet 对容器执行的定期诊断,以保证Pod的状态始终处于运行状态,要执行诊断,kubelet 调用由容器实现的Handler(处理程序),也成为Hook(钩子),有三种类型的处理程序:ExecAction #在容器内执行指定命令,如果命令退出时返回码为0则认为诊断成功

运维&陈同学的博客 1163

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

kubernetes之Pod 的生命周期

Pod 遵循预定义的生命周期,起始于Pending阶段, 如果至少其中有一个主要容器正常启动,则进入Running,之后取决于 Pod 中是否有容器以失败状态结束而进入Succeeded或者Failed阶段。和一个个独立的应用容器一样,Pod 也被认为是相对临时性(而不是长期存在)的实体。Pod 会被创建、赋予一个唯一的 ID(UID), 并被调度到节点,并在终止(根据重启策略)或删除之前一直运行在该节点。如果一个节点死掉了,调度到该节点的 Pod 也被计划在给定超时期限结束后删除。

weixin_44519337的博客 1599

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

K8S基本概念+pod生命周期+容器重启策略+Init容器和边车容器+pod探针+postStart和preStop

Pod可简单地理解为是一组、一个或多个容器,具有共享存储/网络及如何运行容器的规范。Pad包含一个或多个相对紧密耦合的应用程序容器,处于同一个Pod中的容器共享同样的存储空间(Volume,卷或存储卷)、IP地址和Port端口,容器之间使用localhost:port相互访问。根据Docker的构造,Pod可被建模为一组具有共享命令空间、卷、IP地址和Port端口的Docker容器。Pod包含的容器最好是一个容器只运行一个进程。

小五 1737

kubernetes(k8s)-pod生命周期

相位和状态让你能快速判断 Pod 的整体健康状况。重启策略定义了容器失败后的恢复行为。生命周期回调让你有机会在容器启动和关闭时执行自定义逻辑,实现优雅启停。容器探针是 Kubernetes 的“眼睛”,它通过存活探针确保应用实例的可用性,通过就绪探针确保流量的正确路由,通过启动探针保护慢启动应用。合理配置这些机制,是构建健壮、可观测、自愈的云原生应用的基础。

qq_28131747的博客 1444
上一篇: 企业实战--kubernetes(三)---资源清单方式创建pod
下一篇: 企业实战--kubernetes(五)---pod控制器
chihtung_hsu
博客等级 码龄7年 42粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值