接続時に構成ファイルを使用できない

この記事では、構成ファイルが見つからないか無効なため、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 という名前のローカル構成ファイルを使用します。構成ファイルには、クラスターに接続するための認証資格情報と詳細が含まれています。 既定では、次の手順を実行します。

  • マネージド Kubernetes クラスターのアクセス資格情報を取得するために使用される Azure CLI の az aks get-credentials コマンドは、 ~/.kube/config ファイルを変更します。

  • kubectl コマンドは、$HOME/.kube ディレクトリ内の kubeconfig (kubectl 構成) ファイルを使用します。

そのため、Kubernetes セッションの試行中に何が起こるかは、kubectl コマンドを実行しているユーザーによって異なります。 ユーザー A としてサインインし、両方のコマンドを実行した場合、次のようになります。

  • コマンドは az aks get-credentialsC:\Users\A\.kube\config ファイルに新しい kubeconfig パラメーターを追加しようとします。

  • kubectl コマンドは 、C:\Users\A\.kube\config ファイルの検索を 試みます。

ただし、kubectl の場合、kubeconfig ファイルへのポインターが変更された場合、クラスターへのアクセスに使用されるファイルは別の場所にあるはずです。

注:

kubeconfig ファイルは、Kubernetes クラスターにアクセスするための構成パラメーターを含むファイルへの参照です。 必ずしも kubeconfig という名前のファイルを参照しているわけではありません。

このエラーは、次のいずれかのシナリオが発生した場合に発生します。

原因 1: 構成 ファイルが存在しない

構成ファイルがコンピューターに存在しません。

解決策: 資格情報を保存する

Azure CLI でコマンドを実行して 構成 ファイルを az aks get-credentials 読み込み、資格情報を保存します。 既定の場所を使用しない場合は、構成の場所 (~/Dir1/Dir2/configC:\Dir1\Dir2\config など) で パラメーターを指定--file <config-file-location>します。

az aks get-credentials --resource-group <cluster-resource-group> \
    --name <cluster-name> \
    [--file <config-file-location>]

原因 2: 構成 ファイルが間違ったディレクトリにあります

構成ファイルはコンピューター上にありますが、コマンドや kubectl ツールが想定しているディレクトリとは異なるディレクトリaz aks get-credentialsにあります。

解決策: 構成 ファイルを移動するか、資格情報をもう一度保存するか、KUBECONFIG 環境変数を変更します

次の 1 つ以上のアクションを実行します。

  • 構成ファイルを含めるディレクトリに移動します。

  • az aks get-credentials コマンドを実行します。 既定の場所ではない場合は、目的の場所を指定します。

    az aks get-credentials --resource-group <cluster-resource-group> \
        --name <cluster-name> \
        [--file <config-file-location>]
    
  • kubectl が構成パラメーターを検索する場所を変更するには、次のいずれかのオプションを使用します。

    • 構成ファイルの現在のKUBECONFIG場所を指す環境変数を変更します。 詳細については、「 KUBECONFIG 環境変数を設定する」を参照してください。

    • パラメーターを指定して kubectl config コマンドを --kubeconfig=<config-file-location> 実行します。

原因 3: 構成 ファイルの有効期限が切れているか、破損しています

構成ファイルはコンピューター上にあります。 また、コマンドと kubectl ツールに必要な az aks get-credentials ディレクトリにも含まれています。 ただし、ファイルの有効期限が切れているか、破損しています。

解決策: 資格情報を再確立する

既存の資格情報の有効期限が切れているか破損している可能性があるため、資格情報を再確立します。 その場合は、 パラメーターを指定して az aks get-credentials コマンドを --overwrite-existing 実行できます。

az aks get-credentials --resource-group <cluster-resource-group> \
    --name <cluster-name> \
    --overwrite-existing \
    [--file <config-file-location>]

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。