zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    软件定义网络笔记(PART 1)
    软件架构-可视化
    nginx反向代理配置去除前缀
    年轻就该多尝试,教你20小时Get一项新技能
    LNMP架构部署(附:部署Discuz社区论坛Web应用)
    高级开发进阶:第一章:总篇
    pip和conda添加和删除镜像源
    Micro-PaaS(Docker+K8S)
    云平台概述
    1、Docker学习笔记
  • 原文地址:https://www.cnblogs.com/CloudMan6/p/8571325.html
Copyright © 2011-2022 走看看