首页 > 其他分享 >Kubernetes容器生命周期详解:PostStart和PreStop应用案例解析

Kubernetes容器生命周期详解:PostStart和PreStop应用案例解析

时间:2024-09-05 22:54:14浏览次数:11  
标签:容器 Kubernetes 启动 preStop 命令 PreStop command postStart PostStart

在这里插入图片描述

1. 容器启动命令:

  • 容器启动命令指在容器启动时需要执行的命令。通过设置ENTRYPOINTCMD,可以自定义容器启动时执行的进程。
  • 使用了一个简单的Dockerfile来设置ENTRYPOINT命令:
    FROM ubuntu
    ENTRYPOINT ["top", "-b"]
    
    • 该命令告诉容器启动时运行top命令,并且以-b选项进行批量模式展示进程信息。
  • 在Kubernetes中,可以通过containers.command参数来定义启动命令。该参数是一个列表,列表中的第一个元素为命令,后续为命令的参数。下面的YAML文件示例展示了如何使用command参数设置启动命令:
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      containers:
      - image: nginx:alpine
        name: container-0
        resources:
          limits:
            cpu: 100m
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        command:
        - top
        - "-b"
    
    • 在这个Pod配置文件中,command字段设置了容器启动时执行top -b命令。

2. 容器的生命周期:

  • 容器生命周期中的钩子函数(Hook)允许在容器的特定阶段执行自定义操作,常用的生命周期钩子包括:
    • PostStart(启动后处理): 容器启动后执行指定操作。
    • PreStop(停止前处理): 容器停止前执行指定操作。
  • 在实际配置中,可以通过lifecycle.postStartlifecycle.preStop来定义这些钩子函数,如下所示:
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      containers:
      - image: nginx:alpine
        name: container-0
        resources:
          limits:
            cpu: 100m
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        lifecycle:
          postStart:         # 容器启动后执行的脚本
            exec:
              command:
              - "/postStart.sh"
          preStop:           # 容器停止前执行的脚本
            exec:
              command:
              - "/preStop.sh"
    
    • postStart.sh 脚本在容器启动后执行,而 preStop.sh 脚本在容器停止前执行。可以用于在容器启动或停止时完成一些初始化或清理操作。

详细举例:

1. 容器启动命令实际应用:

  • 如果部署一个数据库服务的容器,比如MySQL数据库容器,可以使用ENTRYPOINT来运行MySQL服务启动前的准备工作,例如加载预定义数据或者配置文件。通过这种方式,保证容器启动时自动加载所需的内容,简化容器化服务的启动流程。
  • 举例:
    FROM mysql:5.7
    ENTRYPOINT ["mysqld", "--default-authentication-plugin=mysql_native_password"]
    
    • 在这个例子中,使用了官方的MySQL容器镜像,并通过ENTRYPOINT设置了启动MySQL服务时的认证插件参数。

2. 生命周期钩子的实际应用:

  • 设想一个Web服务器容器在启动时需要做一些环境变量的设置,或者在停止前需要保存某些日志文件。可以通过postStartpreStop来实现这些操作:
    lifecycle:
      postStart:
        exec:
          command:
          - "bash"
          - "-c"
          - "echo 'Initializing environment variables'; export ENV_VAR=value"
      preStop:
        exec:
          command:
          - "bash"
          - "-c"
          - "echo 'Saving logs before shutdown'; cp /var/log/app.log /backup/app.log"
    
    • 这里,postStart钩子用来初始化环境变量,而preStop则在停止前保存日志文件。

非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。


无论你是AI新手还是AI专家,学习最前沿的AI技术,AI创富俱乐部你值得拥有!

标签:容器,Kubernetes,启动,preStop,命令,PreStop,command,postStart,PostStart
From: https://blog.csdn.net/zgt_certificate/article/details/141942451

相关文章

  • D17 kubernetes Pod生命周期
    1、创建pod当创建一个pod时,它是通过多个组件来完成的假设通过kubeletrunnginx--image=ningx命令创建一个pod,其工作流程如下:1、kubectl向APIserver发起创建pod的请求,请求中包含pod的配置信息2、APIserver接收到请求后,校验字段合法性,例如格式、镜像地址不能为空等,校验通......
  • D14 kubernetes 容器服务质量和容器环境变量
    1、容器服务质量 服务质量(qualityofServices,QoS),是kubernetes用于对pod的进行优先级划分的一种机制。通过QoS,kubernetes将pod划分为3个等级。如下所示Guaranteed 优先级最高 pod中每个容器都被设置了CPU/内存的资源请求和资源限制,并且资源请求的值与资源限制的值相等Burstabl......
  • D16 kubernetes 容器生命周期回调
    1、简介容器生命周期回调是指在容器的生命周期中执行用户定义的操作。kubernetes支持以下生命周期回调PostStart(容器启动后):在容器启动后立即执行的回调,它可以用于执行一些初始化任务PreStop(容器停止前):在容器停止之前执行的回调。它可以用于执行清理或保存状态的操作......
  • D15 kubernetes 初始化容器(initContainers)
    初始化容器(initContainers)是Pod中一种特殊类型的容器,专用于在主容器启动之前执行一些初始化任务和操作,以满足主容器所需的环境。 初始化容器在整个pod的生命周期内仅运行一次,并且在主容器启动之前完成它们的任务,既初始化容器一旦任务完成,就必须退出。初始化容器有以下应用场......
  • Kubernetes学习指南:保姆级实操手册06——部署kubernetes集群
    Kubernetes学习指南:保姆级实操手册06——部署kubernetes集群1、配置YUM源###在所有Master节点执行#配置yum源cat>/etc/yum.repos.d/kubernetes.repo<<EOF[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x8......
  • 最新版Kubernetes部署教程v1.31.0
    最新版Kubernetes高可用部署教程v1.31.0系统:Almalinux9架构:192.168.100.10control-plane-endpoint.k8s.localcontrol-plane-endpoint#负载均衡服务器,配置负载均衡后修改ip后续会讲解192.168.100.10masterA.k8s.localmasterA192.168.100.20masterB.k8s.localma......
  • Kubernetes学习指南:保姆级实操手册04——主机系统初始化
    四、Kubernetes学习指南:保姆级实操手册04——主机系统初始化前言:本章节主要内容是对主机操作系统的初始化操作,如发另外标注,所有的节点操作步骤一致,可以使用软件批量初始化。1.检查系统端口确保以下端口未被占用:运行后未有任务显示,表示端口未被占用。[root@k8s-master01~]#ss-......
  • Kubernetes学习指南:保姆级实操手册05——配置集群HA负载均衡
    五、Kubernetes学习指南:保姆级实操手册05——配置集群HA负载均衡简介:Keepalived提供VRRP实现,并允许您配置Linux机器使负载均衡,预防单点故障。HAProxy提供可靠、高性能的负载均衡,能与Keepalived完美配合1、配置Keepalive官方文档提供了两种运行方式(此案例使用选项1):选项1:在......
  • Kubernetes从零到精通(03-资源对象)
    资源对象的种类今天我们开始研究Kubernetes中的资源对象,资源对象是Kubernetes这个软件定义的抽象逻辑概念,这些资源对象及其对应的属性(如资源对象之间的对应关系),都会保存到ectd数据库中并通过Kubernetes各控制组件实时更新,下面我们先看一下资源对象的分类和用途,然后再根据一个......
  • kubernetes初始化集群时报错
    报错:kubernetes初始化端口占用及文件存在(本人是之前初始化过一次)[root@master~]#kubeadminit--apiserver-advertise-address=192.168.20.200--image-repository=registry.aliyuncs.com/google_containers--kubernetes-version=v1.28.0--pod-network-cidr=10.244.0.0/16--......