接続時に構成ファイルを使用できない
この記事では、 config ファイルがないために Azure Kubernetes Service (AKS) クラスターに接続できない場合に発生する問題を修正する方法について説明します。
前提条件
- Azure CLI。
- Kubernetes クラスターのコマンド ライン ツール (kubectl)。 または、Azure CLI で az aks install-cli コマンドを実行して kubectl をインストールすることもできます。
現象
クラスター接続の試行中に、次のテキストのようなエラー メッセージが表示されます。
Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.
error: You must be logged in to the server (the server has asked for the client to provide credentials)
原因
kubectl ツールおよびその他の Kubernetes 接続ツールは、config という名前のローカル構成ファイルを使用します。config ファイルには、クラスターに接続するための認証資格情報と詳細が含まれています。 既定:
Azure CLI の az aks get-credentials コマンドは、マネージド Kubernetes クラスターのアクセス資格情報を取得するために使用され、 ~/.kube/config ファイルを変更します。
kubectl コマンドは、$HOME/.kube ディレクトリの kubeconfig (kubectl 構成) ファイルを使用します。
そのため、Kubernetes セッションの試行中に何が起こるかは、kubectl コマンドを実行しているユーザーによって異なります。 ユーザー A としてサインインし、両方のコマンドを実行した場合、次のようになります。
az aks get-credentials
コマンドは、C:\Users\A\.kube\config ファイルに新しい kubeconfig パラメーターを追加しようとします。kubectl コマンドは、 C:\Users\A\.kube\config ファイルの検索を試みます。
ただし、kubectl の場合、kubeconfig ファイルへのポインターが変更された場合、クラスターへのアクセスに使用されるファイルは別の場所にあるはずです。
Note
kubeconfig ファイルは、Kubernetes クラスターにアクセスするための構成パラメーターを含むファイルへの参照です。 必ずしも、 kubeconfig という名前のファイルを参照しているわけではありません。
このエラーは、次のいずれかのシナリオが発生した場合に発生します。
原因 1: config ファイルが存在しない
config ファイルがコンピューターに存在しません。
解決策: 資格情報を保存する
azure CLI で az aks get-credentials
コマンドを実行してconfig ファイルを読み込み、資格情報を保存します。 既定の場所を使用しない場合は、config の場所 (~/Dir1/Dir2/config や C:\Dir1\Dir2\config) で--file <config-file-location>
パラメーターを指定します。
az aks get-credentials --resource-group <cluster-resource-group> \
--name <cluster-name> \
[--file <config-file-location>]
原因 2: config ファイルが間違ったディレクトリにあります
config ファイルはコンピューター上にありますが、az aks get-credentials
コマンドや kubectl ツールが想定しているディレクトリとは別のディレクトリにあります。
解決策: config ファイルを移動するか、資格情報をもう一度保存するか、KUBECONFIG 環境変数を変更します
次の 1 つ以上のアクションを実行します。
config ファイルを目的のディレクトリに移動します。
az aks get-credentials
コマンドを実行します。 既定の場所ではない場合は、目的の場所を指定します。az aks get-credentials --resource-group <cluster-resource-group> \ --name <cluster-name> \ [--file <config-file-location>]
kubectl が構成パラメーターを検索する場所を変更するには、次のいずれかのオプションを使用します。
KUBECONFIG
環境変数を変更して、config ファイルの現在の場所をポイントします。 詳細については、「 KUBECONFIG 環境変数を設定するを参照してください。--kubeconfig=<config-file-location>
パラメーターkubectl config コマンドを実行します。
原因 3: config ファイルの有効期限が切れているか、破損しています
config ファイルがコンピューター上にあります。 また、 az aks get-credentials
コマンドと kubectl ツールに必要なディレクトリにも含まれています。 ただし、ファイルの有効期限が切れているか、破損しています。
解決策: 資格情報を再確立する
既存の資格情報の有効期限が切れているか破損している可能性があるため、資格情報を再確立します。 その場合は、--overwrite-existing
パラメーターを使用して az aks get-credentials
コマンドを実行できます。
az aks get-credentials --resource-group <cluster-resource-group> \
--name <cluster-name> \
--overwrite-existing \
[--file <config-file-location>]
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。