就绪探针&存活探针&钩子

存活探针 livenessprobe

杀死容器,重启。

就绪探针 readinessProbe

pod的状态是running

ready状态是notready

容器不可以提供正常的业务访问,就绪探针不会重启容器

tcpSocket只是监听荣亲上的业务端口能否正常通信。8081没有,8080还在,也就是正常的端口还是可以访问

如果更改了容器的启动端口,

mysql 3306 33066

tcp----->33066

*存活探针和就绪探针会伴随整个pod的生命周期*

启动探针 statrupProbe

如果启动失败,pod的状态是notready(0/1)

启动探针探测容器启动失败,会重启pod

启动探针没有成功之前,后续的探针都不会执行

就绪探针&存活探针&钩子_第1张图片

启动探针成功之后,在pod的生命周期内不会再检测启动探针

重启了pod之后,相当于重新部署了一个初始版的新的容器

重启的还是pod

总结:

1、在一个yml文件中可以有多个探针。启动、存活、就绪都针对一个容器

2、启动探针的优先级是最高的。只有启动探针成功,后续的探针才会执行

3、启动探针成功之后,后续除非重启pod,否则不会再触发启动探针

4、在pod的生命周期中,一直存在,一直探测的是存活探针和就绪探针

5、在pod的生命周期当中,后续的条件满足哪个探针的条件,触发哪个探针的条件

6、就绪探针,如果不影响容器运行,status;runing,这个时候不会重启,但是,容器退出的话,就绪探针也会重启。

容器启动和退出时的动作:

postStart 容器启动钩子

容器启动之后触发的条件

preStop 容器退出钩子

容器退出之后触发的条件

volumeMounts:

      - name: test1

        mountPath: /opt

        readOnly: false

      lifecycle:

        postStart:

          exec:

            command: ["/bin/bash","-c","echo hello >> /opt/123.txt ; sleep 10"]

        prestop:

          exec:

            command: ["/bin/bash", "-c","echo hi >> /opt/123.txt"]

声明容器内部的挂载目录

要给这个挂载卷取名字,不同的挂载卷的名字不能重复

readonly: false: 可读写

 volumes:

    - name: test1

      hostPath:

        path: /opt/test

        type: DirectoryOrCreate

声明的是node节点上和容器内的/opt的挂载目录

挂载卷的名称和要挂载卷的容器内挂载卷名称要一一对应

hostPath:指定和容器的挂载目录

type: DirectoryOrCreate: 如果节点上的目录不存在,自动创建该目录

#pod会经常被重启或者销毁。一旦容器和node节点做了挂载卷,数据不会丢失

启动和退出的作用:

1、启动可以自定义配置容器的内的环境变量

2、通知机制,告诉用户容器启动完毕

3、退出时,可以执行自定义命令,删除或者生成一些必要的程序,自定义销毁方式以及自定义资源回收方式以及容器的退出等待时间

pod重启策略:在K8S中,都是重启pod

Always(默认策略)  当pod内的容器退出,不论一个还是n个容器退出,整个pod都会重启

Never   当pod内的容器退出,不论一个还是n个容器退出,整个pod都不会重启

onFailure   当pod内的容器退出,状态码是0,不论一个还是两个容器退出,整个pod都不会重启。只有一个或者n个容器非正常退出,状态码非0,整个pod才会重启

K8S就是集群化管理容器。K8S管理对象是封装容器的pod

pod和容器到底是什么

cd /opt

ls

vim 11.yml

apiVersion: v1

kind: Pod

metadata:

  name: nginx2

spec:

  containers:

    - name: nginx2

      image: centos:7

      command: ["bin/bash","-c","sleep 3600"]

      volumeMounts:

      - name: test1

        mountPath: /opt

        readOnly: false

      lifecycle:

        postStart:

          exec:

            command: ["/bin/bash","-c","echo hello >> /opt/123.txt ; sleep 10"]

        preStop:

          exec:

            command: ["/bin/bash", "-c","echo hi >> /opt/123.txt"]

  volumes:

    - name: test1

      hostPath:

        path: /opt/test

        type: DirectoryOrCreate

:wq!

kubectl apply -f 11.yml

kubectl get pod

kubectl get pod -o wide

kubectl describe pod nginx2

你可能感兴趣的:(kubernetes)