全部產品
Search
文件中心

Container Service for Kubernetes:通過ElasticResource實現ECI彈性調度(停止維護)

更新時間:Nov 23, 2024

ECI彈性調度是阿里雲提供的彈性調度策略。您可以在部署服務時通過添加Annotations來聲明只使用ECS或ECI彈性資源,或者是在ECS資源不足時自動申請ECI資源。通過ECI彈性調度可以滿足您在不同工作負載的情境下對彈性資源的不同需求。本文介紹如何使用ECI彈性調度。

重要
  • ECI彈性調度功能目前依然支援,計劃在後續版本廢棄。後續ACK將通過原生語義方式提供ECIAuto Scaling支援。詳細資料,請參見指定ECS和ECI的資源分派

  • ECI彈性調度功能已升級到自訂彈性資源優先順序功能。原有情境均可支援,且自訂資源優先順序策略更加豐富、靈活。

  • 推薦使用自訂彈性資源優先順序功能。相比ECIAuto Scaling,該功能將額外提供業務的逆序縮容以及業務Pod無侵入的能力。詳細資料,請參見自訂彈性資源優先順序調度

前提條件

  • 已建立1.18及以上版本的ACK託管叢集Pro版,請參見建立ACK託管叢集

  • 對於不同ACK版本的叢集,調度器版本需要滿足以下要求。關於調度器各版本支援的功能,請參見kube-scheduler

    ACK版本

    調度器版本

    1.18

    v1.18-ack-3.0及以上

    1.20

    v1.20.4-ack-4.0及以上

    1.22

    v1.22.3-ack-1.0及以上

    1.24

    v1.24.3-ack-2.0及以上

  • 已在叢集中部署ack-virtual-node。具體操作,請參見ACK使用ECI

  • Annotation alibabacloud.com/burst-resource: ecialibabacloud.com/fluid-sidecar-target: eci 不能同時使用。alibabacloud.com/fluid-sidecar-target: eci的使用文檔,請參見Serverless資料訪問概述

操作步驟

說明

在Deployment對象的template.metadata下配置Pod的Annotations,聲明彈性資源的類型。alibabacloud.com/burst-resource的取值有以下選擇:

  • 預設不填Annotations時:只使用叢集現有的ECS資源。

  • eci:當前叢集ECS資源不足時,使用ECI彈性資源。

  • eci_only: 只使用ECI彈性資源,不使用叢集的ECS資源。

當取值不為ecieci_only,或取值為eci_only但叢集中不存在Virtual node時,Pod將會調度失敗。在1.22.15及1.24.6版本叢集中,Pod調度失敗原因與PodStatus中的資訊對應關係為:

  • 取值不為ecieci_onlyrequesttypemustbeeci,eci_onlyorecs

  • 取值為eci_only且叢集中不存在Virtualnode:doesn'tfitecitype:eci_only

  1. 建立並拷貝以下內容到nginx-deployment.yaml檔案中。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx
          annotations:
            alibabacloud.com/burst-resource: eci # 添加註解,選擇彈性調度的資源類型。
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            resources:
              limits:
                cpu: 2
              requests:
                cpu: 2
  2. 執行以下命令,建立使用ECI彈性調度的Pod。

    kubectl apply -f nginx-deployment.yaml