容器检查和恢复机制
- 容器检查和恢复机制
- 命令模式探针
- http get方式探针
- POD 的恢复策略
容器检查和恢复机制
在kubernetes中,可以为容器定义一个健康探针,kubelet 就会根据这个 Probe 的返回值决定这个容器的状态,而不是直接以容器是否运行(来自 Docker 返回的信息)作为依据。这种机制,是生产环境中保证应用健康存活的重要手段。
存活检查(启动时候)和就绪检查(启动后)
三种探针方式,命令行,http发送请求,探测端口
命令模式探针
vim test-liveness-exec.yaml
---
apiVersion: v1
kind: Pod
metadata:labels:test: livenessname: test-liveness-exec
spec:containers:- name: livenessimage: daocloud.io/library/nginxargs:- /bin/sh- -c - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 50livenessProbe: #探针,健康检查exec: #类型command: #命令- cat - /tmp/healthyinitialDelaySeconds: 5 #健康检查,在容器启动5s后开始执行periodSeconds: 5 #每5s执行一次它在启动之后做的第一件事是在/tmp目录下创建了一个healthy文件,以此作为自己已经正常运行的标志。而30s过后,它会把这个文件删除掉。
与此同时,定义了一个这样的 livenessProbe(健康检查)。它的类型是 exec,它会在容器启动后,在容器里面执行一句我们指定的命令,比如:"cat /tmp/healthy"。这时,如果这个文件存在,这条命令的返回值就是 0,Pod就会认为这个容器不仅已经启动,而且是健康的。这个健康检查,在容器启动5s后开始执行(initialDelaySeconds: 5),每5s执行一次(periodSeconds: 5)。
kubectl apply -f test-liveness-exec.yaml //创建pod
http get方式探针
vim liveness-httpget.yaml
---
apiVersion: v1
kind: Pod
metadata:name: liveness-httpget-podnamespace: default
spec:containers:- name: liveness-exec-containerimage: daocloud.io/library/nginximagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80livenessProbe: #探针,健康检查httpGet:port: httppath: /index.htmlinitialDelaySeconds: 1periodSeconds: 3
kubectl create -f liveness-httpget.yaml //创建pod
POD 的恢复策略
Pod恢复策略:
可以通过设置restartPolicy,改变 Pod 的恢复策略。一共有3种:1. Always: 在任何情况下,只要容器不在运行状态,就自动重启容器;2. OnFailure: 只在容器 异常时才自动重启容器;3. Never: 从来不重启容器。
实际使用时,需要根据应用运行的特性,合理设置这三种恢复策略。