マルチクラスタ アラート管理機能を使用すると、Fleet インスタンスでアラート ルールを一元的に作成または変更できます。ただし、伝搬されるアラート ルールは、関連付けられているすべてのクラスタで同一です。クラスタごとに異なるアラート ルールが必要な場合は、アラート ルールをオーバーライドして、異なるクラスタで異なるアラート構成を使用できるようにします。
前提条件
Fleet 管理機能が有効になっている。
2 つのクラスタが Fleet インスタンスに関連付けられている(サービス プロバイダー クラスタとサービス利用者クラスタ)。
背景情報
アラート ルールの差別化構成の原則は、アプリケーションの差別化構成と一致しています。オープンソースの KubeVela を使用して、Fleet インスタンスでオーバーライド ポリシーを定義および伝搬します。 Fleet インスタンスで統一されたアラート ルールを定義し、特定のクラスタで差別化構成のオーバーライド ポリシーを作成できます。たとえば、GPU 関連のアラートの有効化、異なるアラートしきい値の設定、異なる連絡先の構成などです。オーバーライド ポリシーが適用されたアラート ルールは、ターゲットの関連付けられたクラスタに伝搬されます。
次の図は、クラスタのアラート構成がどのように差別化されるかを示しています。オーバーライド ポリシーは Fleet インスタンスで作成されます。オーバーライド ポリシーが適用された差別化構成は ACK クラスタ 2 に配信されますが、ACK クラスタ 1 は元のアラート構成を保持します。
手順 1:連絡先と連絡先グループを作成する
手順 2:差別化されたアラート ルールを伝搬する
アラート ルールの差別化は KubeVela を介して実装されます。オーバーライド ポリシーは Fleet レベルで定義および伝搬されます。
アラート ルールを伝搬するクラスタの 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 アラートを有効にし、アラートしきい値を変更し、連絡先を変更します。apiVersion: core.oam.dev/v1alpha1 # クラスタ ID でアラート ルールが伝搬されるクラスタを指定します。 kind: Policy metadata: name: cluster-cpu namespace: kube-system type: topology properties: clusters: ["<ack-cluster-1>"] # <ack-cluster-1> を ack cluster 1 のクラスタ ID に置き換えます。 --- apiVersion: core.oam.dev/v1alpha1 # クラスタ ID でアラート ルールが伝搬されるクラスタを指定します。 kind: Policy metadata: name: cluster-gpu namespace: kube-system type: topology properties: clusters: ["<ack-cluster-2>"] # <ack-cluster-2> を ack cluster 2 のクラスタ ID に置き換えます。 --- apiVersion: core.oam.dev/v1alpha1 # オーバーライド ポリシーを定義します。 kind: Policy metadata: name: override-gpu namespace: kube-system type: override properties: components: - name: ackalertrules # 関連付けられたアプリケーションのコンポーネント名。 traits: - type: alert-rule # alert-rule トレイトは、アラート ルールを変更するために使用されます。 properties: groups: # オーバーライド構成。構造はアラート ルールと同じです。オーバーライドする複数のグループとアラート ルールを定義できます。 - name: res-exceptions # オーバーライドするアラート グループの名前を指定します。 rules: - contactGroups: # 連絡先グループをオーバーライドします。 - arms_contact_group_id: "12345" cms_contact_group_name: ack_Default Contact Group id: "1234" enable: enable # 値を enable に変更します。 name: node_cpu_util_high # オーバーライドするアラート ルールの名前を指定します。 thresholds: # しきい値を変更します。 - key: CMS_ESCALATIONS_CRITICAL_Threshold unit: percent value: "60" - name: cluster-error # オーバーライドするアラート グループの名前を指定します。 rules: - enable: enable # 値を enable に変更します。 name: gpu-xid-error # オーバーライドするアラート ルールの名前を指定します。 --- 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"] # オーバーライド ポリシーを適用して、cluster-gpu のアラート ルールをオーバーライドします。 --- apiVersion: core.oam.dev/v1beta1 # KubeVela アプリケーションを定義します。 kind: Application metadata: name: alertrules namespace: kube-system annotations: app.oam.dev/publishVersion: version1 # リソースが更新されたときにアラート ルールを再伝搬します。 publishVersion の値を変更する必要があります。 spec: components: - name: ackalertrules type: ref-objects properties: objects: - resource: ackalertrules # 手順 3 で作成したアラート ルールを参照します。 name: default workflow: ref: deploy-ackalertrules # ワークフローで定義された伝搬ルールを使用して、アラート ルールを伝搬します。次のコマンドを実行して、オーバーライド ポリシーを適用し、アラート ルールをオーバーライドします。
kubectl apply -f ackalertrule-app-override.yaml次のコマンドを実行して、アラート ルールの伝搬の進行状況を表示します。
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: **