全部產品
Search
文件中心

Container Service for Kubernetes:在Knative中同時使用ECS和ECI資源

更新時間:Jun 19, 2024

使用Knative時,如果您希望在業務流量穩定時段使用已有的ECS節點,而在突發流量時段將應用調度至自動擴容的ECI Pod,您可以基於ResourcePolicy來聲明資源的擴容順序。此外,ResourcePolicy還支援逆序縮容,優先縮容ECI Pod。

前提條件

使用限制

  • 本功能與pod-deletion-cost衝突,不能同時使用。關於pod-deletion-cost的更多資訊,請參見pod-deletion-cost

  • 本功能暫不支援與使用ECI彈性調度混合使用。關於ECI彈性調度的更多資訊,請參見使用ECI彈性調度

  • 本功能目前使用的是BestEffort策略,無法保證一定按照逆序縮容。

  • max欄位僅在叢集版本為1.22及以上,且調度器版本為5.0及以上的版本中開啟。

  • 與彈性節點池同時使用時,可能導致彈性節點池無效彈出節點。使用時請將彈性節點池包含在某個Unit中,且彈性節點池的Unit不要設定max欄位。

  • 若您的調度器為5.0版本以下或叢集版本為1.20及以下,請注意在ResourcePolicy建立前存在的Pod會在縮容時最先縮容。

  • 若您的調度器為6.1版本以下或叢集版本為1.20及以下,在與ResourcePolicy關聯的Pod未完全刪除時,請不要對ResourcePolicy進行修改。

操作步驟

您可以建立ResourcePolicy,定義彈性資源的優先順序,優先使用ECS節點進行擴容,並在ECS資源不足或超額時將應用調度至ECI Pod。縮容時,系統也會根據調度節點的順序逆序縮容,優先縮容在ECI上的Pod。

  1. 建立Knative Service。

    樣本YAML如下。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
    spec:
      template:
        spec:
          containers:
          - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
            env:
            - name: TARGET
              value: "Knative"
  2. 建立ResourcePolicy,定義彈性資源優先順序及資源的maxPod數量、nodeSelector等。

    樣本YAML如下。該樣本中,系統會根據YAML中聲明的資源先後順序指定Knative Pod優先使用ECS節點進行擴容。當超過了maxPod數量或者ECS資源不足時,會將Pod調度至自動擴容的ECI Pod上。

    apiVersion: scheduling.alibabacloud.com/v1alpha1
    kind: ResourcePolicy
    metadata:
      name: xxx
      namespace: xxx
    spec:
      selector:
        serving.knative.dev/service: helloworld-go # 此處指定Knative Service名稱
      strategy: prefer
      units: 
      - resource: ecs
        max: 10
        nodeSelector:
          key2: value2
      - resource: ecs
        nodeSelector:
          key3: value3
      - resource: eci

相關文檔

關於基於ResourcePolicy定義彈性資源優先順序的更多資訊,請參見自訂彈性資源優先順序調度