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

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

最終更新日:Oct 31, 2024

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

目次

kubectlおよびkubeconfigファイルの概要

kubectlは標準のKubernetesコマンドラインツールです。 kubectlを使用して、ACK専用クラスター、ACK管理クラスター、ACKサーバーレスクラスターなど、すべてのタイプのACKクラスターに接続して管理できます。 ACK管理クラスターには、ACK BasicクラスターとACK Proクラスターがあります。

kubeconfigファイルには、クラスター、ユーザー、名前空間、およびID認証メカニズムに関する情報が格納されます。 Kubectlはkubeconfigファイルを使用してACKクラスターに接続します。

接続方法 (インターネットおよびプライベート接続)

インターネットまたはプライベート接続を介してACKクラスターに接続できます。

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

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

  • プライベート接続を介してクラスターに接続する

    プライベート接続を介してクラスターに接続する場合は、クライアントをクラスターと同じ仮想プライベートクラウド (VPC) にデプロイする必要があります。

ステップ1: kubectlのインストール

説明

Resource Access Management (RAM) ユーザーを使用する場合は、kubectlクライアントからクラスターに接続する前に、RAMユーザーにクラスターの管理を許可する必要があります。 詳細については、『Authorization overview』をご参照ください。

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

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

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

ステップ2: クラスター資格情報の種類を選択する

各ACKクラスターには、インターネットまたはプライベート接続を介してクラスターに接続するための2種類のクラスター資格情報が用意されています。 クラスターの資格情報はkubeconfigファイルに保存されます。

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

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

  3. [クラスター情報] ページで、[接続情報] タブをクリックします。 次に、インターネットまたはプライベート接続を介してクラスターに接続するためのクラスター資格情報を選択します。

    説明

    一時的なkubeconfigファイルを使用して、クラスター資格情報の有効期間を制御することもできます。 これにより、より柔軟な方法でクラスターにアクセスできます。 詳細については、「一時的なkubeconfigファイルの生成」をご参照ください。

    集群连接信息

ステップ3: クラスター資格情報の追加

重要
  • kubeconfigファイルのデフォルトの有効期間は3年です。 kubeconfigファイルの有効期限が切れる180日前に、ACKコンソールで、または [クラスターのkubeconfigファイルの照会] トピックの手順を実行して、更新されたkubeconfigファイルを取得できます。 kubeconfigファイルが更新されると、その有効期間は3年にリセットされます。 以前のkubeconfigファイルは、有効期限が切れるまで有効です。 できるだけ早い機会にkubeconfigファイルを更新することを推奨します。

  • クラスターAPIサーバーへの長期接続を必要としないシナリオでは、資格情報のリークによるセキュリティリスクを軽減するために、一時的なkubeconfigファイルを生成することを推奨します。

  • 共有責任モデルに基づいて、kubeconfigファイルのメンテナンスを担当します。 資格情報の漏洩によるセキュリティリスクを回避するために、資格情報の使用と有効性を維持することを推奨します。

デフォルトでは、kubectlはマシン上の $HOME/.kubeディレクトリでconfigファイルを検索します。 ファイルには、クラスターへのアクセスに使用される資格情報が格納されます。 Kubectlはこのファイルを使用してクラスターに接続します。

  1. [パブリックアクセス] または [内部アクセス] タブを選択し、[コピー] をクリックします。

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

    説明

    . kubeフォルダーと設定ファイルが存在しない$ホーム /フォルダとファイルを手動で作成する必要があります。

    ACK専用クラスターが使用されており、クラスターに対してインターネット経由のSSHログインを有効にしている場合、[接続情報] タブに [SSH] タブが表示されます。 SSHを使用してマスターノードにログインすることもできます。 クラスターの資格情報をkubeconfigファイルに追加した後、kubectlを使用してクラスターに接続し、管理できます。 SSHを使用してACK専用クラスターに接続する方法の詳細については、「SSHを使用して専用Kubernetesクラスターのマスターノードに接続する」をご参照ください。专有版集群

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

クラスターの資格情報を追加したら、kubectlコマンドを実行してクラスターへの接続を確認します。 次のコマンドを実行して、クラスターの名前空間を照会します。

kubectl get namespace

期待される出力:

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

関連する API

一時的なkubeconfigファイルの生成

一時的なkubeconfigを使用してクラスターの資格情報を保存し、一時的なkubeconfigの有効期間を設定できます。これにより、より柔軟な方法でクラスターにアクセスできます。

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

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

  3. [クラスター情報] ページで、[接続情報] タブをクリックし、[一時kubeconfigの生成] をクリックします。

  4. [一時kubeconfig] ダイアログボックスで、一時kubeconfigファイルの有効期間を設定し、接続モード (パブリックアクセスまたは内部アクセス) を選択します。

    • インターネット経由でクラスターに接続するには、[パブリックアクセス] を選択し、[一時kubeconfigの生成] をクリックします。次に、[コピー] をクリックして、コードブロックのコンテンツをクライアントの $HOME/.kube/configファイルにコピーします。

    • プライベート接続を介してクラスターに接続するには、[内部アクセス] を選択し、[一時kubeconfigの生成] をクリックします。次に、[コピー] をクリックして、コードブロックのコンテンツをクライアントの $HOME/.kube/configファイルにコピーします。

    設定が完了したら、一時的なkubeconfigファイルを使用してクラスターに接続できます。 一時kubeconfigファイルの有効期限が切れた後は、クラスターに接続できません。

kubeconfigファイルの取り消し

従業員が辞任した場合、または発行されたkubeconfigファイルが公開された場合、kubeconfigファイルを取り消して、kubeconfigファイルを使用してアクセスできるクラスターを保護できます。 kubeconfigファイルを取り消すと、新しいkubeconfigファイルと権限付与バインディングが生成されます。 以前にRAMユーザーまたはRAMロールに発行されたkubeconfigファイルが無効になります。 詳細については、「クラスターのkubeconfigファイルの取り消し」をご参照ください。

kubeconfigファイルの削除と復元

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

よくある質問

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

次のコマンドを実行して、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です。

問題2: 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

1月10日06:44:34 2026 GMTは証明書の有効期限です。

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

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

kubectlを使用してクラスター内のKubernetes APIサーバーのServer Load Balancer (SLB) インスタンスに割り当てられた新しいIPアドレスにアクセスすると、アクセスが失敗し、[エラー処理中リクエスト: x509: 証明書がxxxに有効] または [サーバーに接続できません: x509: 証明書がxxxに有効] エラーが表示されます。

  • クラスターがACK管理クラスターの場合、APIサーバー証明書のカスタムサブジェクト代替名 (SAN) にIPアドレスを追加することで、この問題を解決できます。 詳細については、「ACKクラスター作成時のAPIサーバー証明書のSANのカスタマイズ」をご参照ください。

  • クラスターがACK専用クラスターの場合、この問題を無視するようにkubectlを設定します。

    重要

    insecure-skip-tls-verify設定を使用して問題を無視すると、クライアントはAPIサーバーの証明書を検証しなくなります。 ACK専用クラスターをACK Proにアップグレードし、APIサーバー証明書のSANに新しいIPアドレスを追加して問題を解決することを推奨します。 詳細については、「ACK専用クラスターからACK Proクラスターへのホットマイグレーション」をご参照ください。

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

      kubectl -s https://<IP>:6443 --insecure-skip-tls-verify get ns
    • 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:

問題4: ACK管理クラスターは、kubeconfigファイルの生成に使用できるルート証明書の秘密鍵を提供しますか?

ACK管理クラスターは、ルート証明書の秘密鍵を外部ユーザーに提供しません。 kubeconfigファイルは、ACKコンソールまたはACK APIを呼び出すことによってのみ生成できます。

関連ドキュメント

  • DescribeClusterUserKubeconfig操作を呼び出して、ACKクラスターのkubeconfigファイルを照会できます。 詳細については、「DescribeClusterUserKubeconfig」をご参照ください。

  • 資格情報の漏洩によるセキュリティリスクを防ぐため、kubeconfigファイルを取り消すか削除できます。 詳細については、「kubeconfigファイル管理の概要」をご参照ください。