livenessprobe
存活探针:杀死容器,重启
readinessProbe
就绪探针,pod的状态是running ready状态是notready,容器不可以提供正常的业务访问,就绪探针不会重启容器
tcpSocket:只是监听容器上的业务端口能否正常通信,8081没有,8080还在,正常的端口还是可以访问的
如果更改了容器的启动端口:如果把MySQL 3306端口改成33066 用tcp检测33066
存活探针和就绪探针,会伴随整个pod的生命周期
就绪探针
apiVersion: v1
kind: Pod
metadata:
labels:
run: nginx1
name: nginx1
spec:
containers:
- image: tomcat:8.0.52
name: nginx1
readinessProbe:
httpGet:
scheme: HTTP
port: 8080
path: /index.jsp
initialDelaySeconds: 4
periodSeconds: 2
startupProbe:启动探针
如果探测失败,pod是notready,启动探针探测容器失败,会重启pod
启动探针没有成功之前,后续的探针都不会执行。
动探针成功之后,在pod的生命周期内不会在检测启动探针
启动探针成功之后,在pod的生命周期内不会在检测启动探针
重启了pod之后,相当于从新部署了个初始版的新的容器
1、在一个yaml文件中可以有多个探针,启动、存活、就绪都针对一个容器
2、启动探针的优先级是最高的,只有启动探针"成功",后续的探针才会执行。
3、启动探针成功之后,后续除非重启pod,不会触发启动探针了
4、在pod的生命周期当中,一直存在,一直探测的是存活探针和就绪探针
5、在pod的生命周期当中,后续的条件是满足哪个探针的条件发哪个探针的条件
6、就绪探针,如果不影响容器运行,status:running ,这个时候不会重启,一旦容器退出的话,就绪探针也会重启
容器启动和退出时的动作: 容器钩子
postStart:容器启动的钩子,容器启动之后触发的条件
preStop:容器退出的钩子,容器退出之后触发的条件
volumeMounts:
- name: test1
mountPath: /opt
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内的容器退出时,不论时一个还是两个容器退出。整个pod都会重启
Never:当pod内的容器退出时,退出一个还是退出N个,pod都不会重启
onFilure:当pod内的容器退出时,状态码0.整个po都不会重启,只有一个或者n个容器非正常退出状态码非0,整个pod才会重启
k8s就是集群化管理容器
现在要求
在这个pod的生命周期事件当中,把启动探针,存活探针和就绪探针加入到yaml文件当中。