开启节点自治功能

更新时间:
复制为 MD 格式

混合云节点与边缘节点支持节点自治功能,在和云端网络断连状态下,能够保证节点上的应用持续稳定地运行,而不会被驱逐或者迁移到其他节点。如果没有开启自治功能,网络断连时节点上的应用在到达容忍时间之后将会被驱逐。本文介绍如何开启节点自治功能。

节点自治功能介绍

在混合云和边缘计算场景中,节点与云端管控面之间可能面临链路不稳定、带宽受限或短时断连的问题。Kubernetes 原生机制下,一旦节点无法持续向控制面上报心跳,状态会被标记为 NotReady,并在 Pod 的容忍时间到期后触发驱逐,导致业务服务出现不必要的中断。

混合云节点池和边缘节点池针对以上场景进行了优化,引入节点自治功能,使得在云边断连或网络抖动时,即使节点处于 NotReady,也能避免 Pod 被驱逐,从而保障节点上业务服务的连续稳定运行。该功能主要面向云边链路不完全可靠的场景:

  • 经常短时断连但需要本地连续运行的业务

  • 专线带宽紧张/突发打满导致的控制面不可达

  • 对业务连续性要求高、不能频繁重调度的应用

适用范围

节点自治功能适用于混合云节点池与边缘节点池。

开启节点自治

  1. 为集群安装控制面组件yurt-hub-controlplane。如已安装请跳过此步骤。

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

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

    3. 安装yurt-hub-controlplane,无需配置。

  2. 为节点池安装节点组件 yurt-hub,可以在创建节点池时安装或为现有节点池安装。

    创建节点池时安装

    1. 创建节点池时,在节点组件管理区域勾选 yurt-hub

    2. 单击 yurt-hub 右侧的配置,在弹出对话框中勾选开启节点自治功能

    3. (可选)如需在云边断连时缓存 Kubernetes 资源信息,请按需配置 cacheAgents 以开启数据缓存。详细配置方法,请参见配置缓存组件

    4. 创建节点池,节点自治功能将在该节点池中的节点上自动生效。

    后续为该节点池添加节点之后,会自动安装 yurt-hub 节点组件。

    为现有节点池安装

    1. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池

    2. 单击目标节点池ID,在节点池详情页,单击节点组件管理标签页。

    3. 单击安装节点组件 ,在列表中选择 yurt-hub,单击下一步

    4. 参数配置区域,勾选开启节点自治功能

    5. (可选)如需在云边断连时缓存 Kubernetes 资源信息,请按需配置 cacheAgents 以开启数据缓存。详细配置方法,请参见配置缓存组件

    6. 按需配置批量更新策略,然后完成组件安装,节点将根据策略自动批量更新。

  3. 获取集群KubeConfig并通过kubectl工具连接集群

  4. 查看 yurt-hub 组件是否正常运行:

    kubectl get pods -n kube-system -l app=yurt-hub

    yurt-hub Pod 状态为 Running,表明组件状态正常。

  5. 模拟云边网络断连场景(例如断开节点与云端 API Server 的网络连接),观察节点上的 Pod 是否被驱逐。开启节点自治后,Pod 在断连期间应保持运行状态。

    yurt-hub 组件默认延长节点心跳的超时容忍时间,具体时长取决于集群配置。断连恢复后,节点会自动与云端同步状态。

配置缓存组件

yurt-hub会将节点上的应用所需要的API Server相关数据进行缓存(例如Pod、ConfigMap等资源信息,不包含业务数据),在节点池与云端网络中断时也可以确保这些应用可以正常运行,磁盘缓存目录为/etc/kubernetes/cache。如果需要在节点断网的情况下依赖缓存运行,请按如下步骤进行配置:

  1. 获取应用的User-Agent,通常是业务容器的启动命令,示例配置如下。如果是社区组件,可以在社区内进行查询。

    apiVersion: v1
    kind: Pod
    metadata:
      name: hybrid-app-pod
    spec:
      containers:
        - name: "hybrid-app"
          image: "xxx/hybrid-app-amd64:1.18.8"
          command:
            - /bin/sh
            - -ec
            - |
              # User-Agent 即为启动命令:hybrid-app
              /usr/local/bin/hybrid-app --v=2
  2. User-Agent添加到cacheAgents配置项中,然后保存组件配置并更新节点。

    配置完成后,对应的组件和API Server之间交互的数据都会保存到节点的磁盘中。
  3. 登录节点,进入/etc/kubernetes/cache。存在名为User-Agent的目录,表明缓存配置成功。

保障自治节点上的 Pod 作为 Service 可用后端

开启节点自治功能之后,节点池与云端断连时,其上运行的 Pod 不会被驱逐。为了进一步实现断连后Pod在节点池内的可用性,可以通过配置Kube Controller Manager组件的特性门控,确保 Pod 在此过程中保持为 Service 的有效后端 Endpoint:

  • ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,单击组件管理

  • 选择 Kube Controller Manager组件,单击配置,在featureGates中填入NodeAutonomyPodProtection=true,然后单击确认