K8s之Pod生命周期、启动停止钩子

这篇具有很好参考价值的文章主要介绍了K8s之Pod生命周期、启动停止钩子。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Pod生命周期流程

Pod生命周期整个过程 如下图:

K8s之Pod生命周期、启动停止钩子

1、在启动任何容器之前,前创建 pause 容器,它初始化Pod的环境并为后续加入的容器提供共享名称空间。

2、初始化容器(initContainers):一个Pod可以定义任意个初始化容器,如上图就定义了两个初始化容器,初始化会按照YAML清单中顺序执行,当最后一个初始化容器执行成功后,才会去启动主容器。

3、启动钩子(postStart):容器启动后执行的一些操作。

4、容器探测:

  • 启动探测(Startupprobe):探测容器是否正常运行。
  • 存活探测(Livenessprobe):探测容器是否处于Running 状态,如果不是根据重启策略进行响应操作。
  • 就绪探测(Readinessprobe):探测容器是否就绪对外提供服务。

5、停止钩子(preStop):容器关闭前执行的一些操作

二、初始化容器-initContainers

初始化容器官方参考文档:

初始化容器指,在启动主容器前的一些操作,使用 pod.spec.initContainers 来定义初始化容器,可以定义多个初始化容器,会按照顺序一次执行,执行完成后依次关闭初始化容器。当所有初始化容器执行完成且正常关闭后,才会去启动主容器。

实例:定义Pod资源,创建两个初始化容器,初始化容器执行 sleep 2,也就是说我们要等定义的两个初始化容器都睡眠2秒后,才创建主容器

cat pod-init.yaml 

---
apiVersion: v1
kind: Pod
metadata:
  name: init-pod
  labels:
    env: uat
spec:
  initContainers:
  - name: init-1
    image: busybox:1.28
    imagePullPolicy: IfNotPresent
    command: ["sh", "-c", "sleep 2"]

  - name: init-2
    image: busybox:1.28
    imagePullPolicy: IfNotPresent
    command: ["sh", "-c", "sleep 2"]

  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent

执行YAML文件 && 实时观察Pod状态:

kubectl apply -f pod-init.yaml
kubectl get pods init-pod -w

K8s之Pod生命周期、启动停止钩子

三、主容器操作-containers

查看帮助命令:

kubectl explain pod.spec.containers.lifecycle.preStop

参数:

  • exec:执行命令
  • httpGet:向容器IP地址的某指定端口的path发起HTTP GET请求
  • tcpSocket:在容器启动前等待一个TCP端口打开

1、启动钩子-lifecycle.postStart

该钩子创建容器后立即被执行,如果执行失败,则会根据重启测试判断是否重启,这个钩子不需要传递任何参数。

实例:定义Pod启动钩子,容器运行后记录容器运行时间

cat pod-1.yaml 

---
apiVersion: v1
kind: Pod
metadata:
  name: nginx-1
  namespace: default
  labels:
    env: uat
    app: nginx
spec:
  containers:
  - name: nginx-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ['/bin/bash', '-c', 'echo "Start Time: $(date +%F)" > /root/time.txt']

执行YAML文件:

kubectl apply -f pod-1.yaml

进入容器,查看容器启动时间

kubectl exec -it nginx-1 -- /bin/bash

# cat /root/time.txt
Start Time: 2023-05-21

2、停止钩子-lifecycle.preStop

容器停止前执行操作,比如容器停止前发送信号告诉监控系统此Pod将要停止等。

实例:创建Pod定义停止钩子,在容器停止前,优雅的关闭容器内服务

cat pod-2.yaml 

---
apiVersion: v1
kind: Pod
metadata:
  name: nginx-2
  namespace: default
  labels:
    env: uat
    app: nginx
spec:
  containers:
  - name: nginx-container
    image: nginx
    lifecycle:
      preStop:
        exec:
          command: ['/bin/bash', '-c', 'nginx -s stop']

执行YAML清单:文章来源地址https://www.toymoban.com/news/detail-454433.html

kubectl apply -f pod-2.yaml

到了这里,关于K8s之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日
    浏览(41)
  • 飞天使-k8s知识点18-kubernetes实操3-pod的生命周期

    探针的生命周期 docker 创建:在创建阶段,你需要选择一个镜像来运行你的应用。这个镜像可以是公开的,如 Docker Hub 上的镜像,也可以是你自己创建的自定义镜像。创建自己的镜像通常需要编写一个 Dockerfile,这个文件定义了创建镜像所需的所有步骤,包括基础镜像、需要安

    2024年02月20日
    浏览(59)
  • 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日
    浏览(52)
  • 【k8s】Pod 的钩子

    Kubernetes(K8s)中的 Pod 可以使用以下几种勾子(钩子)来执行在容器生命周期的不同阶段运行的操作: PostStart (启动后):该勾子在容器启动之后立即运行。它可以用于在容器内执行一些初始化任务、启动服务或设置环境。例如,进行一些文件操作、加载配置文件或注册服

    2024年02月07日
    浏览(47)
  • 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中Contrainer 生命周期回调/策略/指针学习

    个人主页: 征服bug-CSDN博客 kubernetes专栏: kubernetes_征服bug的博客-CSDN博客  目录 1 容器生命周期 2 容器生命周期回调/事件/钩子 3 容器重启策略 4 自定义容器启动命令 5 容器探针 1 容器生命周期 Kubernetes 会跟踪 Pod 中每个容器的状态,就像它跟踪 Pod 总体上的阶段一样。 你可

    2024年02月14日
    浏览(44)
  • k8s 启动和删除pod

    流程图 运维人员向kube-apiserver发出指令(我想干什么,我期望事情是什么状态) api响应命令,通过一系列认证授权,把pod数据存储到etcd,创建deployment资源并初始化。(期望状态) controller通过list-watch机制,监听api server读取etcd,发现新的deployment,将该资源加入到内部工作队列,发现该

    2024年02月10日
    浏览(52)
  • k8s pod 无法启动一直ContainerCreating

    查看详细信息如下 Failed to create pod sandbox: rpc error: code = Unknown desc = [failed to set up sandbox container “334d991a478b9640c66c67b46305122d7f0eefc98b2b4e671301f1981d9b9bc6” network for pod “yupay-vip-5c4bb7db5c-s6m52”: networkPlugin cni failed to set up pod “yupay-vip-5c4bb7db5c-s6m52_yupay” network: error getting ClusterInforma

    2024年04月28日
    浏览(39)
  • k8s deployment创建pod流程图

    k8s 创建pod和deployment的流程 - SoulChild随笔记

    2024年02月11日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包