存活探针 livenessprobe
杀死容器,重启。
就绪探针 readinessProbe
pod的状态是running
ready状态是notready
容器不可以提供正常的业务访问,就绪探针不会重启容器
tcpSocket只是监听荣亲上的业务端口能否正常通信。8081没有,8080还在,也就是正常的端口还是可以访问
如果更改了容器的启动端口,
mysql 3306 33066
tcp----->33066
*存活探针和就绪探针会伴随整个pod的生命周期*
启动探针 statrupProbe
如果启动失败,pod的状态是notready(0/1)
启动探针探测容器启动失败,会重启pod
启动探针没有成功之前,后续的探针都不会执行
启动探针成功之后,在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