文章目录
1、pod重启策略
-
restartPolicy的值一共有三个
-
Always 默认是这个,容器退出的话,就一直重启
-
Never 容器退出后,永远不重启容器
-
OnFailure 容器以非正常的方式退出容器后自动重新启动容器
2、存活探针
1、作用
- 监听容器是否正常running的状态,如果容器不是健康的状态的话,kubelet就会根据重启策略判断,pod是否要重启操作
2、使用方式
-
execaction的方式,在容器中执行指定的命令,执行成功,退出码为0即可
-
httpgetaction 通过容器的ip地址,端口号和路径调用http Get方法,相应的状态码大于等于200小于400的话,则认为容器健康
-
tcpsocketaction 通过容器ip地址和端口执行tcp检查,如果能建立tcp检查,则表示容器健康
3、返回的结果
-
success,表示通过了检查
-
failure 表示未通过检查
-
unknown 表示检查没有正常运行
4、精确的字段
- 这些字段探针都是通用的,下面的几个探针就重复赘述了
initialDelaySeconds # 容器启动后等待等待多少秒后探针开始工作,默认0秒
periodSeconds # 每个执行探测时间的间隔,默认是10S,最小值是1
timeoutSeconds # 探针执行检查请求后,等待响应的超时时间,默认是1s
successThreshold # 探针检查失败后认为成功的最小连接次数,默认1S,在liveness探针中,必须为1s,连接成功1次,就认为这个是成功,如果大于1的话,就会多成功连接几次,延迟恢复过程,通过了一次检查,就成功了,没有必要再次检测了
failureThreshold # 探针失败的重试次数,重试次数到达了一定数量后,就被认定为失败,默认是3S
5、操作
1、httpGet方式
- 使用httpGET方式获取到页面的信息,有一个状态码,200到400的话就是健康的
[root@master mnt]# cat nginx.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
containers:
- image: docker.io/library/nginx:latest
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
livenessProbe:
initialDelaySeconds: 20
httpGet:
scheme: HTTP
port: 80
path: /
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
2、exec
- 就是执行一些命令即可
3、tcpSocket
[root@master mnt]# cat nginx.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
containers:
- image: docker.io/library/nginx:latest
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
livenessProbe:
initialDelaySeconds: 1
tcpSocket:
port: 80
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
3、就绪探针(readinessProbe)
-
虽然容器是运行了,但是容器里面的业务还没有启动,就会导致这个pod虽然正常运行了,但是访问的页面还是404,这个时候就需要就绪探针了
-
然后就是如果失败的话,对应的service中的endpoints就不会关联这些pod了,移除去后,请求的流量就不会访问了
1、操作与上面一致的不赘述了
3、startupProbe探针
-
在k8s1.16中增加了这个探针
-
如果三个探针同时存在话,其他2个探针先会被禁用,直到pod满足startupprobe探针配置的条件,其他2个探针启动,如果不满足的话,按照规则重启容器
-
这个探针只是在容器启动后按照配置满足一次后,不在进行后续的探测,只需要一次即可,其他2个探针在整个生命的周期中会一致进行检测的,
-
操作与上面一致的
4、pod生命周期
- 就是说在pod启动之前先做什么,然后pod死亡时做什么,这些操作等等
1、postStart
- 就是Pod启动之前做了哪些操作,这个操作不完成的话,pod启动不了
2、preStop
- 就是pod失败之后,会做哪些操作