弹性容器实例(VCI)为云下自建的 Kubernetes 集群或第三方云的 Kubernetes 集群,提供一种弹性使用火山容器资源的快速路径。本文主要描述自建/跨云 Kubernetes 集群使用 VCI 方式,弹性调度上云的方案。
方案介绍
通过云上注册和托管虚拟节点的方式,将 Kubernetes 集群中业务工作负载依赖的资源弹性调度上云,从而将线下集群的计算资源容量充分扩展。
VCI 提供的虚拟节点(Virtual Node),对标原生 Kubernetes 节点,兼容原生 Kubernetes 节点 API 及调度语义。当有需求调度 Pod 到虚拟节点时,虚拟节点会自动创建并全方位管理底层的 VCI 实例资源。
说明
【邀测·申请试用】:虚拟节点相关功能目前处于 邀测 阶段。如果需要使用,请提交申请。
约束限制
基于公有云的安全性和虚拟节点本身带来的限制,VCI 目前还不支持 Kubernetes 中 HostPath、DaemonSet 等功能。详细说明及功能替代方案,请参见 VCI 的 Kubernetes 限制。
操作步骤
- 打通网络链路。
您需要根据您的实际业务网络状态,自行打通自建/跨云 Kubernetes 集群控制面和火山引擎私有网络(VPC)之间的网络连接链路。更多信息,可参考私有网络文档:私网访问方案介绍、公网访问方案介绍。 - 准备环境。
获取您自建 Kubernetes 集群的 KubeConfig 文件。 - 创建虚拟节点,并将虚拟节点标准化部署到自建/跨云 Kubernetes 集群。
- 进行调度工作负载前的准备工作。
自建 Kubernetes 集群中的部分系统组件(例如 DaemonSet 类型组件)需要配置对所注册虚拟节点的节点反亲和性,避免 DaemonSet 类型的系统组件调度到虚拟节点。 - 调度工作负载,将 VCI Pod 调度到自建/跨云 Kubernetes 集群中的虚拟节点上,有如下两种方法:
- VCI 标准化使用方法:
- 在自建/跨云 Kubernetes 集群中部署 vci-admission 组件。详情请参见 volcengine-vci-admission。
- 使用 VCI 相关功能 Annotation:
vke.volcengine.com/burst-to-vci: enforce
直接调度 VCI Pod 到您的虚拟节点。详情请参见 创建实例。
- 原生 Kubernetes Pod 调度方法:
使用原生 Kubernetes 调度能力,将 Pod 调度到指定的虚拟节点上。详情请参见 Kubernetes 官方文档。
- (可选)删除虚拟节点。
当不需要使用虚拟节点时,可调用 DeleteVirtualNode 删除虚拟节点。