Health Check - 每天5分钟玩转 Docker 容器技术(142)
强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性。自愈的默认实现方式是自动重启发生故障的容器。除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精细的健康检查,进而实现如下需求:
-
零停机部署。
-
避免部署无效的镜像。
-
更加安全的滚动升级。
下面通过实践学习 Kubernetes 的 Health Check 功能。
默认的健康检查
我们首先学习 Kubernetes 默认的健康检查机制:
每个容器启动时都会执行一个进程,此进程由 Dockerfile 的 CMD 或 ENTRYPOINT 指定。如果进程退出时返回码非零,则认为容器发生故障,Kubernetes 就会根据 restartPolicy
重启容器。
下面我们模拟一个容器发生故障的场景,Pod 配置文件如下:
Pod 的 restartPolicy
设置为 OnFailure
,默认为 Always
。
sleep 10; exit 1
模拟容器启动 10 秒后发生故障。
执行 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
相关文章
- Goodbye Docker and Thanks for all the Fish
- Docker部署通用脚本步骤
- Docker最全教程——从理论到实战(四)
- Elasticsearch docker-compose部署hot、warm、cold的elasticsearch集群
- 技术分享 | 掌握高频 Docker 命令,夯实内功基础
- Kubernetes是Docker的终结者?我不认同!
- Docker技术入门与实战(第2版).
- Docker技术入门与实战(第2版)1.2 为什么要使用Docker
- Docker技术入门与实战(第2版)2.2 安装Docker
- Docker技术入门与实战(第2版)3.1 获取镜像
- Docker技术入门与实战(第2版)3.5 创建镜像
- Docker技术入门与实战(第2版)3.7 上传镜像
- Docker技术入门与实战(第2版)3.8 本章小结
- Docker技术入门与实战(第2版)导读
- Docker安装elasticsearch、kibana和logstash,实现ELK
- 《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置
- 《第一本Docker书(修订版)》——1.5 Docker的技术组件
- Docker环境搭建(CentOS篇)
- 转 Dockerfile 常用指令 - 每天5分钟玩转 Docker 容器技术(16)
- 《Docker技术入门与实战》——3.1 获取镜像
- 《Docker技术入门与实战》——3.3 搜寻镜像
- Failed to set version to docker-desktop: exit code: -1
- Docker容器跨主机通信--overlay网络
- 部署技术演变之虚拟机、容器、Docker、Kubernetes
- 前端监控三方平台Webfunny及docker部署