Health Check - 天天5分钟玩转 Docker 容器技术(142)

强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性。自愈的默认实现方式是自动重启发生故障的容器。除此以外,用户还能够利用 Liveness 和 Readiness 探测机制设置更精细的健康检查,进而实现以下需求:html

  1. 零停机部署。安全

  2. 避免部署无效的镜像。服务器

  3. 更加安全的滚动升级。app

下面经过实践学习 Kubernetes 的 Health Check 功能。学习

默认的健康检查

咱们首先学习 Kubernetes 默认的健康检查机制:spa

每一个容器启动时都会执行一个进程,此进程由 Dockerfile 的 CMD 或 ENTRYPOINT 指定。若是进程退出时返回码非零,则认为容器发生故障,Kubernetes 就会根据 restartPolicy 重启容器。rest

下面咱们模拟一个容器发生故障的场景,Pod 配置文件以下:code

Pod 的 restartPolicy 设置为 OnFailure,默认为 Alwayshtm

sleep 10; exit 1 模拟容器启动 10 秒后发生故障。blog

执行 kubectl apply 建立 Pod,命名为 healthcheck

过几分钟查看 Pod 的状态:

可看到容器当前已经重启了 3 次。

在上面的例子中,容器进程返回值非零,Kubernetes 则认为容器发生故障,须要重启。但有很多状况是发生了故障,但进程并不会退出。好比访问 Web 服务器时显示 500 内部错误,多是系统超载,也多是资源死锁,此时 httpd 进程并无异常退出,在这种状况下重启容器多是最直接最有效的解决方案,那咱们如何利用 Health Check 机制来处理这类场景呢?

答案就是 Liveness 探测,咱们下一节学习。

书籍:
1.《天天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《天天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

相关文章
相关标签/搜索