为混合云节点池开启节点自治功能

更新时间:
复制为 MD 格式

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

节点自治功能介绍

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

混合云节点池针对以上场景进行了优化,引入节点自治功能,使得在云边断连或网络抖动时,即使节点处于 NotReady,也能避免 Pod 被驱逐,从而保障混合云节点上业务服务的连续稳定运行。该功能主要面向 “混合云节点侧应用需持续对外提供服务,但云边链路不可完全依赖” 的场景,尤其适用于:

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

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

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

开启节点自治

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

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

    • 根据引导安装yurt-hub-controlplane托管组件。

  2. 为混合云节点池中节点安装节点组件 yurt-hub

    • 在阿里云OpenAPI门户中调用OpenAPI InstallNodePoolComponents,填入需要安装yurt-hub的集群ID与混合云节点池ID,然后在组件名称中填入yurt-hub,组件版本选择0.15.0。可通过config.customConfig配置参数,当前支持配置"cacheAgents": {User-Agent} 以开启数据缓存能力,示例配置如下,其中 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
  3. 为该混合云节点池中节点添加标签:node.beta.alibabacloud.com/autonomy: true

    • 创建混合云节点池时,通过 高级选项 > 节点标签处添加。

    • 已创建的混合云节点池,需手动为节点添加标签,在节点池页面,点击进入该混合云节点池,选择目标节点列的更多 > 标签管理进行添加。

配置缓存组件

当前yurt-hub会将节点上的组件所需要的相关数据进行缓存,在混合云节点与云端断网时确保这些组件可以正常运行,磁盘缓存目录为/etc/kubernetes/cache

说明

缓存的数据指的是与API Server进行交互的数据,比如Pod、ConfigMap等资源信息,不包含业务数据。

如果您有组件需要在边缘节点断网的情况下依赖API Server的数据信息来正常运行,可以按照如下步骤进行配置。

  1. 获取开发人员提供的User-Agent,如果是社区组件,可以在社区内进行查询。

  2. 按照开启节点自治-步骤2,将User-Agent添加到cache_agents配置项中。

  3. 登录节点,进入/etc/kubernetes/cache目录,查看是否有名为您的User-Agent的目录。

配置完成后,对应的组件和API Server之间交互的数据都会保存到节点的磁盘里。如果开启了节点自治,组件将会从本地磁盘获取数据,从而确保正常运行。