每天5分钟玩转Kubernetes | 默认的健康检查
Posted COCOgsta
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天5分钟玩转Kubernetes | 默认的健康检查相关的知识,希望对你有一定的参考价值。
书籍来源:cloudman《每天5分钟玩转Kubernetes》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
我们首先学习Kubernetes默认的健康检查机制:每个容器启动时都会执行一个进程,此进程由Dockerfile的CMD或ENTRYPOINT指定。如果进程退出时返回码非零,则认为容器发生故障,Kubernetes就会根据restartPolicy重启容器。
下面我们模拟一个容器发生故障的场景,Pod配置文件如下示。
[root@k8s-master ~]# cat healthycheck.yml
apiVersion: v1
kind: Pod
metadata:
labels:
test: healthcheck
name: healthcheck
spec:
restartPolicy: OnFailure
containers:
- name: healthcheck
image: busybox
args:
- /bin/sh
- -c
- sleep 10; exit 1
[root@k8s-master ~]#
Pod的restartPolicy设置为OnFailure,默认为Always。
sleep 10; exit 1模拟容器启动10秒后发生故障。
执行kubectl apply创建Pod,命名为healthcheck,如图所示。
过几分钟查看Pod的状态,如图所示。
可看到容器当前已经重启了3次。
在上面的例子中,容器进程返回值非零,Kubernetes则认为容器发生故障,需要重启。有不少情况是发生了故障,但进程并不会退出。比如访问Web服务器时显示500内部错误,可能是系统超载,也可能是资源死锁,此时httpd进程并没有异常退出,在这种情况下重启容器可能是最直接、最有效的解决方案,那我们如何利用Health Check机制来处理这类场景呢?
答案就是Liveness探测。
以上是关于每天5分钟玩转Kubernetes | 默认的健康检查的主要内容,如果未能解决你的问题,请参考以下文章
每天5分钟玩转Kubernetes | Liveness探测
每天5分钟玩转Kubernetes | Kubernetes Dashboard安装
每天5分钟玩转Kubernetes | DNS访问Service