この Topic では、現在のユーザーの資格情報を含むクラスターの kubeconfig ファイルを取得する方法について説明します。また、kubectl クライアントを使用してクラスターに接続する方法についても説明します。
kubectl と kubeconfig の概要
kubectl は、Kubernetes の標準コマンドラインツールです。kubectl を使用して、Alibaba Cloud Container Service (ACS) クラスターに接続して管理できます。kubeconfig ファイルには、クラスター、ユーザー、名前空間、および認証メカニズムに関する情報が含まれています。kubectl は、kubeconfig ファイルを使用してクラスターに接続します。
接続メソッド
インターネットまたは内部ネットワーク経由でクラスターに接続できます。
インターネット接続
クラスターの API サーバーのパブリックネットワークアクセスを有効にすると、インターネット経由で任意のクライアントからクラスターに接続できます。この機能を有効にすると、API サーバーは Alibaba Cloud Elastic IP Address (EIP) を介して公開されます。API サーバーのパブリックネットワークアクセスを有効にする方法の詳細については、「クラスターの API サーバーへのパブリックネットワークアクセスを制御する」をご参照ください。
内部ネットワーク接続
内部ネットワーク経由でのみクラスターに接続するには、kubectl クライアントがクラスターと同じ Virtual Private Cloud (VPC) 内にある必要があります。
ステップ 1: kubectl のインストール
OS とクラスターのバージョンに基づいて、クライアントマシンに kubectl をインストールします。
ステップ 2: クラスター資格情報の設定
ACS クラスターは、kubeconfig ファイルとも呼ばれる 2 種類のクラスター資格情報 (パブリックネットワークアクセス用と内部ネットワークアクセス用) を提供します。デフォルトでは、kubectl はクライアントマシンの $HOME/.kube フォルダにある config という名前のファイルを検索します。このファイルには、kubectl がクラスターへの接続と管理に使用するアクセス資格情報が保存されます。
ACS コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その ID をクリックするか、クラスターの [アクション] 列にある [詳細] をクリックします。
クラスターの詳細ページで、[接続情報] タブをクリックし、一時的または長期的な kubeconfig を選択します。一時的な kubeconfig を選択した場合は、適切な有効期間を設定します。
[パブリックアクセス] または [内部アクセス] タブを選択し、[コピー] をクリックして kubeconfig の内容をコピーします。コピーした内容をクライアントマシンの
$HOME/.kube/configファイルに貼り付け、ファイルを保存して終了します。このファイルまたはディレクトリが存在しない場合は、
mkdir -p $HOME/.kubeとtouch $HOME/.kube/configを実行して作成します。kubectlコマンドを実行して接続を確認します。たとえば、すべての名前空間をリストするには、次のようにします。kubectl get namespaces接続が成功すると、名前空間のリストが返されます。
NAME STATUS AGE default Active 4h39m kube-node-lease Active 4h39m kube-public Active 4h39m kube-system Active 4h39m
よくある質問
kubeconfig ファイル内の証明書に関連付けられている ID 情報を取得するにはどうすればよいですか?
このコマンドを実行するときは、YOUR_KUBECONFIG_PATH をクエリする構成ファイルの絶対パスに置き換えます。デフォルトでは、kubectl は $HOME/.kube/config ファイルを使用してクラスターに接続します。kubeconfig 環境変数を設定するか、--kubeconfig パラメーターを使用して、他の kubeconfig ファイルを指定することもできます。
grep client-certificate-data YOUR_KUBECONFIG_PATH |awk '{print $2}' |base64 -d | openssl x509 -noout -text |grep Subject:期待される出力は次のようになります。
Subject: O=system:users, OU=, CN=1***-1673419473パラメーターは次のように説明されます。
Oは Kubernetes ユーザーグループを示します。この例では、グループ名はsystem:usersです。CNは関連付けられたユーザーを示します。この例では、ユーザーは1***-1673419473です。1***は、アカウント内の Alibaba Cloud ユーザー ID に対応します。
kubeconfig ファイルで使用される証明書の有効期限を取得するにはどうすればよいですか?
このコマンドを実行するときは、YOUR_KUBECONFIG_PATH をクエリする構成ファイルの絶対パスに置き換えます。デフォルトでは、kubectl は $HOME/.kube/config ファイルを使用してクラスターに接続します。kubeconfig 環境変数を設定するか、--kubeconfig パラメーターを使用して、他の kubeconfig ファイルを指定することもできます。
grep client-certificate-data YOUR_KUBECONFIG_PATH |awk '{print $2}' |base64 -d | openssl x509 -noout -enddate出力例を次に示します。
notAfter=Jan 10 06:44:34 2026 GMT証明書の有効期限は Jan 10 06:44:34 2026 GMT です。
証明書の有効期限が切れる 60 日前から 60 日後まで、コンソールまたは OpenAPI を使用して新しい証明書を含む kubeconfig ファイルを取得できます。
質問 3: kubectl を使用してクラスターに接続する際の certificate is valid for エラーを解決するにはどうすればよいですか?
API サーバーの Server Load Balancer (SLB) インスタンスに新しい IP アドレスをアタッチし、kubectl を使用してこの新しい IP アドレスにアクセスすると、kubectl コマンドは失敗します。Error while proxying request: x509: certificate is valid for xxx や Unable to connect to the server: x509: certificate is valid for xxx などのエラーメッセージが返されます。
新しい IP アドレスを API サーバー証明書の Subject Alternative Name (SAN) に追加できます。詳細については、「クラスターの API サーバー証明書の SAN フィールドをカスタマイズする」をご参照ください。次の図は、サンプル構成を示しています。
