节点健康监测

    它现在支持一些已知的内核问题检测,并将随着时间的推移,检测更多节点问题。

    目前,Kubernetes 不会对节点问题检测器监测到的节点状态和事件采取任何操作。 将来可能会引入一个补救系统来处理这些节点问题。

    更多信息请参阅 这里

    你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

    要获知版本信息,请输入 .

    局限性

    • 节点问题检测器的内核问题检测现在只支持基于文件类型的内核日志。 它不支持像 journald 这样的命令行日志工具。

    • 节点问题检测器的内核问题检测对内核日志格式有一定要求,现在它只适用于 Ubuntu 和 Debian。 不过将其扩展为 也很容易。

    节点问题检测器在 gce 集群中以 集群插件的形式 默认启用。

    在其它环境中使用

    要在 GCE 之外的其他环境中启用节点问题检测器,你可以使用 kubectl 或插件 pod。

    这是在 GCE 之外启动节点问题检测器的推荐方法。 它的管理更加灵活,例如覆盖默认配置以使其适合你的环境或检测自定义节点问题。

    • 步骤 1: node-problem-detector.yaml:

    debug/node-problem-detector.yaml

    请注意保证你的系统日志路径与你的 OS 发行版相对应。

    • 步骤 2: 执行 kubectl 来启动节点问题检测器:
    1. kubectl create -f https://k8s.io/examples/debug/node-problem-detector.yaml

    插件 Pod

    这适用于拥有自己的集群引导程序解决方案的用户,并且不需要覆盖默认配置。 他们可以利用插件 Pod 进一步自动化部署。

    只需创建 node-problem-detector.yaml,并将其放在主节点上的插件 pod 目录 /etc/kubernetes/addons/node-problem-detector 下。

    构建节点问题检测器的 docker 镜像时,会嵌入 默认配置

    不过,你可以像下面这样使用 将其覆盖:

    • 步骤 1: 在 中更改配置文件。
    • 步骤 2: 使用 kubectl create configmap node-problem-detector-config --from-file=config/ 创建 node-problem-detector-config
    • 步骤 3: 更改 node-problem-detector.yaml 以使用 ConfigMap:
    1. kubectl delete -f https://k8s.io/examples/debug/node-problem-detector.yaml # If you have a node-problem-detector running
    2. kubectl create -f https://k8s.io/examples/debug/node-problem-detector-configmap.yaml

    请注意,此方法仅适用于通过 kubectl 启动的节点问题检测器。

    由于插件管理器不支持ConfigMap,因此现在不支持对于作为集群插件运行的节点问题检测器的配置进行覆盖。

    内核监视器

    内核监视器 是节点问题检测器中的问题守护进程。它监视内核日志并按照预定义规则检测已知内核问题。

    内核监视器根据 中的一组预定义规则列表匹配内核问题。 规则列表是可扩展的,你始终可以通过覆盖配置来扩展它。

    你可以使用新的状态描述来扩展 config/kernel-monitor.json 中的 字段以支持新的节点状态。

    检测新的问题

    你可以使用新的规则描述来扩展 config/kernel-monitor.json 中的 rules 字段以检测新问题。

    1. {
    2. "type": "temporary/permanent",
    3. "condition": "NodeConditionOfPermanentIssue",
    4. "reason": "CamelCaseShortReason",
    5. "message": "regexp matching the issue in the kernel log"
    6. }

    不同操作系统发行版的内核日志的可能不同。 config/kernel-monitor.json 中的 字段是容器内的日志路径。你始终可以修改配置使其与你的 OS 发行版匹配。

    支持其它日志格式

    内核监视器使用 [Translator] 插件将内核日志转换为内部数据结构。 我们可以很容易为新的日志格式实现新的翻译器。

    • 内核日志生成相对较慢。
    • 节点问题检测器有资源限制。
    • 即使在高负载下,资源使用也是可以接受的。 (参阅 基准测试结果)