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

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

最終更新日:May 22, 2025

Container Service for Kubernetes (ACK) コンソールに加えて、Kubernetes コマンドラインツール kubectl を使用して、クラスターとアプリケーションを管理することもできます。このトピックでは、クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する方法について説明します。

1. kubectl をインストールする

kubectl をインストールするクライアントを選択し、kubectl をダウンロードしてインストールします

動作環境に基づいて kubectl のバージョンを選択します。次の例では、Linux 環境を使用しています。

2. kubeconfig の種類を選択する

以下のディメンションに基づいて kubeconfig の種類を選択できます。

  • 認証情報の有効期間:

    • 一時的な kubeconfig ファイル: この種類は、クラスター API サーバー に長時間接続する必要がないシナリオに適しています。これにより、kubeconfig 認証情報が漏洩した場合のセキュリティリスクが軽減されます。一時的な kubeconfig の有効期間を構成できます。認証情報の有効期限が切れると、クラスターに接続できなくなります。

    • 長期 kubeconfig ファイル: デフォルトの有効期間は 3 年です。有効期限の 180 日前からは、ACK コンソール から、または クラスターの kubeconfig ファイルをクエリすることによって、ローテーションされた kubeconfig を取得できます。新しい kubeconfig ファイルの証明書の有効期間は引き続き 3 年です。古い kubeconfig 認証情報は、証明書の有効期限が切れるまでは引き続き有効です。コンソールまたは API 操作によって返される kubeconfig ファイルの有効期限に基づいて、ローテーションされた認証情報を取得してください。

  • クラスターにアクセスする方法:

    • パブリックアクセス: パブリックアクセス用の kubeconfig ファイルを取得します。インターネット上の任意のマシンをクライアントとして使用して、クラスターに接続できます。

    • 内部アクセス: 内部アクセス用の kubeconfig ファイルを取得します。この場合、kubectl クライアントマシンは、クラスターと同じ VPC (仮想プライベートクラウド) 内にある必要があります。

  • パブリック SSH ログインが有効になっている ACK 専用クラスター の場合、コンソールは SSH もサポートしています。SSH を使用してマスターノードにログインし、kubeconfig ファイルを構成してから、kubectl を使用してクラスターを管理できます。詳細については、「SSH を使用して ACK 専用クラスターのマスターノードに接続する」をご参照ください。

重要

責任共有モデル によると、kubeconfig 認証情報の維持はユーザーの責任となります。kubeconfig の漏洩によるセキュリティリスクを回避するために、認証情報の妥当性と有効性を維持してください。

3. kubeconfig ファイルを構成し、クラスターに接続する

コンソールから kubeconfig の内容を取得し、クライアントマシンの $HOME/.kube/config ファイルに貼り付けることができます。このファイルは、管理するクラスターのアクセス認証情報を格納するために使用されます。kubectl は、このファイルに基づいてクラスターに接続します。

説明

RAM (Resource Access Management) ユーザーがクラスターに接続するには、ACK のシステム権限に加えて、クラスターを操作するための権限が付与されている必要があります。詳細については、「権限付与」をご参照ください。

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

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

  3. [クラスター情報] ページで、[接続情報] タブをクリックし、一時的または長期の kubeconfig ファイルを選択します。

  4. [パブリックアクセス] または [内部アクセス] タブをクリックし、[コピー] をクリックします。コピーしたクラスター認証情報の内容を $HOME/.kube/config ファイルに貼り付けて、ファイルを保存して終了します。

    $HOME/ ディレクトリに .kube ディレクトリと config ファイルが存在しない場合は、作成します。
  5. 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 ファイルの漏洩が疑われる場合は、クラスターのセキュリティを確保するために、クラスターの kubeconfig ファイルを取り消すことができます。kubeconfig ファイルを取り消すと、システムは新しい kubeconfig ファイルと権限バインディングを生成します。RAM ユーザーまたは RAM ロールに以前に発行された kubeconfig ファイルは無効になります。詳細については、「クラスターの kubeconfig ファイルを取り消す」をご参照ください。

kubeconfig ファイルをクリアおよび復元する

管理範囲内の指定されたクラスター、RAM ユーザー、または RAM ロールの kubeconfig 権限を一括クリアできます。クリアした後、システムは新しい kubeconfig ファイルを生成しません。kubeconfig ゴミ箱機能を使用して、クリアされた kubeconfig 権限を復元することもできます。詳細については、「kubeconfig ファイルを削除する」、「ack-ram-tool を使用して ACK クラスター上の指定されたユーザーの権限を取り消す」、「kubeconfig ゴミ箱を使用する」をご参照ください。

FAQ

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

次のコマンドを実行して、情報を取得します。

grep client-certificate-data kubeconfig |awk '{print $2}' |base64 -d | openssl x509 -noout -text |grep Subject:
説明

デフォルトでは、kubectl は $HOME/.kube/config ファイルを使用してクラスターに接続します。KUBECONFIG 環境変数を設定するか、--kubeconfig パラメーターを使用して別の kubeconfig ファイルを指定することもできます。

予期される出力:

        Subject: O=system:users, OU=, CN=1***-1673419473

次の情報が表示されます。

  • O は、Kubernetes ユーザーグループに関する情報を指定します。この例では、ユーザーグループの名前は system:users です。

  • CN は、ユーザー情報を指定します。この例では、ユーザーは 1***-1673419473 です。1*** は RAM ユーザー ID です。

kubeconfig ファイルで使用されている証明書の有効期限をクエリするにはどうすればよいですか?

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

grep client-certificate-data  kubeconfig |awk '{print $2}' |base64 -d | openssl x509 -noout -enddate
説明

デフォルトでは、kubectl は $HOME/.kube/config ファイルを使用してクラスターに接続します。KUBECONFIG 環境変数を設定するか、--kubeconfig パラメーターを使用して別の kubeconfig ファイルを指定することもできます。

予期される出力:

notAfter=Jan 10 06:44:34 2026 GMT

この例では、Jan 10 06:44:34 2026 GMT が証明書の有効期限です。

コンソールまたは API を使用して、現在の証明書の有効期限の 180 日前、または現在の証明書の有効期限が切れた後に、新しい証明書を使用する kubeconfig ファイルを取得できます。

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

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

  • ACK マネージドクラスター: 新しい IP アドレスを API サーバー証明書の Subject Alternative Names (SAN) に追加します。詳細については、「ACK クラスターの作成時に API サーバー証明書の SAN をカスタマイズする」をご参照ください。

  • ACK 専用クラスター: insecure-skip-tls-verify 構成を使用するように kubectl を構成して、このエラーを無視します。

  • 重要

    この方法では、クライアントは API サーバー証明書の検証を行わなくなります。ACK 専用クラスターから ACK マネージド Pro クラスターへのホットマイグレーション を実行してから、新しい IP アドレスを API サーバー証明書の SAN に追加して、この問題を解決することをお勧めします。

    • 方法 1: kubectl コマンドを実行するときに --insecure-skip-tls-verify パラメーターを指定します。

      kubectl -s https://<IP>:6443 --insecure-skip-tls-verify get ns
    • 方法 2: kubeconfig ファイルの内容を変更し、insecure-skip-tls-verify: true 構成を追加してから、certificate-authority-data 構成を削除します。

      apiVersion: v1
      clusters:
      - cluster:
          server: https://<IP>:6443
          insecure-skip-tls-verify: true
        name: kubernetes
      contexts:

CA、キー、および API サーバーに関する情報を取得するにはどうすればよいですか?

次のコマンドを実行して、kubeconfig ファイルから認証局 (CA)、キー、および API サーバーの情報を抽出します。

cat  ./kubeconfig |grep client-certificate-data | awk -F ' ' '{print $2}' |base64 -d > ./client-cert.pem
cat  ./kubeconfig |grep client-key-data | awk -F ' ' '{print $2}' |base64 -d > ./client-key.pem
APISERVER=`cat  ./kubeconfig |grep server | awk -F ' ' '{print $2}'`

ACK マネージドクラスター は、kubeconfig ファイルの生成に使用できるルート証明書の秘密鍵を提供しますか?

ACK マネージドクラスター は、クラスタールート証明書キーを外部ユーザーに提供しません。ACK コンソールで、または ACK API を呼び出すことによって、クラスター kubeconfig ファイルを取得することをお勧めします。

参照