K8s: 关于Kubernetes中的Pod的生命周期(状态)以及生命周期的钩子函数处理

这篇具有很好参考价值的文章主要介绍了K8s: 关于Kubernetes中的Pod的生命周期(状态)以及生命周期的钩子函数处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pod 的生命周期


1 ) pod 几种常用状态

  • 1.1 )Pending(挂起)
    • Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行
    • 此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间。
  • 1.2 )Running(运行中)
    • Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建
    • 至少有一个容器仍在运行,或者正处于启动或重启状态
  • 1.3 )Succeeded(成功)
    • Pod 中的所有容器都已成功终止,并且不会再重启
  • 1.4 )Failed(失败)
    • Pod 中的所有容器都已终止,并且至少有一个容器是因为失败终止
    • 也就是说,容器以非 0 状态退出或者被系统终止。
  • 1.5 )Unknown(未知)
    • 因为某些原因无法取得 Pod 的状态
    • 这种情况通常是因为与 Pod 所在主机通信失败

2 )pod内部的容器相应的状态

  • 一旦调度器将 Pod 分派给某个节点,kubelet 就通过容器运行时开始为 Pod 创建容器
  • 容器的状态有三种:Waiting(等待)、Running(运行中)和 Terminated(已终止)
  • $ kubectl describe pod <pod 名称>
  • 2.1 ) Creating (创建中):
    • 容器镜像正在被拉取,并且容器正在被创建
    • 这是Pod状态从Pending过渡到Running之前的一个暂态
  • 2.2 ) Running(运行中)
    • Running 状态表明容器正在执行状态并且没有问题发生
    • 如果配置了 postStart 回调,那么该回调已经执行完成
    • 如果你使用 kubectl 来查询包含 Running 状态的容器的 Pod 时
    • 你也会看到 关于容器进入 Running 状态的信息
  • 2.3 ) Terminating (终止中)
    • 容器正在被终止,这通常发生在Pod被删除或缩容时
  • 2.4 ) Terminated(已终止)
    • 处于 Terminated 状态的容器已经开始执行并且或者正常结束或者因为某些原因失败
    • 如果你使用kubectl 来查询包含 Terminated 状态的容器的 Pod 时
    • 你会看到 容器进入此状态的原因、退出代码以及容器执行期间的起止时间
  • 2.5 ) Waiting (等待)
    • 如果容器并不处在 Running 或 Terminated 状态之一,它就处在 Waiting 状态
    • 处于 Waiting 状态的容器仍在运行它完成启动所需要的操作
    • 例如,从某个容器镜像 仓库拉取容器镜像,或者向容器应用 Secret 数据等等
    • 当你使用 kubectl 来查询包含 Waiting 状态的容器的 Pod 时,你也会看到一个 Reason 字段,其中给出了容器处于等待状态的原因
  • 2.6 ) Exited(已退出)
    • 容器中的进程已经正常或异常终止,并且不再运行。这可能是由于程序执行完毕或遇到错误而退出
  • 2.7 ) Restarting (重启中)
    • 容器正在尝试重新启动,这通常是因为容器之前异常退出
    • 并且根据Pod的配置进行了自动重启

Pod 生命周期的钩子函数

  • 在Pod配置文件中,定义 postStart 和 preStop 处理函数

  • 创建一个包含一个容器的 Pod,该容器为 postStart 和 preStop 事件提供对应的处理函数

  • 创建一个 pod, 新建一个 lifecycle-demo.yaml 文件

    apiVersion: v1
    kind: Pod
    metadata:
     name: lifecycle-demo
     labels:
       name: lifecycle-demo
    spec:
     containers:
     - name: lifecycle-demo-container
       image: nginx
       lifecycle:
         postStart:
           exec:
             command: ["sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
         preStop:
           exec:
             command: ["sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]
       resources:
         limits:
           memory: "128Mi"
           cpu: "500m"
       ports:
        - containerPort: 80
    
  • $ kubectl create -f lifecycle-demo.yaml

    pod/lifecycle-demo created
    
  • $ kubectl get po

    NAME             READY   STATUS              RESTARTS   AGE
    lifecycle-demo   0/1     ContainerCreating   0          8
    
  • $ kubectl exec -it lifecycle-demo -- sh 进入pod

  • $ cat /usr/share/message 查看文件是否被写入内容

    Hello from the postStart handler
    
  • 在上述配置文件中,可以看到 postStart 命令在容器的 /usr/share 目录下写入文件 message

  • 命令 preStop 负责优雅地终止 nginx 服务

  • 当因为失效而导致容器终止时,这一处理方式很有用文章来源地址https://www.toymoban.com/news/detail-855517.html

到了这里,关于K8s: 关于Kubernetes中的Pod的生命周期(状态)以及生命周期的钩子函数处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】深入掌握k8s中Pod和生命周期

        个人主页: 征服bug-CSDN博客 kubernetes专栏: kubernetes_征服bug的博客-CSDN博客  1 什么是 Pod 2 Pod 基本操作 3 Pod 运行多个容器 4 Pod 的 Labels(标签) 5 Pod 的生命周期 1 什么是 Pod 摘取官网: Pod | Kubernetes 1.1 简介         Pod 是可以在 Kubernetes 中 创建和管理的、最小的可部署的计

    2024年02月14日
    浏览(42)
  • K8s(四)Pod资源——pod生命周期、重启策略、容器钩子与容器探测

    目录 Pod生命周期 Pod重启策略 初始化容器 容器钩子 容器探测 启动探测 存活探测 就绪探测 参考资料 Pod 的生命周期 | Kubernetes Init 容器 | Kubernetes Pod的生命周期可以分为以下几个阶段: Pending(等待):在这个阶段,Pod被创建,并且正在等待被调度到一个节点上运行。此时,

    2024年01月20日
    浏览(48)
  • 【Kubernetes】K8s 查看 Pod 的状态

    NAME :Pod 的名称。 READY :代表 Pod 里面有几个容器,前面是启动的,后面是总数, 1 / 1 1/1 1/1 。 STATUS :就是当前 Pod 状态,最常见的就是 Running 正在运行,最期望的状态,只要不是 Running 的就说明有问题,就算是 Running 的就不一定没有问题。 状态 说明 Pending 挂起 在执行创建

    2024年01月15日
    浏览(96)
  • K8s Pod亲和性、污点、容忍度、生命周期与健康探测详解(下)

    🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 五、健康探测 1、健康探测的概念 2、Pod启动探测(Startup Probe) 3、Pod存活探测(Liveness Probe) 4、Pod就绪探测(Readiness Probe) 5、Pod健康探测在故障转移与

    2024年04月08日
    浏览(49)
  • K8S基本概念+pod生命周期+容器重启策略+Init容器和边车容器+pod探针+postStart和preStop

    Kubernetes是谷歌以Borg为前身,基于谷歌15年生产环境经验的基础上开源的一个项目,Kubernetes致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台。 kube-APIServer:集群的控制中枢,各个模块之间信息交互都需要经过Kube-APIServer,同时它也是集群管理、资

    2024年04月15日
    浏览(53)
  • k8s-kubectl命令详解、Pod创建过程、Pod的生命周期、定制Pod、资源对象文件

    kubectl是用于管理Kubernetes集群的命令行工具 kubectl [command] [TYPE] [NAME] [flags] command:子命令,如create,get,describe,delete type:资源类型,可以表示为单数,复数或缩写形式 name:资源的名称,如果省略,则显示所有资源信息 flags:指定可选标志,或附加的参数 子命令 说明 help

    2024年03月22日
    浏览(43)
  • k8s Pod状态详解

    在 Kubernetes 中,Pod 是最小的可部署的计算单元,它是一组容器的集合,共享同一个网络命名空间、存储卷等资源。 Kubernetes 中的 Pod 有以下几种状态: Pending(挂起) :Pod 已经被 Kubernetes API 接受,但它的容器镜像还没有被拉取,或者 Pod 所需的节点资源(CPU、内存等)还没有满足

    2024年02月15日
    浏览(50)
  • K8s Pod状态与容器探针

    Pod创建过程如上图所示,首先用户向apiserver发送创建pod的请求,apiserver收到用于创建pod请求后,对应会对该用户身份信息进行验证,该用户是否是合法的用户,是否具有创建pod的权限,如果能够通过apiserver的验证,则进行下一步,对用户提交的资源进行准入控制,所谓准入控

    2024年02月07日
    浏览(92)
  • k8s关于pod

      目录 1、POD 的创建流程 kubectl 发起创建 Pod 请求: API Server 接收请求并处理: 写入 Etcd 数据库: Kubelet 监听并创建 Pod: Pod 状态更新和汇报: 2、POD 的状态解析 1. Pending Pod 2. Running Pod 3. Succeeded Pod 4. Failed Pod 5. Unknown 6. CrashLoopBackOff 7. ImagePullBackOff Pod 8. Terminating 9. Evicted 10.

    2024年03月18日
    浏览(50)
  • k8s 大量 pod 处于 ContainerStatusUnknown 状态

    如图所示,nexus 正常运行,但产生了大量的状态不明的 pod,原因也无从所知 解决办法,删除多余的 pod,一个一个删除,非常费劲 获取 namespace 中状态为 ContainerStatusUnknown 的 pod,并删除 获取所有非 Running 状态下的 pod,并删除

    2024年02月07日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包