全部產品
Search
文件中心

Container Service for Kubernetes:多叢集警示差異化配置

更新時間:Apr 23, 2025

通過多叢集統一警示管理,您可以在Fleet執行個體中配置或修改警示規則。但由於下發的警示規則在各個關聯集群中完全一致,如果不同叢集需要不同的警示規則,您可以通過多叢集的警示差異化配置實現該功能。本文介紹如何定義多叢集警示差異化,實現不同叢集的警示差異化配置。

前提條件

背景資訊

警示規則的差異化配置和應用差異化配置原理一致,通過開源KubeVela在Fleet執行個體上定義配置並進行分發。您可以在Fleet執行個體中定義統一的警示規則,並針對特定的叢集定義警示的差異化配置,例如開啟GPU警示,設定不同的警示閾值和不同的警示連絡人等,再將統一的警示規則以及差異化後的警示規則分發到目標關聯集群中。

多叢集警示差異化配置架構如下圖所示,Fleet執行個體中的差異化配置下發到ACK Cluster 2,而ACK Cluster 1不使用差異化配置。

步驟一:配置警示資訊

  1. 建立警示連絡人與連絡人分組

  2. 擷取警示連絡人分組ID

  3. 建立警示規則

步驟二:差異化配置警示規則並進行分發

警示規則的差異化配置通過開源KubeVela,在Fleet執行個體上定義差異化配置並進行分發。具體操作步驟如下:

  1. 執行以下命令,擷取分發的目的地組群的Cluster ID。

    kubectl get managedcluster 

    預期輸出:

    NAME            HUB ACCEPTED   MANAGED CLUSTER URLS   JOINED   AVAILABLE   AGE
    c565e4****      true                                  True     True        12d
    cbaa12****      true                                  True     True        12d
    說明

    您也可以通過給關聯集群打標的方式選擇目的地組群。具體操作,請參見方式二:通過給關聯集群打標選擇目的地組群

  2. 使用以下內容,定義差異化配置ackalertrule-app-override.yaml

    如下樣本中,ack-cluster-1為CPU叢集,ack-cluster-2為GPU叢集,該樣本可實現對ack-cluster-2即GPU叢集的差異化配置,包括開啟GPU警示、修改警示閾值和警示連絡人。

    apiVersion: core.oam.dev/v1alpha1  # 定義分發目的地組群,使用Cluster ID標識。
    kind: Policy
    metadata:
      name: cluster-cpu
      namespace: kube-system
    type: topology
    properties:
      clusters: ["<ack-cluster-1>"] # 替換<ack-cluster-1>為ack cluster 1的Cluster ID。
    ---
    apiVersion: core.oam.dev/v1alpha1 # 定義分發目的地組群,使用Cluster ID標識。
    kind: Policy
    metadata:
      name: cluster-gpu
      namespace: kube-system
    type: topology
    properties:
      clusters: ["<ack-cluster-2>"] # 替換<ack-cluster-2>為ack cluster 2的Cluster ID。
    ---
    apiVersion: core.oam.dev/v1alpha1 # 定義Override規則。
    kind: Policy
    metadata:
      name: override-gpu
      namespace: kube-system
    type: override
    properties:
      components:
      - name: ackalertrules  # 關聯Application中的Component名稱。
        traits:
        - type: alert-rule   # alert-rule trait用於修改ack alert rule。
          properties:
            groups:           # 差異化配置,結構與ack alert rule的結構一致,可以定義多個Groups和alerts的差異化。
            - name: res-exceptions      # 選擇要修改的alert group。
              rules:
              - contactGroups:           # 修改contactGroups。
                - arms_contact_group_id: "12345"
                  cms_contact_group_name: ack_Default Contact Group
                  id: "1234"
                enable: enable           # 修改enable。
                name: node_cpu_util_high # 選擇要修改的alert name
                thresholds:              # 修改thresholds。
                - key: CMS_ESCALATIONS_CRITICAL_Threshold
                  unit: percent
                  value: "60"
            - name: cluster-error    # 選擇要修改的alert group。
              rules:
              - enable: enable       # 只修改enable。
                name: gpu-xid-error  # 選擇要修改的alert name。
    ---
    apiVersion: core.oam.dev/v1alpha1  # Kubevela工作流程定義。
    kind: Workflow
    metadata:
      name: deploy-ackalertrules
      namespace: kube-system
    steps:
      - type: deploy
        name: deploy-cpu
        properties:
          policies: ["cluster-cpu"]   # 部署到分發目標cluster-cpu。
      - type: deploy
        name: deploy-gpu
        properties:
          policies: ["override-gpu", "cluster-gpu"]  # 應用Override規則,並部署到分發目標cluster-gpu。
    ---
    apiVersion: core.oam.dev/v1beta1   # Kubevela Application定義。
    kind: Application
    metadata:
      name: alertrules
      namespace: kube-system
      annotations:
        app.oam.dev/publishVersion: version1  # 當任何資源改變,需要重新下發Alert時,需要修改publishVersion。
    spec:
      components:
        - name: ackalertrules
          type: ref-objects
          properties:
            objects:
              - resource: ackalertrules    # 引用步驟三建立的警示規則ack alert rules。
                name: default
      workflow:
        ref: deploy-ackalertrules  # 使用Workflow中定義的分發規則下發。
  3. 執行以下命令,建立差異化配置與分發規則。

    kubectl apply -f ackalertrule-app-override.yaml
  4. 執行以下命令,查看警示規則的分發執行狀態。

    kubectl amc appstatus alertrules -n kube-system --tree --detail

    預期輸出:

    CLUSTER                       NAMESPACE       RESOURCE             STATUS    APPLY_TIME          DETAIL
    c565e4**** (ack-cluster-1)─── kube-system─── AckAlertRule/default updated   2022-**-** **:**:** Age: **
    cbaa12**** (ack-cluster-2)─── kube-system─── AckAlertRule/default updated   2022-**-** **:**:** Age: **