Kubernetes コマンドラインインターフェイス (kubectl) を使用すると、Container Service for Kubernetes (ACK) コンソールに加えて、クラスターおよびアプリケーションの管理が可能です。kubectl を使用してクラスターに接続するには、まずクラスターへのアクセスに必要な認証情報および接続情報を含む kubeconfig ファイルを取得します。
ステップ 1: kubectl クライアントのインストールと構成
kubectl をインストールするクライアントマシンを特定します。その後、お使いのオペレーティングシステムおよびクラスターバージョンに応じて、kubectl のインストールを行います。
ステップ 2: kubeconfig ファイルの取得および使用
1. kubeconfig の種類の選択
kubeconfig ファイルには、クラスターへのアクセスに必要な認証情報が含まれます。セキュリティ要件およびユースケースに応じて、適切な kubeconfig の種類を選択してください。
共有責任モデルによると、kubeconfig の資格情報のセキュリティ確保および維持はお客様の責任です。kubeconfig の漏洩によるセキュリティリスクを軽減するため、定期的に kubeconfig をローテーションし、最小権限の原則 (PoLP) を遵守してください。
kubeconfig ファイルの有効期間:
一時的な kubeconfig: 有効期間を30分から3日間で設定できます。ファイルは自動的に有効期限切れになり、資格情報の漏洩によるセキュリティリスクを低減します。これは、API サーバーへの長期アクセスを必要としない、日常的な運用および保守(O&M)、トラブルシューティング、および CI/CD パイプライン向けに推奨されるオプションです。
長期的な kubeconfig: デフォルトの有効期間は 3 年です。頻繁な資格情報のローテーションが現実的でない、自動化されたシステムや長時間実行されるモニタリングサービスに適しています。
アクセス方法別:
ご利用の ACK 専用クラスター で公開アクセスが有効になっている場合、マスターノードに SSH で接続し、kubeconfig ファイルを取得して、ローカルで kubectl を使用してクラスターを管理できます。詳細については、「ACK 専用クラスターのマスターノードへの SSH 接続」をご参照ください。
2. kubeconfig ファイルの取得およびクラスターへの接続
コンソールから kubeconfig ファイルを取得した後、kubectl はそのファイルを使用してクラスターに接続し、管理できます。
Resource Access Management (RAM) ユーザーがクラスターに接続する前に、ACK 全体および対象のクラスターに対して、必要なアクセス権限を付与する必要があります。詳細については、「権限付与」をご参照ください。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
「[クラスター]」ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、「[操作]」列の「[詳細]」をクリックします。クラスターの詳細ページが表示されます。
クラスター情報 ページで、接続情報 タブをクリックし、一時的な kubeconfig または長期的な kubeconfig のいずれかを選択します。一時的な kubeconfig を選択する場合は、適切な有効期間を設定します。
パブリックアクセス タブまたは 内部アクセス タブを選択します。コピー をクリックします。コピーした kubeconfig の内容を、クライアントマシン上の
$HOME/.kube/configファイルに貼り付けます。ファイルを保存して終了します。このファイルまたはディレクトリが存在しない場合は、
mkdir -p $HOME/.kubeおよびtouch $HOME/.kube/configを実行して、$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 の有効性を確認: サービス障害を防止するため、有効期限が切れる前に資格情報をローテーションしてください。
長期的な kubeconfig の有効期間は 3 年です。有効期限の 180 日以内に、ACK コンソール または DescribeClusterUserKubeconfig API を使用して、新しい kubeconfig を取得できます。
新しい kubeconfig の有効期間も 3 年です。古い kubeconfig は、元の有効期限まで有効のままです。
kubeconfig が侵害された場合の即時無効化: kubeconfig ファイルが侵害された可能性があると疑われる場合は、クラスターの kubeconfig 資格情報を直ちに無効化してください。無効化されると、システムは新しい kubeconfig および承認バインディングを生成し、古い kubeconfig を使用したすべての接続は無効になります。
権限のクリーンアップ: プロジェクトの完了や従業員の退職など、ユーザーが今後アクセス権限を必要としないシナリオでは、クリーンアップ機能を使用して、kubeconfig 権限を一括で無効化します。クリーンアップ後、システムは新しい kubeconfig を生成しません。具体的な手順については、「kubeconfig ファイルのパージ」および「ack-ram-tool を使用したクラスター内における指定ユーザーの権限パージ」をご参照ください。
権限の誤った削除を防ぐために、kubeconfig のゴミ箱 を使用して、特定の無効化済み kubeconfig 権限を復元できます。
よくある質問
kubeconfig 証明書に関連付けられた ID 情報を確認するにはどうすればよいですか?
以下のコマンドを実行します:
grep client-certificate-data kubeconfig |awk '{print $2}' |base64 -d | openssl x509 -noout -text |grep Subject:kubeconfig のパスは必要に応じて変更してください。デフォルトでは、kubectl は$HOME/.kube/configを使用してクラスターに接続します。また、KUBECONFIG環境変数または--kubeconfig
出力例:
Subject: O=system:users, OU=, CN=1***-1673419473以下に示すとおり:
O: Kubernetes ユーザーグループ。この例ではグループ名はsystem:usersです。CN: 関連付けられたユーザー情報。この例ではユーザーは1***-1673419473であり、1***はアカウント内の Alibaba Cloud ユーザー ID です。
kubeconfig 証明書の有効期限を確認するにはどうすればよいですか?
以下のコマンドを実行して、kubeconfig ファイルに関連付けられた証明書の有効期限を取得します:
grep client-certificate-data kubeconfig |awk '{print $2}' |base64 -d | openssl x509 -noout -enddatekubeconfig のパスは必要に応じて変更してください。デフォルトでは、kubectl は$HOME/.kube/configを使用してクラスターに接続します。また、KUBECONFIG環境変数または--kubeconfig
出力例:
notAfter=Jan 10 06:44:34 2026 GMTこの例では、Jan 10 06:44:34 2026 GMT が証明書の有効期限です。
証明書の有効期限が切れる 180 日前、または有効期限が切れた後であればいつでも、コンソールまたは API 操作を呼び出して新しい kubeconfig を取得できます。
クライアント証明書、クライアント秘密鍵、および API サーバー情報を取得するにはどうすればよいですか?
以下のコマンドを使用して、kubeconfig ファイルからクライアント証明書、クライアント秘密鍵、および 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}'`kubeconfig のパスは必要に応じて変更してください。デフォルトでは、kubectl は$HOME/.kube/configを使用してクラスターに接続します。また、KUBECONFIG環境変数または--kubeconfig
「certificate is valid for」エラーを解決するには、kubectl を使用してクラスターに接続する際にどうすればよいですか?
クラスターの API サーバー向け Server Load Balancer (SLB) インスタンスに新しい IP アドレスをバインドした場合、新しい IP を対象とした kubectl コマンドが失敗し、「Error while proxying request: x509: certificate is valid for xxx」または「Unable to connect to the server: x509: certificate is valid for xxx」というエラーが発生することがあります。
ACK マネージドクラスター: API サーバー証明書のサブジェクト代替名 (SAN) に新しい IP アドレスを追加します。詳細については、「ACK クラスター作成時に API サーバー証明書の SAN をカスタマイズ」をご参照ください。
ACK 専用クラスター:
kubectlがこのエラーを無視するように、insecure-skip-tls-verifyオプションを設定します。重要TLS 検証のバイパスはセキュリティリスクを伴うため、本番環境では推奨されません。代わりに、ACK 専用クラスターを ACK マネージドクラスター Pro エディションへホットマイグレーションすることを強く推奨します。その後、API サーバー証明書の SAN に新しい IP アドレスを追加してください。
方法 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: ...
ACK マネージドクラスターkubeconfig 証明書を自ら生成するために、ルート証明書キーを取得できますか?
ACK マネージドクラスター では、ルート証明書キーは公開されていません。クラスターの kubeconfig は、コンソールまたは OpenAPI 操作を呼び出すことで取得することを推奨します。
参照
OpenAPI を呼び出してクラスターの kubeconfig をクエリできます。詳細については、「DescribeClusterUserKubeconfig」をご参照ください。
ノードへのログイン方法については、「ECS リモート接続方法の概要」をご参照ください。