混合云节点支持自治功能,在和云端网络断连状态下,能够保证混合云节点上的应用持续稳定地运行,而不会被驱逐或者迁移到其他节点。如果没有开启自治功能,网络断连时节点上的应用在到达容忍时间之后将会被驱逐。本文介绍如何为混合云节点开启自治功能。
节点自治功能介绍
在混合云/边缘计算场景中,混合云节点与云端管控面之间可能面临链路不稳定、带宽受限或短时断连的问题。Kubernetes 原生机制下,一旦节点无法持续向控制面上报心跳,状态会被标记为 NotReady,并在 Pod 的容忍时间到期后触发驱逐,导致业务服务出现不必要的中断。
混合云节点池针对以上场景进行了优化,引入节点自治功能,使得在云边断连或网络抖动时,即使节点处于 NotReady,也能避免 Pod 被驱逐,从而保障混合云节点上业务服务的连续稳定运行。该功能主要面向 “混合云节点侧应用需持续对外提供服务,但云边链路不可完全依赖” 的场景,尤其适用于:
经常短时断连但需要本地连续运行的混合云业务
专线带宽紧张/突发打满导致的控制面不可达
对业务连续性要求高、不能频繁重调度的混合云应用
开启节点自治
为集群安装控制面组件yurt-hub-controlplane。如已安装请跳过此步骤。
在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,单击组件管理。
根据引导安装yurt-hub-controlplane托管组件。
为混合云节点池中节点安装节点组件 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
为该混合云节点池中节点添加标签:
node.beta.alibabacloud.com/autonomy: true创建混合云节点池时,通过 高级选项 > 节点标签处添加。
已创建的混合云节点池,需手动为节点添加标签,在节点池页面,点击进入该混合云节点池,选择目标节点列的进行添加。
配置缓存组件
当前yurt-hub会将节点上的组件所需要的相关数据进行缓存,在混合云节点与云端断网时确保这些组件可以正常运行,磁盘缓存目录为/etc/kubernetes/cache。
缓存的数据指的是与API Server进行交互的数据,比如Pod、ConfigMap等资源信息,不包含业务数据。
如果您有组件需要在边缘节点断网的情况下依赖API Server的数据信息来正常运行,可以按照如下步骤进行配置。
获取开发人员提供的User-Agent,如果是社区组件,可以在社区内进行查询。
按照开启节点自治-步骤2,将User-Agent添加到
cache_agents配置项中。登录节点,进入
/etc/kubernetes/cache目录,查看是否有名为您的User-Agent的目录。
配置完成后,对应的组件和API Server之间交互的数据都会保存到节点的磁盘里。如果开启了节点自治,组件将会从本地磁盘获取数据,从而确保正常运行。