容器服务 故障自愈规则

基础设施的不稳定性、环境的不确定性经常会引发不同维度的系统故障。为了将工作人员从繁重的运维事务中解放出来,腾讯云容器服务团队自研故障自愈功能来帮助运维人员快速定位问题,并通过预置平台运维经验,针对不同检测项提供最小化的自愈动作。该能力在 NPD Plus 组件的基础上进一步扩展,具体包含如下特性。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、功能概述

·系统实时检测需要人为干预解决的持续性故障。

·故障范围涵盖操作系统、K8s 环境、运行时等数十种检测项。

·通过预置专家经验(执行修复脚本、重启组件)来对故障进行快速响应。

二、检测项介绍

检测项 描述 风险等级 自愈动作
FDPressure Too many open files(查看主机的文件描述符数量是否达到最大值的 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 than 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 than beyond the threshold high –
KubeletRestart kubelet restart low –

三、通过控制台操作

1. 登录 容器服务控制台,选择左侧导航栏中的集群。

2. 在集群列表页中,单击集群 ID,进入该集群详情页。

3. 选择左侧菜单栏中的节点管理 > 故障自愈,进入故障自愈规则页面。

4. 单击新建故障自愈规则,创建新的故障自愈规则。

5. 创建完成后,返回节点池列表页。

6. 单击节点池 ID,进入节点池详情页。

7. 在节点池详情页的“运维信息”模块,单击编辑为节点池开启故障自愈能力。如下:


8. 开启后,可以在“运维记录”中查看实时故障检测详情,状态为“失败”则代表该检测项未通过。


四、1. 新建故障自愈规则

根据命令vim demo-HealthCheckPolicy.yaml进行自愈规则配置编辑。

根据命令kubectl create -f demo-HealthCheckPolicy.yaml集群中创建自愈规则,YAML 配置如下:

apiVersion: config.tke.cloud.tencent.com/v1kind: HealthCheckPolicymetadata: 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/v1beta1kind: MachineSetmetadata: name:np-xxx ## 节点池名称,唯一标识资源spec: type: Native displayName: demo-machineset replicas: 2 autoRepair: true deletePolicy: Random healthCheckPolicyName: test-all instanceTypes: – C3.LARGE8 subnetIDs: – subnet-xxxxxxxx – subnet-yyyyyyyytemplate: metadata: labels: node.tke.cloud.tencent.com/machineset:np-xxx ## 节点池名称,唯一标识资源……

赞 (0)
上一篇 4天前
下一篇 4天前