このページでは、Google Kubernetes Engine(GKE)クラスタの管理とアクセスに使用される kubectl コマンドライン ツールのインストール手順について説明します。 Google Cloudで複数のクラスタを実行する場合は、kubectl 構成が必要です。
次のことについて学習します。
kubectlの仕組みkubectlと必要な依存関係をインストールする方法kubectlのデフォルト クラスタを設定する方法- 特定のクラスタに対して
kubectlコマンドを実行する方法
このページは、クラウド リソースのプロビジョニングや構成など、クラウド インフラストラクチャの設定、モニタリング、管理を行う IT 管理者、オペレーター、デベロッパーを対象としています。 Google Cloud のドキュメントで使用されている一般的なロールとタスクの例の詳細については、一般的な GKE ユーザーロールとタスクをご覧ください。
このページを読む前に、Kubernetes kubectl について理解しておいてください。
始める前に
作業を始める前に、次のタスクが完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components updateコマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。
- すでに Autopilot クラスタまたは Standard クラスタが存在していることを確認する。新しいクラスタを作成するには、Autopilot クラスタの作成をご覧ください。
kubectl をインストールする
kubectl は、Google Cloud CLI または外部パッケージ マネージャー(apt、yum など)を使用してインストールできます。
gcloud
kubectlコンポーネントをインストールします。gcloud components install kubectlkubectlが最新バージョンであり、インストール済みかどうか確認します。kubectl version --client
apt
cloud-sdkリポジトリがあることを確認します。grep -rhE ^deb /etc/apt/sources.list* | grep "cloud-sdk"出力は次のようになります。
deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk maincloud-sdkリポジトリがリストにない場合は、gcloud CLI をインストールします。kubectlコンポーネントをインストールします。apt-get update apt-get install -y kubectlkubectlが最新バージョンであり、インストール済みであることを確認します。kubectl version --client
yum
cloud-sdkリポジトリがあることを確認します。yum repolist | grep "google-cloud-sdk"出力は次のようになります。
google-cloud-sdk Google Cloud SDK 2,205kubectlコンポーネントをインストールします。yum install -y kubectlkubectlが最新バージョンであり、インストール済みかどうか確認します。kubectl version --client
必要なプラグインをインストールする
kubectl などの Kubernetes クライアントには認証プラグイン gke-gcloud-auth-plugin が必要です。このプラグインは、Client-go Credential Plugins フレームワークを使用して、GKE クラスタと通信するための認証トークンを提供します。
Kubernetes バージョン 1.26 がリリースされる前に gcloud CLI を起動する場合は、gke-gcloud-auth-plugin バイナリのインストールが必要になります。プラグインがインストールされていない場合、kubectl などのカスタム Kubernetes クライアントの既存のインストールは機能しなくなります。
kubectl などのクライアントで GKE を操作するには、このプラグインをインストールする必要があります。プラグインがインストールされていなければ、既存のクライアントにエラー メッセージが表示されます。
始める前に、プラグインがインストール済みであるかどうかを確認します。
gke-gcloud-auth-plugin --version
出力にバージョン情報が表示される場合は、このセクションをスキップします。
認証プラグインは、gcloud CLI または外部パッケージ マネージャー(apt、yum など)を使用してインストールできます。
gcloud
gke-gcloud-auth-plugin バイナリをインストールします。
gcloud components install gke-gcloud-auth-plugin
apt
gke-gcloud-auth-plugin バイナリをインストールします。
apt-get install google-cloud-sdk-gke-gcloud-auth-pluginyum
gke-gcloud-auth-plugin バイナリをインストールします。
yum install google-cloud-sdk-gke-gcloud-auth-plugingke-gcloud-auth-plugin バイナリのインストールを確認します。
gke-gcloud-auth-pluginバイナリのバージョンを確認します。gke-gcloud-auth-plugin --versionプラグインを使用するように
kubectl構成を更新します。gcloud container clusters get-credentials CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION次のように置き換えます。
CLUSTER_NAME: クラスタの名前。CONTROL_PLANE_LOCATION: クラスタのコントロール プレーンの Compute Engine ロケーション。リージョン クラスタの場合はリージョン、ゾーンクラスタの場合はゾーンを指定します。
次のコマンドを実行して構成を検証します。
kubectl get namespaces出力は次のようになります。
NAME STATUS AGE default Active 51d kube-node-lease Active 51d kube-public Active 51d kube-system Active 51d
このプラグインの詳細については、Kubernetes KEP をご覧ください。
kubectl を操作する
Kubernetes は、kubeconfig という名前の YAML ファイルを使用して、kubectl のクラスタ認証情報を格納します。デフォルトで、このファイルは $HOME/.kube/config に保存されます。
kubeconfig には、コンテキストと呼ばれるアクセス パラメータのグループが含まれています。各コンテキストには 1 つの Kubernetes クラスタ、1 人のユーザー、任意のデフォルトの Namespace が含まれます。kubectl は、コマンドの実行時にコンテキストを参照します。
必要に応じて、次のタスクを使用して kubectl を構成できます。
kubectlが通信するクラスタを選択します。kubeconfigファイルで現在のコンテキストを設定して、kubectlのデフォルト クラスタを設定します。--clusterフラグを使用して、特定のクラスタに対してkubectlコマンドを実行します。
kubeconfig を表示する
環境の kubeconfig を表示するには、次のコマンドを実行します。
kubectl config view
このコマンドは、すでに kubeconfig エントリが生成されているすべてのクラスタのリストを返します。GKE クラスタがリストされた場合、現在の環境でその GKE クラスタに対して kubectl コマンドを実行できます。それ以外の場合は、kubectl のクラスタ情報を保存する必要があります。
kubectl の現在のコンテキストを表示する
現在のコンテキストとは、現在 kubectl のデフォルトとなっているクラスタのことです。すべての kubectl コマンドはこのクラスタに対して実行されます。
gcloud container clusters create-auto を使用してクラスタを作成すると、1 つのエントリが自動的に環境内の kubeconfig ファイルに追加され、現在のコンテキストがそのクラスタに変更されます。次に例を示します。
gcloud container clusters create-auto my-cluster
Creating my-cluster...done
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster
kubectl の現在のコンテキストを表示するには、次のコマンドを実行します。
kubectl config current-context
kubectl のクラスタ情報を保存する
Google Cloud コンソールを使用してクラスタを作成する場合、または別のパソコンから gcloud CLI を使用してクラスタを作成する場合には、環境の kubeconfig ファイルが更新されません。また、あるプロジェクト チームメンバーが gcloud CLI を使用してメンバー自身のパソコンからクラスタを作成する場合、そのメンバーの kubeconfig だけが更新されます。kubeconfig エントリには次のいずれかが格納されます。
gcloud auth listに示すような認証情報、または- アプリケーションのデフォルト認証情報(構成されている場合)
使用中の環境で kubeconfig コンテキストを生成するには、container.clusters.get 権限が付与されていることを確認します。この権限を付与する最も権限の少ない IAM ロールは container.clusterViewer です。
特定のクラスタの kubeconfig コンテキストを生成するには、次のコマンドを実行します。
gcloud container clusters get-credentials CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
次のように置き換えます。
CLUSTER_NAME: クラスタの名前。CONTROL_PLANE_LOCATION: クラスタのコントロール プレーンの Compute Engine ロケーション。リージョン クラスタの場合はリージョン、ゾーンクラスタの場合はゾーンを指定します。
クラスタの内部 IP アドレスを使用して kubeconfig エントリを生成する
すべてのクラスタには、特性が異なる複数のエンドポイント アドレスがあります。これらのエンドポイントの 1 つは、kubectl や他のサービスがクラスタ コントロール プレーンと通信するために使用する正規エンドポイントとして機能します。GKE は、次の順序に基づいてエンドポイントを自動的に選択します。
- 外部 IP アドレス(外部エンドポイントを有効にしている場合)
- 内部 IP アドレス
- DNS アドレス(IP アクセスが無効な場合)。デフォルトで正規エンドポイントを使用するには、
get-credentialsコマンドを実行します。kubectlが使用するエンドポイントをさらに制御するには、--internal-ipフラグまたは--dns-endpointフラグを使用します。内部 IP アドレスを使用するようにkubeconfigファイルを更新するには、次のコマンドを実行します。
gcloud container clusters get-credentials CLUSTER_NAME --internal-ip
DNS アドレスを使用するように kubeconfig ファイルを更新するには、次のコマンドを実行します。
gcloud container clusters get-credentials CLUSTER_NAME --dns-endpoint
CLUSTER_NAME は、使用するクラスタの名前に置き換えます。
デフォルトでは、get-credentials の実行時に endpoint フィールドに指定された IP アドレスが使用されます。
kubectl コマンドのデフォルト クラスタを設定する
以前にクラスタの kubeconfig エントリを生成している場合は、次のコマンドを実行して、kubectl の現在のコンテキストをそのクラスタに切り替えることができます。
gcloud container clusters get-credentials CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
次のように置き換えます。
CLUSTER_NAME: クラスタの名前。CONTROL_PLANE_LOCATION: クラスタのコントロール プレーンの Compute Engine ロケーション。リージョン クラスタの場合はリージョン、ゾーンクラスタの場合はゾーンを指定します。
たとえば、2 つのクラスタ(my-cluster と my-new-cluster)からなるプロジェクトを考えてみましょう。現在のコンテキストは my-new-cluster ですが、すべての kubectl コマンドを my-cluster に対して実行する必要があるとします。現在のコンテキストを my-new-cluster から my-cluster に切り替えるには、次のコマンドを実行します。
gcloud container clusters get-credentials CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
特定のクラスタに個別の kubectl コマンドを実行する
特定のクラスタに対して個々の kubectl コマンドを実行するには、--cluster=CLUSTER_NAME を使用します。
たとえば、2 つのクラスタ(my-cluster と my-new-cluster)からなる環境があり、現在のコンテキストが my-cluster であるとします。アプリケーションを my-new-cluster にデプロイする必要が生じましたが、現在のコンテキストを変更したくありません。現在のコンテキストを変更せずにアプリケーションを my-new-cluster にデプロイするには、次のコマンドを実行します。
kubectl run my-app --image us-docker.pkg.dev/my-project/my-repo/my-app:1.0 --cluster my-new-cluster
次のステップ
- GKE クラスタ内のリソースへのアクセスを認可する方法を学習する。
- GKE ワークロードから Google Cloud サービスに対して認証を行う。
kubectlのクイック リファレンスを読む。kubectlコマンドライン ツールのトラブルシューティングを行う。
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオで GKE のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
GKE の無料トライアル