tencent cloud

文档反馈

故障自愈规则

最后更新时间:2023-05-05 11:15:36

    功能概述

    基础设施的不稳定性、环境的不确定性经常会引发不同纬度的系统故障。为了将工作人员从繁重的运维事务中解放出来,腾讯云容器服务团队自研故障自愈功能来帮助运维人员快速定位问题,并通过预置平台运维经验,针对不同检测项提供最小化的自愈动作。该能力在 NPD Plus 组件的基础上进一步扩展,具体包含如下特性:
    系统实时检测需要人为干预解决的持续性故障。
    故障范围涵盖操作系统、K8s 环境、运行时等数十种检测项。
    通过预置专家经验(执行修复脚本、重启组件)来对故障进行快速响应。

    检测项介绍

    检测项
    描述
    风险等级
    自愈动作
    FDPressure
    Too many files opened(查看主机的文件描述符数量是否达到最大值的 90%)
    low
    -
    RuntimeUnhealthy
    List containerd task failed
    low
    RestartRuntime
    KubeletUnhealthy
    Call kubelet healthz failed
    low
    RestartKubelet
    ReadonlyFilesystem
    Filesystem is readonly
    high
    -
    OOMKilling
    Process has been oom-killed
    high
    -
    TaskHung
    Task blocked more then beyond the threshold
    high
    -
    UnregisterNetDevice
    Net device unregister
    high
    -
    KernelOopsDivideError
    Kernel oops with divide error
    high
    -
    KernelOopsNULLPointer
    Kernel oops with NULL pointer
    high
    -
    Ext4Error
    Ext4 filesystem error
    high
    -
    Ext4Warning
    Ext4 filesystem warning
    high
    -
    IOError
    IOError
    high
    -
    MemoryError
    MemoryError
    high
    -
    DockerHung
    Task blocked more then beyond the threshold
    high
    -
    KubeletRestart
    Kubelet restart
    low
    -

    为节点开启故障自愈功能

    通过控制台操作

    1. 登录 容器服务控制台,选择左侧导航栏中的集群
    2. 在集群列表页中,单击集群 ID,进入该集群详情页。
    3. 选择左侧菜单栏中的节点管理 > 故障自愈规则,进入“故障自愈规则列表”页面。
    4. 单击新建故障自愈规则,创建新的故障自愈规则。如下图所示:
    
    5. 创建完成后,返回节点池列表页。
    6. 单击节点池 ID,进入节点池详情页。
    7. 在节点池详情页的“运维信息”模块,单击编辑为节点池开启故障自愈能力。
    8. 开启后,可以在“运维记录”中查看实时故障检测详情,状态为“失败”则代表该检测项未通过。

    通过 YAML 操作

    1. 新建故障自愈规则

    根据命令kubectl ceate -f demo-HealthCheckPolicy.yaml集群中创建自愈规则,YAML 配置如下:
    apiVersion: config.tke.cloud.tencent.com/v1
    kind: HealthCheckPolicy
    metadata:
    name: test-all
    namespace: cls-xxxxxxxx(集群 id)
    spec:
    machineSetSelector:
    matchLabels:
    key: fake-label
    rules:
    - action: RestartKubelet
    enabled: true
    name: FDPressure
    - action: RestartKubelet
    autoRepairEnabled: true
    enabled: true
    name: RuntimeUnhealthy
    - action: RestartKubelet
    autoRepairEnabled: true
    enabled: true
    name: KubeletUnhealthy
    - action: RestartKubelet
    enabled: true
    name: ReadonlyFilesystem
    - action: RestartKubelet
    enabled: true
    name: OOMKilling
    - action: RestartKubelet
    enabled: true
    name: TaskHung
    - action: RestartKubelet
    enabled: true
    name: UnregisterNetDevice
    - action: RestartKubelet
    enabled: true
    name: KernelOopsDivideError
    - action: RestartKubelet
    enabled: true
    name: KernelOopsNULLPointer
    - action: RestartKubelet
    enabled: true
    name: Ext4Error
    - action: RestartKubelet
    enabled: true
    name: Ext4Warning
    - action: RestartKubelet
    enabled: true
    name: IOError
    - action: RestartKubelet
    enabled: true
    name: MemoryError
    - action: RestartKubelet
    enabled: true
    name: DockerHung
    - action: RestartKubelet
    enabled: true
    name: KubeletRestart
    

    2. 开启自愈开关

    在 MachineSet 中指定字段 healthCheckPolicyName: test-all,YAML 配置如下:
    apiVersion: node.tke.cloud.tencent.com/v1beta1
    kind: MachineSet
    spec:
    type: Hosted
    displayName: demo-machineset
    replicas: 2
    autoRepair: true
    deletePolicy: Random
    healthCheckPolicyName: test-all
    instanceTypes:
    - C3.LARGE8
    subnetIDs:
    - subnet-xxxxxxxx
    - subnet-yyyyyyyy
    ......
    
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持