Azure Stack Hub での AKS エンジンのトラブルシューティング
Azure Stack Hub で AKS エンジンをデプロイまたは操作するときに問題が発生する場合があります。 この記事では、AKS エンジンのデプロイのトラブルシューティング手順について説明します。 AKS エンジンに関する情報を収集し、Kubernetes ログを収集して、カスタム スクリプト拡張機能のエラーコードを確認します。 AKS エンジンの GitHub イシューを開くこともできます。
注意
AKSe バージョン 0.75.3 以降の場合、以下のaks-engine
コマンドは ではなく aks-engine
でaks-engine-azurestack
始まります。
AKS エンジンのインストールのトラブルシューティング
以前のインストール手順に失敗した場合は、GoFish パッケージ マネージャーを使用して AKS エンジンをインストールできます。 GoFish では、自身がクロスプラットフォームの Homebrew として記述されます。
GoFish を使用して AKS エンジンをインストールする手順については、こちらを参照してください。
ノードとクラスターのログの収集
ノードとクラスターのログを収集する方法については、「ノードとクラスターのログを取得する」を参照してください。
前提条件
このガイドでは、 Azure CLI と AKS エンジンが既にダウンロードされていることを前提としています。
このガイドでは、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>
- クラウド オペレーターの場合、次のことができます。
- Azure Stack Hub 管理ポータルの [ヘルプとサポート] ブレードを使用して、ログをアップロードします。 手順については、「管理者ポータルを使用して今すぐログを送信する」を参照してください。
- 特権エンドポイント (PEP) を利用して、Get AzureStackLog PowerShell コマンドレットを使用してください。手順については、「PowerShell を使用して今すぐログを送信する」を参照してください。
GitHub イシューを開く
デプロイ エラーを解決できない場合は、GitHub イシューを開くことができます。
AKS エンジン リポジトリで GitHub イシューを開きます。
次の形式を使用してタイトルを追加します。CSEエラー:
exit code <INSERT_YOUR_EXIT_CODE>
。イシューには次の情報を含めます。
クラスターのデプロイに使用されるクラスター構成ファイル
apimodel.json
。 GitHub に投稿する前に、すべてのシークレットとキーを削除します。次の kubectl コマンド
get nodes
の出力。異常なノードからの
/var/log/azure/cluster-provision.log
の内容。
次の手順
- Azure Stack Hub 上の AKS エンジンに関する記事を確認してください。