次の方法で共有


AKS ポッドを停止する Chaos Mesh 障害を利用するカオス実験を Azure portal で作成する

カオス実験を使用して、制御された環境で障害を引き起こすことで、アプリケーションにこれらの障害に対する回復性があることを確認できます。 この記事では、カオス実験および Azure Chaos Studio を使用することで、名前空間に対して Azure Kubernetes Service (AKS) ポッドの定期的な障害を起こします。 この実験を実行することは、散発的な障害が発生したときにサービスを利用できなくなるのを防ぐのに役立つ場合があります。

Chaos Studio では Chaos Mesh を使用します。これは、Kubernetes で AKS クラスターに障害を挿入するための無料のオープンソース カオス エンジニアリング プラットフォームです。 Chaos Mesh フォールトは、AKS クラスターに Chaos Mesh をインストールする必要があるサービス直接フォールトです。 お客様が任意の AKS Chaos Mesh 障害の実験をセットアップして実行する際には、ここに示す手順をそのまま使用できます。

前提条件

制限事項

AKS クラスターで Chaos Mesh を設定する

Chaos Studio で Chaos Mesh 障害を実行する前に、AKS クラスターに Chaos Mesh をインストールする必要があります。

  1. アクティブなサブスクリプションが、AKS クラスターがデプロイされているサブスクリプションに設定されている Azure Cloud Shell ウィンドウで、次のコマンドを実行します。 MyManagedClusterMyResourceGroup をクラスターとリソース グループの名前に置き換えます。

    az aks get-credentials --admin --name MyManagedCluster --resource-group MyResourceGroup
    
    helm repo add chaos-mesh https://charts.chaos-mesh.org
    helm repo update
    kubectl create ns chaos-testing
    helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
    
  2. 次のコマンドを実行して、Chaos Mesh ポッドがインストールされていることを確認します。

    kubectl get po -n chaos-testing
    

    表示される出力結果は、以下の例 (chaos-controller-manager と 1 つまたは複数の chaos-daemon) のようになります。

    NAME                                        READY   STATUS    RESTARTS   AGE
    chaos-controller-manager-69fd5c46c8-xlqpc   1/1     Running   0          2d5h
    chaos-daemon-jb8xh                          1/1     Running   0          2d5h
    chaos-dashboard-98c4c5f97-tx5ds             1/1     Running   0          2d5h
    

また、Chaos Mesh Web サイトのインストール手順を使用することもできます。

AKS クラスターで Chaos Studio を有効にする

Chaos Studio では、最初にリソースが Chaos Studio に追加されない限り、リソースに対して障害を挿入することはできません。 リソースにターゲットと機能を作成することによって、リソースを Chaos Studio に追加します。 AKS クラスターにはターゲットの種類 (サービスダイレクト) が 1 つだけありますが、他のリソースには最大 2 つのターゲットの種類が含まれる場合があります。 ターゲットの種類の 1 つはサービスダイレクト障害用です。 もう 1 つのターゲットの種類はエージェントベース障害用です。 Chaos Mesh フォールトの種類はそれぞれ機能 (PodChaos、NetworkChaos、IOChaos など) として表されます。

  1. Azure Portalを開きます。

  2. 検索バーで「Chaos Studio」を検索します。

  3. [ターゲット] を選択し、AKS クラスターに移動します。

    [対象] ビューを示している Azure portal のスクリーンショット。

  4. AKS クラスターの横にあるチェックボックスを選択します。 [ターゲットを有効にする] を選択し、ドロップダウン メニューから [サービス直接ターゲットを有効にする] を選びます。

    Azure portal でのターゲットの有効化を示すスクリーンショット。

  5. 目的のリソースが一覧表示されていることを確認します。 [確認と有効] を選択し、[有効にする] を選択します。

  6. 選択したリソースが正常に有効になっていることを示す通知が表示されます。

    ターゲットが正常に有効にされたことを示す通知を示すスクリーンショット。

これで、AKS クラスターが Chaos Studio に正常に追加されました。 [ターゲット] ビューでは、このリソースで有効になっている機能を管理することもできます。 リソースの横にある [アクションの管理] リンクを選択すると、そのリソースに対して有効になっている機能が表示されます。

実験の作成

実験を作成するための準備ができました。 カオス実験の作成時には、ターゲット リソースに対して実行するアクションを定義します。 アクションは編成され、順番に実行されます。 カオス実験では、ブランチに対して並列に実行するアクションも定義できます。

  1. Chaos Studio の [実験] タブを選択します。 このビューでは、ご自分のすべてのカオス実験を表示および管理できます。 [作成]>[新しい実験] を選択します。

    Azure portal の実験ビューを示すスクリーンショット。

  2. [サブスクリプション][リソース グループ] 、カオス実験をデプロイする [場所] の情報を入力します。 実験に名前を付けます。 [Next: Experiment designer] (次へ: 実験デザイナー >) を選択します。

    基本的な実験の詳細の追加を示すスクリーンショット。

  3. 現在表示されている画面は、Chaos Studio の実験デザイナーです。 実験デザイナーでは、ステップ、分岐、および障害を追加して実験を構築することができます。 [ステップ][ブランチ]にフレンドリ名を付け、[アクションの追加] > [障害の追加] を選択します。

    実験デザイナーを示すスクリーンショット。

  4. ドロップダウン リストから [AKS Chaos Mesh Pod Chaos] を選択します。 Duration に失敗を継続する分数を入力し、jsonSpec に次の情報を入力します。

    Chaos Mesh jsonSpec を作成するには、次のようにします。

    1. 障害の種類 (たとえば、PodChaos という種類) については、Chaos Mesh のドキュメントを参照してください。

    2. Chaos Mesh のドキュメントを使用して、その障害の種類の YAML 構成を作成します。

      apiVersion: chaos-mesh.org/v1alpha1
      kind: PodChaos
      metadata:
        name: pod-failure-example
        namespace: chaos-testing
      spec:
        action: pod-failure
        mode: all
        duration: '600s'
        selector:
          namespaces:
            - default
      
    3. (spec プロパティ名を含む) spec の外側の YAML を削除し、spec の詳細のインデントを解除します。 duration パラメーターは必要ありませんが、指定された場合は使用されます。 この場合は削除します。

      action: pod-failure
      mode: all
      selector:
        namespaces:
          - default
      
    4. このような YAML から JSON へのコンバーターを使用して、Chaos Mesh YAML を JSON に変換し、それを最小化します。

      {"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
      
    5. 最小化された JSON をポータルの [jsonSpec] フィールドに貼り付けます。

  5. [Next: Target resources] (次へ: ターゲット リソース >) を選択します。

    フォールトのプロパティを示すスクリーンショット。

  6. AKS クラスターを選択し、[次へ]を選択します。

    ターゲットの追加を示すスクリーンショット。

  7. 実験が正しいことを確認し、[確認および作成]>[作成] の順に選択します。

    実験の確認と作成を示すスクリーンショット。

AKS クラスターに実験のアクセス許可を付与する

カオス実験を作成すると、ターゲット リソースに対して障害を実行するシステム割り当てマネージド ID が Chaos Studio によって作成されます。 実験を正常に実行するには、この ID にターゲット リソースへの適切なアクセス許可を付与する必要があります。

  1. AKS クラスターに移動し、[アクセス制御 (IAM)] を選択します。

    AKS の [概要] ページを示すスクリーンショット。

  2. [追加] > [ロール割り当ての追加] の順に選択します。

    アクセスの制御 (IAM) の概要を示すスクリーンショット。

  3. Azure Kubernetes Service クラスター管理者ロールを検索し、そのロールを選択します。 [次へ] を選択します。

    AKS クラスター管理者ロールの割り当てを示すスクリーンショット。

  4. [メンバーの選択] を選び、実験名を検索します。 ご自分の実験を選択し、[選択] を選びます。 同じテナント内に同じ名前の実験が複数ある場合は、実験名が切り詰められ、ランダムな文字列が追加されます。

    ロールへの実験の追加を示すスクリーンショット。

  5. [確認と割り当て]>[確認と割り当て] を選択します。

実験を実行する

実験の実行準備が整いました。 効果を確認するには、AKS クラスターの概要を開き、別のブラウザー タブで [分析情報] に移動することをおすすめします。Active Pod Count のライブ データは、実験を実行した効果を示します。

  1. [実験] ビューで実験を選びます。 [開始]>[OK] を選択します。

    実験の開始を示すスクリーンショット。

  2. [状態][実行中] に変わったら、[履歴] で、最新の実行の [詳細] を選択し、実行中の実験の詳細を確認します。

次のステップ

以上で AKS Chaos Mesh サービスダイレクト実験の実行が済み、以下の内容に進む準備ができました。