如何自动清理NotReady节点

在注册集群中使用节点池功能时,如果您进行了缩容操作,此时节点状态可能会变为NotReady。如果不及时清理这些节点,可能会导致集群中的资源浪费。本文将介绍如何通过cloud-node-controller组件自动清理NotReady节点。

前提条件

操作步骤

在注册集群安装组件之前,您需要创建RAM用户为其授予相关权限,并配置AccessKey使其具有访问云资源的权限。

步骤一:为cloud-node-controller组件配置权限

  1. 创建RAM用户并为其授予以下自定义权限策略。具体操作,请参见为RAM用户授予RAM权限

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "ecs:DescribeInstances"      # 允许查询ECS实例的详细信息。
                ],
                "Resource": [
                    "*"
                ],
                "Effect": "Allow"
            }
        ]
    }
  2. 执行以下命令配置RAM Policy的AccessKey信息。

    export ACCESS_KEY_ID=<ACCESS KEY ID>
    export ACCESS_KEY_SECRET=<ACCESS KEY SECRET>
  3. 执行以下命令创建一个名为alibaba-addon-secret的Secret资源。

    kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=${ACCESS_KEY_ID}' --from-literal='access-key-secret=${ACCESS_KEY_SECRET}'
    说明

    如果该Secret已经存在,则需要为Secret对应的RAM用户增加上述自定义权限。

步骤二:安装cloud-node-controller组件

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 组件管理页面,在核心组件页签下,找到cloud-node-controller组件,单击卡片右下方的安装

步骤三:查看组件状态

  1. 执行以下命令查看cloud-node-controller组件状态。

    kubectl get pods -n kube-system | grep cloud-node-controller

    预期输出:

    cloud-node-controller-abcXXX    1/1     Running   0     5m
  2. 组件部署完成后,系统将自动清理状态为NotReady的节点。