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

Container Service for Kubernetes:kubectlを使用したACKクラスターへの接続

最終更新日:Oct 29, 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サーバーのインターネットアクセスを有効にする方法の詳細については、「Control public access to the API server of a cluster」をご参照ください。

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

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

    ACKコンソールにログインし、管理するクラスターの名前をクリックします。 [クラスター情報] > [クラスターリソース] を選択して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ファイルを生成することを推奨します。

  • Shared responsibility modelに基づいて、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

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

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

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

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

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

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

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

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

    設定が完了したら、一時的なkubeconfigファイルを使用してクラスターに接続できます。 一時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アドレスを追加することで、この問題を解決できます。 詳細については、「Customize the SANs of the API server certificate when you create an ACK cluster」をご参照ください。

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

    重要

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

    • 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を呼び出すことによってのみ生成できます。

次のステップ

上記の操作が完了したら、kubectlを使用してオンプレミスマシンからACKクラスターに接続できます。