日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

自定義資源優先級調度

阿里云容器計算服務ACS支持在Pod標簽中聲明使用計算類型(Compute Class)和算力質量(Compute QoS)。由于不同類型實例的庫存是在動態變化的,可能會因為資源庫存等因素導致某種類型的實例無法創建。通過自定義資源優先級調度,您可以為Pod同時指定多種計算類型或算力質量,調度器將按先后順序依次嘗試創建對應類型的Pod實例,并通過Pod deletion cost機制控制應用的逆序縮容。本文介紹如何在ACS集群中使用自定義資源優先級調度。

前提條件

  • 已安裝調度器組件kube-scheduler,且版本滿足以下要求。

    ACS集群版本

    調度器組件版本

    1.30

    v1.30.3-aliyun-1.1.1及以上(即當前所有版本)

    1.28

    v1.28.9-aliyun-1.1.0及以上

    1.26

    v1.26.3-aliyun-1.1.0及以上

  • 已安裝acs-virtual-node組件,版本為v2.12.0-acs.4或以上。

注意事項

自定義資源優先級調度目前僅支持通用型和性能型計算類型。具體信息,請參見計算類型定義

ACS自定義資源優先級調度基于Kubernetes社區提供的Pod deletion cost功能控制Pod實例縮容順序。Pod deletion cost代表了刪除開銷,通常值越小表示會被優先縮容,事實上縮容算法會考慮多種因素,這取決于應用控制器的具體實現。若Pod在創建時已經填寫了controller.kubernetes.io/pod-deletion-cost注解,值會被自定義資源優先級調度策略覆蓋。關于Pod deletion cost的更多信息,請參見Pod deletion cost

使用方式

ACS集群以虛擬節點的形式提供資源。Pod的資源屬性主要包括可用區、計算類型和算力質量。為此,ACS定義了ResourcePolicy調度策略,支持在配置中通過spec.selector標記一類Pod,并同時配置多種資源屬性。調度器將在資源庫存不足時,按照配置順序創建其他類型的實例。ResourcePolicy調度策略使用方式如下。

  1. 創建ResourcePolicy調度策略。

    apiVersion: scheduling.alibabacloud.com/v1alpha1
    kind: ResourcePolicy
    metadata:
      name: rp-demo
      namespace: default
    spec:
      selector: # 在selector中標記Pod,表示帶有app=stress標簽的Pod將遵循此調度策略
        app: stress
      units: # 在units中定義調度順序
      - resource: acs # 優先申請best-effort類型的資源
        podLabels:
          alibabacloud.com/compute-class: general-purpose
          alibabacloud.com/compute-qos: best-effort
      - resource: acs # 前者庫存不足時,申請default類型的資源
        podLabels:
            alibabacloud.com/compute-class: general-purpose
            alibabacloud.com/compute-qos: default
  2. 創建一個任意類型的工作負載(例如Job),并在labels中關聯ResourcePolicy。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: demo-job
      namespace: default
    spec:
      parallelism: 3
      template:
        metadata:
          labels:
            app: stress # 關聯ResourcePolicy中spec.selector定義的配置
        spec:
          containers:
          - name: demo-job
            image: registry.cn-hangzhou.aliyuncs.com/acs/stress:v1.0.4
            args:
              - 'infinity'
            command:
              - sleep
            resources:
              requests:
                cpu: "1"
                memory: "1Gi"
              limits:
                cpu: "1"
                memory: "1Gi"
          restartPolicy: Never
      backoffLimit: 4

高級配置參數

以下ResourcePolicy的詳細YAML示例展示了自定義資源優先級調度的高級配置參數格式。

apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
  name: rp-demo
  namespace: default
spec:
  # 以下為應用配置,用于標記一部分pod,符合該條件的Pod將遵循此調度策略
  selector:
    app: stress
  # 以上為應用配置

  # 以下為資源配置,用于描述調度順序
  units:
  - resource: acs # resource類型必須指定為acs
    podLabels: # 優先申請"general-purpose"+"best-effort"類型的資源
      alibabacloud.com/compute-class: general-purpose
      alibabacloud.com/compute-qos: best-effort
    nodeSelector: # 支持通過nodeSelector指定虛擬節點的可用區
      topology.kubernetes.io/zone: cn-hangzhou-i
  - resource: acs # 前者庫存不足時,再申請"general-purpose"+"default"類型的資源
    podLabels:
      alibabacloud.com/compute-class: general-purpose
      alibabacloud.com/compute-qos: default
  # 以上為資源配置
 # 其他字段適用于非ACS集群,ResourcePolicy創建后會有默認值,無需關注

應用配置

應用配置由一組標簽組成,只有帶有該標簽的Pod會遵循此策略,您可以根據應用類型配置不同的資源順序。

配置項

類型

說明

示例

selector

map[string]string

同時帶有這些標簽的Pod將按本ResourcePolicy規則調度。

selector:
  app: stress
  stage: pre-publish

資源配置

資源配置由一個列表組成,列表中的每個單元描述了詳細的資源屬性,對于符合應用配置條件的Pod,調度器將按每個單元的屬性依次嘗試創建,當庫存不足時自動嘗試下一個單元。當所有單元的庫存都不足時,Pod會處于Pending狀態,調度器會持續按順序重試,直至創建成功。下表中描述了每個單元中配置字段的詳細含義。

配置項

類型

說明

取值

示例

resource

string

資源類型,必填。僅支持acs。

acs

resource: acs

nodeSelector

map[string]string

通過label標記篩選虛擬節點,例如可用區范圍。

支持的標簽范圍詳見節點親和性調度

nodeSelector:
  topology.kubernetes.io/zone: cn-hangzhou-i

podLabels[alibabacloud.com/compute-class]

string

描述Pod申請的計算類型(Compute Class)。

  • general-purpose(默認值)

  • performance

general-purpose

podLabels[alibabacloud.com/compute-qos]

string

描述Pod申請的算力質量(Compute QoS)。

  • default(默認值)

  • best-effort

default

操作示例

本示例演示通過ResourcePolicy為應用依次申請default和best-effort算力質量的資源。

  1. 使用以下內容創建resource-policy.yaml。聲明了對于app=stress標簽的Pod,申請計算類型為performance、算力質量為default的資源。

    apiVersion: scheduling.alibabacloud.com/v1alpha1
    kind: ResourcePolicy
    metadata:
      name: stress-demo
      namespace: default
    spec:
      selector:
        app: stress
      units:
      - resource: acs
        podLabels:
          alibabacloud.com/compute-class: performance
          alibabacloud.com/compute-qos: default
  2. 執行以下命令,將ResourcePolicy部署到集群。

    kubectl apply -f resource-policy.yaml
  3. 使用以下內容創建stress-dep.yaml。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: stress
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: stress
      template:
        metadata:
          labels: # 與ResourcePolicy中的配置保持一致
            app: stress
        spec:
          containers:
          - name: stress
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/stress:v1.0.4
            command:
            - "sleep"
            - "infinity"
            resources:
              limits:
                cpu: '1'
                memory: 1Gi
              requests:
                cpu: '1'
                memory: 1Gi
  4. 執行以下命令,將stress應用部署到集群。

    kubectl apply -f stress-dep.yaml
  5. 執行以下命令,查看Pod狀態。

    kubectl get pod -L alibabacloud.com/compute-class,alibabacloud.com/compute-qos

    預期輸出:

    # 輸出結果受資源庫存等因素影響,請以實際為準
    NAME               READY   STATUS    RESTARTS   AGE   COMPUTE-CLASS   COMPUTE-QOS
    stress-xxxxxxxx1   1/1     Running   0          53s   performance     default
  6. 使用以下內容,更新上述resource-policy.yaml文件。增加了資源屬性描述,要求按以下順序申請資源:

    1. 先申請計算類型為general-purpose、算力質量為best-effort的資源。

    2. 上述資源庫存不足時,再申請計算類型為performance、算力質量為default的資源。

    apiVersion: scheduling.alibabacloud.com/v1alpha1
    kind: ResourcePolicy
    metadata:
      name: stress-demo
      namespace: default
    spec:
      selector:
        app: stress
      units:
      - resource: acs
        podLabels:
          alibabacloud.com/compute-class: general-purpose
          alibabacloud.com/compute-qos: best-effort
      - resource: acs
        podLabels:
          alibabacloud.com/compute-class: performance
          alibabacloud.com/compute-qos: default
  7. 執行以下命令,更新集群內的ResourcePolicy策略。更新后的策略將對后續新創建的Pod生效。

    kubectl apply -f resource-policy.yaml
  8. 執行以下命令,將步驟3創建的stress應用,擴容為2個副本。

    kubectl scale deployment stress --replicas=2
  9. 執行以下命令,查看Pod狀態。

    kubectl get pod -L alibabacloud.com/compute-class,alibabacloud.com/compute-qos

    預期輸出:

    # 輸出結果受資源庫存等因素影響,請以實際為準
    NAME                     READY   STATUS    RESTARTS   AGE     COMPUTE-CLASS     COMPUTE-QOS
    stress-xxxxxxxx1         1/1     Running   0          2m14s   performance       default
    stress-xxxxxxxx2         1/1     Running   0          33s     general-purpose   best-effort

    可以看到新擴容的副本,計算類型和算力質量分別為general-purpose和best-effort。