• kubernetes之给容器的生命周期事件添加处理器


    简介

    此文讲述如何给容器的声明周期时间添加处理器,Kubernetes支持postStartpreStop事件。Kubernetes在容器启动之后立即发送postStart事件,在容器终止之前立即发送preStop事件。

    备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。

    定义 postStart 和 preStop 处理器

    创建一个包含一个容器的Pod,容器中有postStartpreStop事件。文件名:lifecycle-events.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: lifecycle-demo
    spec:
      containers:
      - name: lifecycle-demo-container
        image: nginx
        lifecycle:
          postStart:
            exec:
              command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
          preStop:
            exec:
              command: ["/bin/sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]
    

    在配置文件中,postStart命令写入一条message文件到容器的/usr/share/message目录。preStop命令平滑停止nginx。如果容器由于故障而终止,这将很有帮助。

    # kubectl apply -f /root/k8s-example/pods/lifecycle-events.yaml
    

    确认Pod中的容器正在运行

    # kubectl get pod lifecycle-demo
    
    NAME             READY   STATUS    RESTARTS   AGE
    lifecycle-demo   1/1     Running   0          26h
    

    进入容器的shell

    # kubectl exec -it lifecycle-demo -- /bin/bash
    

    在shell中确认postStart处理器创建的message文件存在

    root@lifecycle-demo:/#  cat /usr/share/message
    Hello from the postStart handler
    

    创建容器后,Kubernetes立即发送postStart事件。 但是,不能保证在调用Container的entrypoint之前先调用postStart处理程序。 postStart处理程序相对于Container的代码异步运行,但是Kubernetes对容器的管理会阻塞,直到postStart处理程序完成。 在postStart处理程序完成之前,容器的状态不会设置为RUNNING

  • 相关阅读:
    人月神话阅读笔记01
    梦断代码阅读笔记03
    构建之法阅读笔记03
    构建之法阅读笔记02
    个人课程总结
    第十六周进度总结
    计算最长英语单词链
    第十五周进度总结
    浪潮之巅阅读笔记03
    冲刺2-10
  • 原文地址:https://www.cnblogs.com/mcsiberiawolf/p/12227852.html
Copyright © 2020-2023  润新知