本文介绍部署在K8s集群上的应用如何使用虚拟节点(Virtual Node)以及弹性容器实例(ECI)。

前提条件

使用限制

仅适用于容器服务ACK托管版或容器服务ACK专有版集群,且版本大于1.14。

调度EDAS应用到虚拟节点

方式一:配置Pod标签

在EDAS上创建或部署应用时,在应用高级设置页签,将标签(Label)配置名称设置为alibabacloud.com/eci设置为true,应用Pod将会被调度到虚拟节点。

配置Pod标签

方式二:配置命名空间标签

为K8s集群命名空间增加标签:alibabacloud.com/eci=true后,新建的Pod将被调度到虚拟节点上,不影响已经运行中的Pod。

方式三:ECI弹性调度

重要 该方式仅适用于ACK Pro版集群,且集群的Kubernetes版本不能低于1.18。

在EDAS上创建或部署应用时,在应用高级设置页签,将注解(Annotation)配置名称设置为alibabacloud.com/burst-resource有如下两种配置。

  • eci:当集群普通节点的资源不足时,使用ECI。
  • eci_only:只使用ECI。
ECI弹性调度

方式四:自定义弹性资源优先级调度

重要 Kubernetes集群为ACK Pro且版本为1.20。

为应用ID为933ff653-xxxx-xxxx-xxxx-d127a75cxxxx的EDAS K8s应用配置ECS和ECI混合调度,当普通ECS节点资源不足时,Pod将被调度到虚拟节点上。

apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
  name: edas-app-name //建议与EDAS应用名相同
  namespace: edas-app-namespace //与EDAS应用保持相同命名空间
spec:
  selector:
    edas.appid: 933ff653-xxxx-xxxx-xxxx-d127a75cxxxx
  strategy: prefer
  units:
  - resource: ecs
  - resource: eci

更多内容,请参见自定义弹性资源优先级调度

方式五:使用virtual-kubelet-autoscaler组件调度Pod到ECI

virtual-kubelet-autoscaler是阿里云提供的Kubernetes Autoscaler插件。在Pod进行调度时,如果没有匹配的Node节点(例如已有的ECS work节点资源不足),那么将会由virtual-kubelet-autoscaler接管,把调度失败的Pod重新调度到ECI(虚拟节点)上。

安装组件,请参见安装virtual-kubelet-autoscaler

方式六:配置ECI Profile

重要 该方式需要开启Webhook功能。

修改K8s集群kube-system命名空间下名为eci-profile的ConfigMap。

为应用ID为933ff653-xxxx-xxxx-xxxx-d127a75cxxxx的EDAS K8s应用配置ECI Profile。该配置会将应用的Pod调度到ECI实例上,并且自动开启镜像缓存功能,增加created-by-eci=true的标签。


apiVersion: v1
kind: ConfigMap
metadata:
  name: eci-profile
  namespace: kube-system
data:
  vpcId: "vpc-xxx"
  securityGroupId: "sg-xxx"
  vswitchIds: "vsw-111,vsw-222"
  enableClusterIp: "true"
  enableHybridMode: "false"
  enablePrivateZone: "false"
  selectors: |
    [
        {
            "name":"for-edas-app-1",
            "objectSelector":{
                "matchLabels":{
                    "edas.appid": 933ff653-xxxx-xxxx-xxxx-d127a75cxxxx
                }
            },
            "effect":{  #需要动态追加的Annotation和Label
                "annotations":{
                    "k8s.aliyun.com/eci-image-cache": "true"
                },
                "labels":{
                    "created-by-eci":"true"
                }
            }
        }
    ]

更多内容,请参见配置ECI Profile