全部產品
Search
文件中心

Container Service for Kubernetes:通過資源畫像推薦容器規格配置

更新時間:Sep 15, 2024

ACK為Kubernetes原生的工作負載提供了資源畫像的能力,通過對資源使用量歷史資料的分析,實現了容器粒度的資源規格推薦,可以有效簡化為容器配置Request和Limit的複雜度。本文介紹如何通過控制台和命令列使用資源畫像功能。

前提條件及注意事項

  • 僅支援ACK叢集Pro版,且滿足以下條件:

    • 已安裝ack-koordinator組件(原ack-slo-manager),且組件版本為v0.7.1及以上,請參見ack-koordinator

    • 已安裝metrics-server組件,且組件版本為v0.3.8及以上。

    • 如果節點的容器運行時為containerd,且加入叢集的時間早於2022年01月19日14:00,請重新加入節點或升級叢集至到最新版本。具體操作,請參見添加已有節點手動升級叢集

  • 目前資源畫像控制台已在成本套件中開放公測,可直接存取使用。

  • 為了確保畫像結果的準確性,建議您在開啟工作負載的資源畫像後最少觀察等待1天以上,以便累積充足的資料。

費用說明

ack-koordinator組件本身的安裝和使用是免費的,不過需要注意的是,在以下情境中可能產生額外的費用:

  • ack-koordinator是非託管組件,安裝後將佔用Worker節點資源。您可以在安裝組件時配置各模組的資源申請量。

  • ack-koordinator預設會將資源畫像、精細化調度等功能的監控指標以Prometheus的格式對外透出。若您配置組件時開啟了ACK-Koordinator開啟Prometheus監控指標選項並使用了阿里雲Prometheus服務,這些指標將被視為自訂指標併產生相應費用。具體費用取決於您的叢集規模和應用數量等因素。建議您在啟用此功能前,仔細閱讀阿里雲Prometheus計費說明,瞭解自訂指標的免費額度和收費策略。您可以通過賬單和用量查詢,監控和管理您的資源使用方式。

資源畫像介紹

Kubernetes為容器資源管理提供了資源請求(Request)的資源語義描述。當容器指定Request時,調度器會將其與節點的資源容量(Allocatable)進行匹配,決定Pod應該分配到哪個節點。容器的Request一般基於人工經驗填寫,管理員會參考容器的歷史利用率情況、應用的壓測表現,並根據線上運行情況的反饋持續調整。

但基於人工經驗的資源規格配置模式存在以下局限性:

  • 為了保障線上應用的穩定性,管理員通常會預留相當數量的資源Buffer來應對上下遊鏈路的負載波動,容器的Request配置會遠高於其實際的資源使用率,導致叢集資源使用率過低,造成大量資源浪費。

  • 當叢集分配率較高時,為了提升叢集資源使用率,管理員會主動縮小Request配置,協調更多的資源容量。該操作會提升容器的部署密度,當應用流量上漲時會影響叢集的穩定性。

針對以上述問題,ack-koordinator提供資源畫像能力,實現容器粒度的資源規格推薦,降低容器配置的複雜性。ACK通過控制台提供了相應功能,便於應用管理員快速分析應用資源規格的合理性,按需進行資源規格配置的變更。同時,ACK還提供命令列的訪問方式,支援通過CRD直接對應用資源畫像進行管理。

通過控制台使用資源畫像

步驟一:安裝資源畫像

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇成本套件 > 成本最佳化

  3. 成本最佳化頁面,單擊資源畫像頁簽,然後在資源畫像地區,按照頁面提示開啟功能。

    • 組件安裝或升級:按照頁面提示安裝或升級ack-koordinator組件。首次使用時,需要安裝ack-koordinator組件。

      說明

      當前的ack-koordinator版本<0.7.0時,需進行遷移和升級。具體操作,請參見將ack-koordinator從應用市場遷移至組件中心

    • 畫像配置:首次使用時,在安裝或升級完成後,您可以勾選啟用預設配置控制資源畫像的開啟範圍(推薦使用),也可後續在控制台中單擊畫像配置進行調整。

  4. 單擊開啟畫像,進入資源畫像頁面。

步驟二:資源畫像策略管理

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇成本套件 > 成本最佳化

  3. 成本最佳化頁面,單擊資源畫像頁簽,然後單擊畫像配置

    畫像配置分為全量配置自訂配置兩種模式,資源畫像組件安裝過程中推薦的預設配置為全量配置模式。您可以在此對配置模式和配置參數進行修改,並單擊確定生效。

    全量配置模式(推薦)

    全量配置模式將為所有工作負載開啟資源畫像,預設排除arms-prom和kube-system兩個系統命名空間。image.png

    配置項

    說明

    取值範圍

    排除的命名空間

    不開啟資源畫像的命名空間,一般為系統組件對應的命名空間。最終開啟範圍為命名空間和負載類型的交集。

    當前叢集內已經存在的命名空間,支援多選,預設值為kube-system和arms-prom。

    開啟的負載類型

    開啟資源畫像的負載類型範圍。最終開啟範圍為命名空間和負載類型的交集。

    支援K8s原生的三類工作負載,包括Deployment、StatefulSet和DaemonsSet,支援多選。

    CPU/記憶體資源消耗冗餘

    產生資源畫像參考的安全冗餘水位,詳見下文描述。

    要求為非負數,提供三檔常用的冗餘度70%、50%、30%。

    自訂配置模式

    自訂配置模式僅開啟一部分命名空間的工作負載,若您的叢集規模較大(例如1000節點以上),或僅需試用開啟一部分工作負載,可以通過自訂配置模式按需指定。image.png

    配置項

    說明

    取值範圍

    開啟的命名空間

    開啟資源畫像的命名空間,最終開啟範圍為命名空間和負載類型的交集。

    當前叢集內已經存在的命名空間,支援多選。

    負載類型

    開啟資源畫像的負載類型範圍,最終開啟範圍為命名空間和負載類型的交集。

    支援K8s原生的三類工作負載,包括Deployment、StatefulSet和DaemonsSet,支援多選。

    CPU/記憶體資源消耗冗餘

    產生資源畫像參考的安全冗餘水位,詳見下文描述。

    要求為非負數,提供三檔常用的冗餘度(70%、50%、30%)。

    資源消耗冗餘:管理員在評估應用業務容量時(例如QPS),通常不會將實體資源使用到100%。這既包括超執行緒等實體資源的局限性,也包括應用自身需要保留部分資源以應對高峰時段的負載請求。當畫像值與原始資源請求的差距超過安全冗餘時,會提示降配建議,具體演算法參見應用畫像概覽部分中有關畫像建議的說明。資源冗餘

步驟三:查看應用畫像概覽

資源畫像的策略配置完成後,您可以在資源畫像頁面查看各工作負載的資源畫像情況。

為提高畫像結果準確性,首次使用時系統將提示需要至少累積24小時的資料。

image.png

畫像總體概覽以及各列的詳細說明如下表所示。

image.png

說明

下表中,“-”代表不涉及。

列名

含義

取值說明

是否支援欄位篩選

工作負載名稱

對應工作負載的名字(Name)。

-

支援。可在功能表列頂部按名稱進行精確尋找。

命名空間

對應工作負載的名字(Namespace)

-

支援。預設篩選條件中不包括kube-system命名空間。

工作負載類型

對應工作負載的類型。

包括Deployment、DaemonSet和StatefulSet三種類型。

支援。預設篩選條件為全部。

CPU請求

工作負載Pod的CPU資源申請量(Request)。

-

不支援。

記憶體請求

工作負載Pod的記憶體資源申請量。

-

不支援。

畫像資料狀態

工作負載資源畫像。

  • 收集中:資源畫像剛建立,累積的資料較少,首次使用時建議至少等待一天以上,確保工作負載穩定運行一段時間,完整覆蓋了流量的波峰波穀之後再使用。

  • 正常:資源畫像結果已經產生。

  • 工作負載已刪除:對應的工作負載已經刪除,畫像結果將在保留一段時間後自動刪除。

不支援。

CPU畫像、記憶體畫像

資源畫像針對工作負載原始的資源請求量給出的規格(Request)調整建議,建議參考了資源畫像值、原始資源請求量(Request)以及畫像策略配置的資源消耗冗餘,詳見下文描述。

包括升配、降配以及保持三種。對應的百分比為偏差幅度。計算公式為Abs(畫像值-請求值) / 請求值

支援,預設篩選條件包括升配和降配。

建立時間

畫像結果的建立時間。

-

不支援。

資源變更配置

評估畫像結果和改配建議後,單擊資源變更配置進行資源的升降配置。更多資訊,請參見下文的步驟五:變更應用資源規格

-

不支援。

ACK資源畫像會為工作負載的每個容器資源規格產生畫像值,通過對比畫像值(Recommend)、原始資源請求量(Request),以及畫像配置的資源消耗冗餘(Buffer)。資源畫像控制台會為工作負載產生操作的提示,例如對資源請求提高或降低(即升配或降配)。若工作負載有多個容器,則會提示偏差幅度最大的容器,具體計算原理如下。

  • 畫像值(Recommend)大於原始資源請求量(Request):表示容器長期處於資源超用狀態(使用量大於申請量),存在穩定性風險,應及時提高資源規格,控制台提示“建議升配”。

  • 畫像值(Recommend)小於原始資源請求量(Request):表示容器可能有一定程度的資源浪費,可以降低資源規格,需要結合畫像配置的資源消耗冗餘進行判斷,詳情如下:

    1. 根據畫像值和配置的資源消耗冗餘,計算目標資源規格(Target):Target = Recommend * (1 + Buffer)

    2. 計算目標資源規格(Target)與原始資源請求量(Request)的偏離程度(Degree):Degree = 1 - Request / Target

    3. 根據畫像值以及偏離程度(Degree)的水位,產生CPU和記憶體建議的提示操作,若偏離程度(Degree)的絕對值大於0.1,則提示建議降配資訊

  • 針對其他情況,資源畫像為應用資源規格建議的提示為保持,表示可以暫時不調整。

步驟四:查看應用畫像詳情

資源畫像頁面,單擊工作負載名稱,進入對應的畫像詳情頁面。

詳情頁包括三部分功能:工作負載基本資料、各容器的畫像詳情資源曲線、針對應用進行資源規格變更視窗。應用畫像詳情

如上圖所示,以CPU為例,畫像詳情資源曲線中各項指標的含義如下。

曲線名稱

含義

cpu limit

容器的CPU資源限制值。

cpu request

容器的CPU資源請求值。

cpu recommend

容器的CPU資源畫像值。

cpu usage(average)

對應工作負載內,各容器副本CPU使用量的平均值。

cpu usage(max)

對應工作負載內,各容器副本CPU使用量的最大值。

步驟五:變更應用資源規格

  1. 在應用畫像詳情頁面底部的資源變更配置地區,根據畫像產生的畫像值修改各容器的資源規格。

    各列含義如下:資源變更

    配置項

    含義

    當前所需資源

    容器當前填寫的資源請求量(Request)。

    當前限制資源

    容器當前填寫的資源限制量(Limit)。

    畫像值

    資源畫像為容器產生的畫像值,可作為資源請求量(Request)的參考值。

    安全冗餘

    資源畫像策略管理中配置的安全冗餘,可作為目標所需資源的參考值,例如在畫像值的基礎上累加冗餘係數(如上圖4.28 * 1.3 = 5.6)。

    目標所需資源

    容器資源請求量(Request)計劃調整的目標值。

    目標限制資源

    容器資源限制量(Limit)計劃調整的目標值。注意,若工作負載使用了CPU拓撲感知調度,CPU資源的限制需要配置為整數。

  2. 配置完成後,單擊提交,將執行資源規格更新操作並自動跳轉到工作負載詳情頁。

    資源規格更新後,控制器會對工作負載進行變換並重新建立Pod。

通過命令列使用資源畫像

步驟一:啟用資源畫像

  1. 使用以下YAML內容,建立recommendation-profile.yaml檔案,開啟工作負載的資源規格畫像。

    建立RecommendationProfile CRD,可以開啟工作負載的資源畫像,並擷取容器的資源規格畫像資料。RecommendationProfile CRD支援通過命名空間(Namespace)以及工作負載類型控制開啟範圍,開啟範圍為二者的交集。

    apiVersion: autoscaling.alibabacloud.com/v1alpha1
    kind: RecommendationProfile
    metadata:
      # 對象名稱,nonNamespaced類型不需指定命名空間。
      name: profile-demo
    spec:
      # 開啟資源畫像的工作負載類型。
      controllerKind:
      - Deployment
      # 開啟資源畫像的命名空間範圍。
      enabledNamespaces:
      - default

    各項配置欄位含義如下:

    參數

    類型

    說明

    metadata.name

    String

    對象的名稱。若RecommendationProfile為nonNamespaced類型,則無需指定命名空間。

    spec.controllerKind

    String

    開啟資源畫像的工作負載類型。支援的工作負載類型包括Deployment 、StatefulSet和DaemonSet。

    spec.enabledNamespaces

    String

    開啟資源畫像的命名空間範圍。

  2. 執行以下命令,為目標應用開啟資源畫像。

    kubectl apply -f recommender-profile.yaml
  3. 使用以下YAML內容,建立cpu-load-gen.yaml檔案。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cpu-load-gen
      labels:
        app: cpu-load-gen
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: cpu-load-gen-selector
      template:
        metadata:
          labels:
            app: cpu-load-gen-selector
        spec:
          containers:
          - name: cpu-load-gen
            image: registry.cn-zhangjiakou.aliyuncs.com/acs/slo-test-cpu-load-gen:v0.1
            command: ["cpu_load_gen.sh"]
            imagePullPolicy: Always
            resources:
              requests:
                cpu: 8 # 該應用的CPU請求資源為8核。
                memory: "1Gi"
              limits:
                cpu: 12
                memory: "2Gi"
  4. 執行以下命令,通過安裝cpu-load-gen.yaml部署cpu-load-gen應用。

    kubectl apply -f cpu-load-gen.yaml
  5. 執行以下命令,擷取資源規格畫像結果。

    kubectl get recommendations -l \
      "alpha.alibabacloud.com/recommendation-workload-apiVersion=apps-v1, \
      alpha.alibabacloud.com/recommendation-workload-kind=Deployment, \
      alpha.alibabacloud.com/recommendation-workload-name=cpu-load-gen" -o yaml
    說明

    為了確保畫像結果的準確性,建議您最少等待1天以上,以便累積充足的資料。

    ack-koordinator為每個開啟資源畫像的工作負載產生對應的資源規格畫像,並將結果儲存在Recommendation CRD中。名為cpu-load-gen.yaml的工作負載資源規格畫像結果樣本如下。

    apiVersion: autoscaling.alibabacloud.com/v1alpha1
    kind: Recommendation
    metadata:
      labels:
        alpha.alibabacloud.com/recommendation-workload-apiVersion: app-v1
        alpha.alibabacloud.com/recommendation-workload-kind: Deployment
        alpha.alibabacloud.com/recommendation-workload-name: cpu-load-gen
      name: f20ac0b3-dc7f-4f47-b3d9-bd91f906****
      namespace: recommender-demo
    spec:
      workloadRef:
        apiVersion: apps/v1
        kind: Deployment
        name: cpu-load-gen
    status:
      recommendResources:
        containerRecommendations:
        - containerName: cpu-load-gen
          target:
            cpu: 4742m
            memory: 262144k
          originalTarget: # 表示資源畫像演算法的中間結果,不建議直接使用。
           # ...

    為了便於檢索,Recommendation和工作負載的Namespace一致,同時在Label中儲存了工作負載的API Version、類型以及名稱,格式如下表所示。

    Label Key

    說明

    樣本

    alpha.alibabacloud.com/recommendation-workload-apiVersion

    工作負載的API Version,由Kubernetes的Label規範約束,正斜線(/)將被替換為短劃線(-)。

    app-v1(替換前為app/v1)

    alpha.alibabacloud.com/recommendation-workload-kind

    對應的工作負載類型,例如Deployment、StatefulSet等。

    Deployment

    alpha.alibabacloud.com/recommendation-workload-name

    工作負載名稱,由Kubernetes的Label規範約束,長度不能超過63個字元。

    cpu-load-gen

    各容器的資源規格畫像結果儲存在status.recommendResources.containerRecommendations中,各欄位含義如下表所示。

    欄位名稱

    含義

    格式

    樣本

    containerName

    表示容器名稱。

    string

    cpu-load-gen

    target

    表示資源規格畫像結果,包括CPU和Memory兩個維度。

    map[ResourceName]resource.Quantity

    cpu: 4742mmemory: 262144k

    originalTarget

    表示資源規格畫像演算法的中間結果,不建議直接使用。若您有特殊需求,請提交工單

    -

    -

    說明

    單個Pod畫像的CPU最小值為0.025核,記憶體的最小值為250 MB。

    通過對比目標應用(cpu-load-gen.yaml)中聲明的資源規格和本步驟畫像檢測結果,以CPU為例,可以發現該容器的Request申請過大。您可以通過調小Request來節省叢集資源容量。

    類別

    原始資源規格

    資源畫像規格

    CPU

    8核

    4.742核

步驟二:(可選)通過Prometheus查看結果

ack-koordinator組件為資源畫像結果提供了Prometheus查詢介面,您可以通過ACK提供的Prometheus監控直接查看。

  • 如果您首次使用該功能的大盤,請確保資源畫像大盤已經升級到最新版本。關於升級的具體操作,請參見相關操作

    通過ACK控制台Prometheus監控查看資源畫像結果的具體操作如下:

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > Prometheus 監控

    3. Prometheus監控頁面,選擇成本分析/資源最佳化 > 資源畫像

      資源畫像頁簽,查看詳細資料,包括容器的規格(Request)、容器實際的資源使用量(Usage)以及容器的資源規格畫像值(Recommend)。更多資訊,請參見使用阿里雲Prometheus監控

  • 如果您自建了Prometheus監控,請參考以下監控項來配置大盤。

    # 指定工作負載中容器的CPU資源規格畫像。
    koord_manager_recommender_recommendation_workload_target{exported_namespace="$namespace", workload_name="$workload", container_name="$container", resource="cpu"}
    # 指定工作負載中容器的Memory資源規格畫像。
    koord_manager_recommender_recommendation_workload_target{exported_namespace="$namespace", workload_name="$workload", container_name="$container", resource="memory"}
    重要

    ack-koordinator組件提供的資源畫像監控指標已於v1.5.0-ack1.14版本中更名為koord_manager_recommender_recommendation_workload_target,但同時對於更早版本中提供的資源畫像監控指標slo_manager_recommender_recommendation_workload_target也仍然相容。如果您自建了Prometheus監控,建議您在升級ack-koordinator組件至v1.5.0-ack1.14版本後將監控指標切換至koord_manager_recommender_recommendation_workload_target

FAQ

資源畫像的演算法原理是什嗎?

資源畫像演算法涉及一套多維度資料模型,演算法原理可以總結為以下幾點:

  • 資源畫像演算法會持續不斷地收集容器的資源使用資料,取CPU和記憶體的彙總統計值生產畫像結果。

  • 針對時間這一因素進行了最佳化,在彙總統計時,較新的資料採樣點會擁有更高的權重。

  • 演算法參考了容器出現OOM等運行狀態資訊,可以進一步提高畫像值的準確性。

資源畫像對應用的類型有什麼要求?

適合於線上服務類應用使用。

目前資源畫像的結果優先考慮滿足容器的資源需求,確保可以覆蓋絕大部分資料樣本。不過對於離線應用來說,這種批處理類型的任務更加關注整體的吞吐,可以接受一定程度的資源競爭,以提高叢集資源的整體利用率,畫像結果對於離線應用來說會顯得有些保守。此外,對於關鍵的系統組件,通常以“主備”的形式部署多個副本,處於“備份”角色的副本長期處於閑置狀態,這些副本的資源用量樣本也會對畫像演算法產生一定程度的幹擾。針對以上情境,請對畫像結果按需加工後再使用,後續您可持續關注資源畫像的產品動態。

是否可以直接使用畫像值來設定容器的Request和Limit?

需要結合業務自身特點來判斷,資源畫像提供的結果是對應用當前資源需求情況的總結,管理員應結合應用自身特性,在畫像值的基礎之上加工後使用,例如考慮留有一定的容量來應對流量高峰,或是做“同城雙活”的無縫切換,都需要留有一定數量的資源冗餘;或者應用對資源較為敏感,無法在宿主機負載較高時平穩運行,也需要在畫像值的基礎上調高規格。

自建Prometheus如何查看資源畫像監控指標?

資源畫像的相關監控指標會在ack-koordinator組件的Koordinator Manager模組以Promethus的格式提供HTTP介面。您可以執行以下命令擷取Pod IP,並訪問查看指標資料。

# 執行以下命令擷取Pod IP地址
$ kubectl get pod -A -o wide | grep koord-manager
# 預期輸出,具體以實際情況為準
kube-system   ack-koord-manager-5479f85d5f-7xd5k                         1/1     Running            0                  19d   192.168.12.242   cn-beijing.192.168.xx.xxx   <none>           <none>
kube-system   ack-koord-manager-5479f85d5f-ftblj                         1/1     Running            0                  19d   192.168.12.244   cn-beijing.192.168.xx.xxx   <none>           <none>

# 執行以下命令查看指標資料(注意Koordinator Manager是雙副本主備模式,資料只會在主副本Pod中提供)
# 其中IP地址和連接埠請參考Koordinator Manager模組對應的Deployment配置
# 訪問前請確保當前執行命令的宿主機能與叢集的容器網路互連。
$ curl -s http://192.168.12.244:9326/metrics | grep slo_manager_recommender_recommendation_workload_target
# 預期輸出(具體以實際情況為準)
# HELP slo_manager_recommender_recommendation_workload_target Recommendation of workload resource request.
# TYPE slo_manager_recommender_recommendation_workload_target gauge
slo_manager_recommender_recommendation_workload_target{container_name="xxx",namespace="xxx",recommendation_name="xxx",resource="cpu",workload_api_version="apps/v1",workload_kind="Deployment",workload_name="xxx"} 2.406
slo_manager_recommender_recommendation_workload_target{container_name="xxx",namespace="xxx",recommendation_name="xxx",resource="memory",workload_api_version="apps/v1",workload_kind="Deployment",workload_name="xxx"} 3.861631195e+09

ack-koordinator組件安裝後,會自動建立Service和Service Monitor對象,關聯對應的Pod。如果您正在使用阿里雲Promethus,那麼這些指標會被自動採集,並展示在對應的Grafana大盤上。

由於Prometheus有多種採集方式,如果您使用的是自建Prometheus,請自行參見Prometheus官方文檔進行配置,並在配置過程中參考以上過程進行調試。調試完成後,您可參見步驟二:(可選)通過Prometheus查看結果,在環境中配置對應的Grafana監控大盤。

如何清理資源畫像結果和規則?

資源畫像結果和規則分別儲存在Recommendation和RecommendationProfile兩個CRD中,執行以下命令刪除所有資源畫像結果和規則。

# 刪除所有資源畫像結果。
kubectl delete recommendation -A --all

# 刪除所有資源畫像規則。
kubectl delete recommendationprofile -A --all

如何為子帳號使用資源畫像進行授權?

ACK的授權體系包含對基礎資源層的RAM授權和對ACK叢集層的RBAC(Role-Based Access Control)授權兩部分,有關ACK的授權體系介紹,請參見授權最佳實務。若您希望為某一子帳號授權使用叢集的資源畫像功能,推薦您參考以下最佳實務進行授權:

  1. RAM授權

    您可以使用主帳號登入Resource Access Management控制台,為該子帳號授予系統內建的AliyunCSFullAccess許可權。具體操作,請參見授權概述

  2. RBAC授權

    完成RAM授權後,您還需要為該子帳號授予目的地組群中開發人員或以上的RBAC許可權。具體操作,請參見叢集資源許可權(RBAC授權)

說明

系統預置的開發人員或以上的RBAC許可權擁有對叢集中所有Kubernetes資源的讀寫權限。若您希望對子帳號授予更精細化的許可權,可以參考自訂RBAC授權策略建立或編輯自訂ClusterRole執行個體。資源畫像功能需要為ClusterRole添加如下內容:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: recommendation-clusterrole
- apiGroups:
  - autoscaling.alibabacloud.com
  resources:
  - '*'
  verbs:
  - '*'