Azure Stack Hub での AKS エンジンのトラブルシューティング

Azure Stack Hub で AKS エンジンをデプロイまたは操作するときに問題が発生する場合があります。 この記事では、AKS エンジンのデプロイのトラブルシューティング手順について説明します。 AKS エンジンに関する情報を収集し、Kubernetes ログを収集して、カスタム スクリプト拡張機能のエラーコードを確認します。 AKS エンジンの GitHub イシューを開くこともできます。

注意

AKSe バージョン 0.75.3 以降の場合、以下のaks-engineコマンドは ではなく aks-engineaks-engine-azurestack始まります。

AKS エンジンのインストールのトラブルシューティング

以前のインストール手順に失敗した場合は、GoFish パッケージ マネージャーを使用して AKS エンジンをインストールできます。 GoFish では、自身がクロスプラットフォームの Homebrew として記述されます。

GoFish を使用して AKS エンジンをインストールする手順については、こちらを参照してください

ノードとクラスターのログの収集

ノードとクラスターのログを収集する方法については、「ノードとクラスターのログを取得する」を参照してください。

前提条件

このガイドでは、 Azure CLIAKS エンジンが既にダウンロードされていることを前提としています。

このガイドでは、AKS エンジンを使用してクラスターをデプロイしたことも前提としています。 詳細については、「 Azure Stack Hub に AKS エンジンを使用して Kubernetes クラスターをデプロイする 」を参照してください。

ログの取得

aks-engine get-logs コマンドは、クラスターに関する問題のトラブルシューティングに役立ちます。 コマンドを実行すると、一連のファイルが生成および収集され、ワークステーションにダウンロードされます。 これらのファイルには、ノード構成、クラスターの状態と構成、設定ログファイルが含まれます。

概要: コマンドは、各ノードへの SSH セッションの確立、関連ファイルを収集して zip するログ収集スクリプトの実行、ローカル コンピューターへの ZIP ファイルのダウンロードを行うことによって機能します。

SSH 認証

クラスターの Linux ノードへの SSH セッションを確立するには、有効な SSH 秘密キーが必要です。 Windows 資格情報は API モデルに保存され、そこから読み込まれます。 Windows ノードで SSH を有効にするには、windowsprofile.sshEnabled を true に設定します。

ストレージ アカウント コンテナーにログをアップロードする

オプションのパラメーター --upload-sas-url が設定されている場合、クラスターのログが正常に取得されると、AKS Engine は、Azure Storage アカウント コンテナーにそのログを保存することができます。 AKS エンジンでは、コンテナー名は指定された SAS URL の一部であることが想定されています。 https://{blob-service-uri}/{container-name}?{sas-token} 形式で指定する必要があります。

注意

AD FS ID プロバイダーを使用したカスタム クラウドのストレージ アカウントはまだサポートされていません。

ノードがクラスターに参加できない

既定では、aks-engine get-logs は、クラスターに正常に参加したノードからログを収集します。 クラスターに参加できなかった VM からログを収集するには、フラグ --vm-names を設定します。

--vm-name k8s-pool-01,k8s-pool-02

Aks エンジン取得ログの使用方法

クラスターがデプロイされており、そのクラスターのデプロイに最初に使用された API モデルが _output/<dnsPrefix>/apimodel.json に保存されている場合、次のようなコマンドを実行することでログを収集できます。

aks-engine get-logs \
    --location <location> \
    --api-model _output/<dnsPrefix>/apimodel.json \
    --ssh-host <dnsPrefix>.<location>.cloudapp.azure.com \
    --linux-ssh-private-key ~/.ssh/id_rsa

パラメーター

パラメーター 必須 説明
--location はい クラスターのリソース グループの Azure の場所。
--api-model はい クラスターに対して生成された API モデルへのパス。
--ssh-host はい クラスター内のすべてのノードに到達できる SSH リスナーの FQDN または IP アドレス。
--linux-ssh-private-key はい クラスターの Linux ノード上でリモート セッションを作成するために使用できる SSH 秘密キーへのパス。
--output-directory いいえ 出力ディレクトリ。見つからない場合は --api-model から派生します。
--control-plane-only いいえ コントロール プレーン ノードからのログのみを収集します。
--vm-names いいえ 指定された VM (コンマ区切りの名前) からのみログを収集します。
--upload-sas-url いいえ 収集したログをアップロードするための Azure Storage アカウントの SAS URL。

カスタム スクリプト拡張機能のエラー コードを確認する

AKS エンジンは、カスタム スクリプト拡張機能 (CSE) がデプロイ タスクを実行するためのリソースとして、各 Ubuntu Server 用のスクリプトを生成します。 このスクリプトがエラーをスローすると、/var/log/azure/cluster-provision.log にエラーが記録されます。 エラーはポータルに表示されます。 エラー コードは、問題の状況を把握するのに役立つ場合があります。 CSE 終了コードの詳細については、「cse_helpers.sh」を参照してください。

Microsoft サポート エンジニアへの Kubernetes ログの提供

ログの収集と調査を行っても問題が解決しない場合は、サポート チケットの作成プロセスを開始し、収集したログを提供してください。

オペレーターは、生成したログを、Microsoft サポートが必要とする可能性のある他のシステム ログと組み合わせることができます。 オペレーターは、それらを Microsoft で使用できるようにすることができます。

Kubernetes ログは、いくつかの方法で提供できます。

  • お客様の Azure Stack Hub オペレーターに依頼することができます。 オペレーターは、.ZIP ファイルに保存されているログの情報を使用して、サポート ケースを作成します。
  • Kubernetes ログをアップロードできるストレージ アカウントの SAS URL がある場合は、次のコマンドとフラグを SAS URL に含めて、ログをストレージ アカウントに保存できます。
    aks-engine get-logs -upload-sas-url <SAS-URL>
    
    手順については、「ストレージ アカウント コンテナーにログをアップロードする」を参照してください。
  • クラウド オペレーターの場合、次のことができます。

GitHub イシューを開く

デプロイ エラーを解決できない場合は、GitHub イシューを開くことができます。

  1. AKS エンジン リポジトリで GitHub イシューを開きます。

  2. 次の形式を使用してタイトルを追加します。CSEエラー: exit code <INSERT_YOUR_EXIT_CODE>

  3. イシューには次の情報を含めます。

    • クラスターのデプロイに使用されるクラスター構成ファイル apimodel.json。 GitHub に投稿する前に、すべてのシークレットとキーを削除します。

    • 次の kubectl コマンド get nodes の出力。

    • 異常なノードからの /var/log/azure/cluster-provision.log の内容。

次の手順