大部分的应用程序我们在部署的时候都会适当的添加监控,对于运行载体容器则更应该如此。kubernetes提供了 liveness probes来检查我们的应用程序。它是由节点上的kubelet定期执行的。
首先说一下Pod的整个生命阶段:
对于liveness probes的结果也有几个固定的可选项值:
Liveness Probe的种类:
当前kubelet拥有两个检测器,他们分别对应不通的触发器(根据触发器的结构执行进一步的动作):
对于LivenessProbe和ReadinessProbe用法都一样,拥有相同的参数和相同的监测方式。
当前对每一个Container都可以设置不同的restartpolicy,有三种值可以设置:
如果restartpolicy没有设置,那么默认值是Always。如果container需要重启,仅仅是通过kubelet在当前节点进行container级别的重启。
最后针对LivenessProbe如何使用,请看下面的几种方式,如果要使用ReadinessProbe只需要将livenessProbe修改为readinessProbe即可:
apiVersion: v1 kind: Pod metadata: name: probe-exec namespace: coocla spec: containers: - name: nginx image: nginx livenessProbe: exec: command: - cat - /tmp/health initialDelaySeconds: 5 timeoutSeconds: 1 --- apiVersion: v1 kind: Pod metadata: name: probe-http namespace: coocla spec: containers: - name: nginx image: nginx livenessProbe: httpGet: path: / port: 80 host: www.baidu.com scheme: HTTPS initialDelaySeconds: 5 timeoutSeconds: 1 --- apiVersion: v1 kind: Pod metadata: name: probe-tcp namespace: coocla spec: containers: - name: nginx image: nginx livenessProbe: initialDelaySeconds: 5 timeoutSeconds: 1 tcpSocket: port: 80
关于kubectl资源创建的语法可以参考: kubernetes技术学习之—Construct语法
我们使用上面的construct创建资源:
kubectl create -f probe.yaml kubectl get event
通过event我们可以发现对应的container由于probe监测失败一直处于循环重启中,其事件原因:unhealthy
查看原文:http://www.zoues.com/index.php/2016/02/27/dcosk8sliveness/