具体功能

  • 支持容器实例实现秒级弹性伸缩:Virtual Kubelet插件将自动为您在云容器实例CCI侧创建容器实例,减少运维成本。
  • 无缝对接容器镜像服务SWR,支持使用公用镜像和私有镜像。
  • 支持CCI容器实例的事件同步、监控、日志、exec、查看状态等操作。
  • 支持查看虚拟弹性节点的节点容量信息。
  • 支持CCE和CCI两侧实例的service网络互通。

资源自动规整

对弹性到CCI的Pod,若其配置的资源规格不满足CCI容器规范,virtual-kubelet会自动尝试将Pod资源向上规整到满足CCI容器规范的范围,以规整后的资源规格创建Pod到CCI。

自动规整规则如下:

  • 将Pod中除了BestEffort类型容器外的每个容器CPU向上调整至0.25核的整数倍, Memory向上调整至大于等于0.2Gi。
  • 将整个Pod的Memory向上调整至1Gi的整数倍。
  • 若Pod Memory/CPU的比值小于2,则将Pod Memory向上调整至大于等于CPU的2倍,且满足是1Gi的整数倍;若Pod Memory/CPU的比值大于8,则将Pod CPU向上调整至大于等于Memory的1/8,且满足是0.25核的整数倍。
  • 若向上调整之后,CPU超过32核或Memory超过256Gi,则矫正失败,拒绝创建请求。
  • 以上对Pod级别资源向上调整造成的增量CPU和Memory,全部添加到Pod中第一个不为BestEffort的容器上。

安装插件

1.在CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件管理”,在右侧找到virtual-kubelet,单击“安装”。

2.在“规格配置”步骤中,勾选“网络互通”后的选择框,可实现CCE集群中的Pod与CCI集群中的Pod通过Kubernetes Service互通。

3.单击“安装”。

说明:勾选了网络互通后,会在CCI运行的Pod中注入一个sidecar用于支持service访问的能力,查询到的运行容器数量会比定义的多一个,属于正常情况。

通过标签labels设置弹性策略

您成功安装virtual-kubelet插件后,在工作负载中添加virtual-kubelet.io/burst-to-cci这个标签即可设置弹性到CCI。

apiVersion: apps/v1
kind: Deployment
metadata:
name: test
namespace: default
labels:
virtual-kubelet.io/burst-to-cci: 'auto' # 弹性到CCI
spec:
......

说明:创建弹性至CCI的负载时需要在工作负载或Pod的labels中添加如下字段:

virtual-kubelet.io/burst-to-cci: "auto"

其中,value值支持以下选项:

  • auto:根据用户集群内调度器实际打分结果自动决定是否弹性至CCI,其中在TaintToleration算法上会优先选择调度到CCE节点。
  • enforce:强制调度至CCI。
  • off:不调度至CCI。

卸载插件

1.登录CCE控制台,进入集群,在左侧导航栏选择“插件管理”,在右侧“已安装插件”页签下,单击virtual kubelet下的“卸载”。

2.在弹出的窗口中,单击“是”,可卸载该插件。(卸载插件会自动删除CCI侧的所有资源,以确保不会有资源残留造成额外计费)

注意:

  • 由于virtual-kubelet插件卸载时会在集群中启动Job用于清理资源,卸载插件时请保证集群中至少有一个可以调度的节点,否则卸载插件会失败。若已经因无可调度节点造成插件卸载失败,需要在有可调度节点后重新点击插件卸载。
  • 如果在未卸载virtual-kubelet插件的情况下直接删除集群,CCI侧的资源不会被自动清理,会导致CCI侧资源残留,可能会造成额外计费。因此请确保完成以下任意一操作。1. 在删除集群前先卸载virtual-kubelet插件。 2. 在直接删除集群后登录CCI控制台删除名为cce-burst-${CLUSTER_ID}的命名空间。 3.集群休眠时CCI侧正在运行的实例不会自动停止,会持续运行并计费。因此如不需要实例继续运行,请确保在集群休眠前将弹性到CCI的负载实例数缩至0。