16、k8s-pod的生命周期-主容器-钩子函数(postStart-容器启动时执行、perStop-容器暂停前执行)命令

 

概念:kubernetes再主容器的启动之后核停止之前提供了两个钩子函数:

  ·post start:容器创建之后执行、如果失败了会重启容器

  ·per stop:容器终止之前执行、执行完成之后容器将成功终止、在其完成之前会堵塞删除容器的操作

钩子处理 器支持使用下面三种方式定义动作:

  ·Exec命令:在容器内执行一次命令

.....
    lifecycle:
      postStart:    #容器启动后
        exec:      #容器启动后会执行一个命令
            command:  #需要执行的指令
            -  cat
            -  /tmp/healthy
.....

=========================实例==============================
1、创建yaml文件:vim pod-exec.yaml
=====================================================

apiVersion: v1
kind: Pod
metadata:
 name: pod-hook-exec
 namespace: dev
spec:
 containers:
 - name: main-container
   image: nginx:1.17.1
   ports:
   - name: nginx-port
     containerPort: 80
   lifecycle:
    postStart:
     exec:        #在容器启动的时候执行一个命令、修改掉nginx默认首页的内容
      command: ["/bin/sh", "-c", "echo postStart... > /usr/share/nginx/html/index.html"]
    preStop:
     exec:      #在容器停止之前停止nginx服务
      command: ["/usr/sbin/nginx","-s","quit"]

===========================================================================================

2、执行文件:kubectl create -f pod-exec.yaml

3、查看pod的ip:kubectl get pods pod-hook-exec -ndev -o wide

 

4、访问容器中的nginx服务:curl 10.244.1.60:80

 

 

  ·TCPSocket:再当前容器尝试访问指定的socket(不常用)

.....
    lifecycle:
        postStart:
            tcpSocket:
                port: 8080
....

  ·HTTPGet:再当前容器中向某个url发起http请求(不常用)

.......
    lifecycle:
        postStart:
            httpGet:
                path: /    #URI地址
                port: 80    #端口号
                host: 192.168.177.160    #主机ip
                scheme: HTTP    #支持的协议,http或者https
.........

 

posted @ 2024-07-01 00:11  little小新  阅读(91)  评论(0编辑  收藏  举报