社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

CloudMan • 7 年前 • 656 次点击  

第142篇

Health Check

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

  1. 零停机部署。

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

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

下面通过实践学习 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



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/mHzBsqWIGf
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/8748
 
656 次点击