您的位置 首页 k8s

定义Pod的生命周期 lifecycle以及(Pod的优雅的终止)

定义Pod的生命周期 lifecycle以及(Pod的优雅的终止)、

postStart是高于startupProbe。

 

面试题1: Pod创建流程及生命周期?
- 创建Pod
- 完成Pod调度流程
- initContainer
- 容器启动并执行postStart
- livessProbe
- 进入Running状态
- readinessProbe
- service关联Pod
- 接收客户端请求

cat 29-pods-lifecycle-postStart-preStop.yaml

apiVersion: v1
kind: Pod
metadata:
  name: baimei-pod-containers-lifecycle-001
spec:
  volumes:
  - name: data
    hostPath:
      path: /baimei-dashu
  # 在pod优雅终止时,定义延迟发送kill信号的时间,此时间可用于pod处理完未处理的请求等状况。
  # 默认单位是秒,若不设置默认值为30s。
  terminationGracePeriodSeconds: 60
  # terminationGracePeriodSeconds: 5
  containers:
  - name: myweb
    image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine
    volumeMounts:
    - name: data
      mountPath: /data
    # 定义Pod的生命周期。
    lifecycle:
      # Pod启动之后做的事情,若该步骤未完成,创建容器时一直处于"ContainerCreating"状态,此时无法访问业务。
      # 换句话说,若此节点为执行成功,是不会分配IP地址的哟~对于比较复杂的动作,建议放在initContianers中执行。
      postStart:
        exec:
          command: 
          - "/bin/sh"
          - "-c"
          # - "echo \"postStart at $(date +%F_%T)\" >> /data/postStart.log"
          - "sleep 30"
      # Pod停止之前做的事情
      preStop:
        exec:
         command: 
         - "/bin/sh"
         - "-c"
         - "echo \"preStop at $(date +%F_%T)\" >> /data/preStop.log"
         # - "sleep 30"

 

 

 

烧脑版本:

cat 29-pods-lifecycle-postStart-preStop.yaml

 

apiVersion: v1
kind: Pod
metadata:
  name: baimei-pod-containers-lifecycle-002
spec:
  volumes:
  - name: data
    hostPath:
      path: /baimei-dashu
  # 在pod优雅终止时,定义延迟发送kill信号的时间,此时间可用于pod处理完未处理的请求等状况。
  # 默认单位是秒,若不设置默认值为30s。
  terminationGracePeriodSeconds: 60
  # terminationGracePeriodSeconds: 5
  initContainers:
  - name: init
    image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine
    command:
     - sleep
     - "10"
  containers:
  - name: myweb
    image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine
    volumeMounts:
    - name: data
      mountPath: /data
    # 定义Pod的生命周期。
    lifecycle:
      # Pod启动之后做的事情,若该步骤未完成,创建容器时一直处于"ContainerCreating"状态,此时无法访问业务。
      # 换句话说,若此节点为执行成功,是不会分配IP地址的哟~对于比较复杂的动作,建议放在initContianers中执行。
          # 值得注意的是,postStart是高于startupProbe。
      postStart:
        exec:
          command: 
          - "/bin/sh"
          - "-c"
          # - "echo \"postStart at $(date +%F_%T)\" >> /data/postStart.log"
          - "sleep 30"
      # Pod停止之前做的事情
      preStop:
        exec:
         command: 
         - "/bin/sh"
         - "-c"
         - "echo \"preStop at $(date +%F_%T)\" >> /data/preStop.log"
         # - "sleep 30"
    livenessProbe:
      httpGet:
        port: 80
        path: /dashu.html
      failureThreshold: 3
      initialDelaySeconds: 10
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 1
    readinessProbe:
      httpGet:
        port: 80
        path: /baimei.html
      failureThreshold: 3
      initialDelaySeconds: 20
      periodSeconds: 1
      successThreshold: 1
      timeoutSeconds: 1
    startupProbe:
      httpGet:
        port: 80
        path: /start.html
      failureThreshold: 3
      initialDelaySeconds: 5
      periodSeconds: 1
      successThreshold: 1
      timeoutSeconds: 1

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章