すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する

最終更新日:Dec 27, 2024

このトピックでは、クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する方法について説明します。

kubectl と kubeconfig ファイルの概要

kubectl は標準の Kubernetes コマンドラインツールです。kubectl を使用して、Alibaba Cloud Container Service for Kubernetes (ACK) クラスタに接続して管理できます。kubeconfig ファイルには、クラスタ、ユーザー、名前空間、および ID 認証メカニズムに関する情報が格納されます。kubectl は kubeconfig ファイルを使用して ACK クラスタに接続します。

接続方法

インターネットまたは内部ネットワーク経由で ACK クラスタに接続できます。

  • インターネット経由でクラスタに接続する

    Elastic IP アドレス (EIP) がクラスタの API サーバーに関連付けられている場合、API サーバーはインターネットに公開されます。この場合、クラスタへのアクセスに選択するクライアントに制限はありません。API サーバーのインターネットアクセスを有効にする方法の詳細については、クラスタの API サーバーへのパブリックアクセスを制御する を参照してください。

  • 内部ネットワーク経由でクラスタに接続する

    内部ネットワーク経由でクラスタに接続する場合、クライアントはクラスタと同じ仮想プライベートクラウド (VPC) にデプロイする必要があります。

ステップ 1: kubectl をインストールする

説明

RAM ユーザーを使用する場合は、kubectl クライアントからクラスタに接続する前に、RAM ユーザーにクラスタを管理する権限を付与する必要があります。詳細については、認証の概要 を参照してください。

  1. kubectl クライアントがインストールされているマシンを特定し、クラスタに接続する方法を選択します。

  2. kubectl をダウンロードしてマシンにインストールします。

    詳細については、kubectl のダウンロードとインストール を参照してください。Kubernetes は Linux カーネルに基づいて開発されています。したがって、Linux 版の kubectl をダウンロードし、Linux コマンドを実行する必要があります。

ステップ 2: クラスタ認証情報の種類を選択する

各 ACK クラスタは、インターネットまたは内部ネットワーク経由でクラスタに接続するための 2 種類のクラスタ認証情報を提供します。クラスタ認証情報は kubeconfig ファイルに格納されます。デフォルトでは、kubectl はマシンの $HOME/.kube ディレクトリにある config ファイルを検索します。このファイルには、クラスタへのアクセスに使用される認証情報が格納されます。kubectl はこのファイルを使用してクラスタに接続します。

  1. ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。

  2. クラスタ ページで、管理するクラスタを見つけ、クラスタの名前をクリックするか、詳細アクション 列の をクリックします。クラスタの詳細ページが表示されます。

  3. クラスタの詳細ページで、接続情報 タブをクリックします。次に、パブリックアクセス または 内部アクセス タブをクリックし、コピー をクリックして、クラスタへのアクセスに使用される認証情報をコピーします。

    説明

    一時的な kubeconfig ファイルを使用して、クラスタ認証情報の有効期間を指定することもできます。これにより、より柔軟にクラスタにアクセスできます。詳細については、一時的な kubeconfig ファイルを生成する を参照してください。

  4. 資格情報をconfigファイル($HOME/.kubeディレクトリ内)に貼り付けて保存し、終了します。

    .kube フォルダと config ファイルが $HOME/ ディレクトリに存在しない場合は、フォルダとファイルを manuell に作成する必要があります。

ステップ 3: 接続を確認する

クラスタ認証情報を追加した後、kubectl コマンドを実行して、クラスタへの接続を確認します。次のコマンドを実行して、クラスタの名前空間をクエリします。

kubectl get namespace

予期される出力:

NAME              STATUS   AGE
default           Active   4h39m
kube-node-lease   Active   4h39m
kube-public       Active   4h39m
kube-system       Active   4h39m

一時的な kubeconfig ファイルを生成する

一時的な kubeconfig ファイルを使用して、クラスタ認証情報の有効期間を指定できます。これにより、より柔軟にクラスタにアクセスできます。

  1. ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。

  2. クラスタ ページで、管理するクラスタを見つけ、クラスタの名前をクリックするか、詳細アクション 列の をクリックします。クラスタの詳細ページが表示されます。

  3. クラスタの詳細ページで、接続情報 タブをクリックします。次に、一時的な Kubeconfig を生成 をクリックします。

  4. 一時的な Kubeconfig ダイアログボックスで、一時的な kubeconfig ファイルの有効期間を指定し、接続モード(パブリックアクセスまたは内部アクセス)を選択します。一時的な Kubeconfig を生成 をクリックし、コピー をクリックして、コードブロックの内容をクライアントの $HOME/.kube/config ファイルにコピーします。

    tempo

    構成が完了すると、一時的な kubeconfig ファイルを使用してクラスタに接続できます。一時的な kubeconfig ファイルの有効期限が切れると、クラスタに接続できなくなります。

FAQ

問題 1: kubeconfig ファイルで使用されている証明書に関連付けられているユーザーの ID 情報を取得するにはどうすればよいですか?

kubeconfig ファイルで使用されている証明書に関連付けられているユーザーの ID 情報を取得するには、次のコマンドを実行します。

説明

コマンドを実行するときは、YOUR_KUBECONFIG_PATH をクエリする kubeconfig ファイルの絶対パスに置き換えます。デフォルトでは、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*** は RAM ユーザー ID です。

問題 2: kubeconfig ファイルで使用されている証明書の有効期限を取得するにはどうすればよいですか?

kubeconfig ファイルで使用されている証明書の有効期限をクエリするには、次のコマンドを実行します。

説明

コマンドを実行するときは、YOUR_KUBECONFIG_PATH をクエリする kubeconfig ファイルの絶対パスに置き換えます。デフォルトでは、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 日前または現在の証明書の有効期限が切れた後に、コンソールにログインするか、特定の API を呼び出して、新しい証明書を使用する kubeconfig ファイルを取得できます。

問題 3: kubectl を使用してクラスタに接続するときに、次のエラーが表示された場合はどうすればよいですか: certificate is valid for?

kubectl を使用して、クラスタ内の Kubernetes API サーバーのサーバーロードバランサー (SLB) インスタンスに割り当てられた新しい IP アドレスにアクセスすると、アクセスに失敗し、Error while proxying request: x509: certificate is valid for xxx または Unable to connect to the server: x509: certificate is valid for xxx エラーが表示されます。