GKE on AWS ユーザー クラスタは、Kubernetes ワークロードをホストします。このトピックでは、基本的なユーザー クラスタの作成方法について説明します。ユーザー クラスタを詳細に構成する場合は、カスタム ユーザー クラスタの作成をご覧ください。
AWSCluster
と AWSNodePool
のカスタム リソースを使用して、GKE on AWS ユーザー クラスタをプロビジョニングします。
始める前に
ユーザー クラスタを作成するには、まず管理サービスをインストールする必要があります。
GKE on AWS リソースに接続するには、次の手順を実施します。既存の AWS VPC(または VPC への直接接続)があるか、管理サービスの作成時に専用の VPC を作成したかに基づいて、以下の手順を実施します。
既存の VPC
既存の VPC への直接接続または VPN 接続がある場合は、このトピックのコマンドから env HTTP_PROXY=http://localhost:8118
行を省略します。
専用の VPC
専用の VPC で管理サービスを作成すると、GKE on AWS にパブリック サブネットの踏み台インスタンスが含まれます。
管理サービスに接続するには、次の手順を実施します。
GKE on AWS 構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。
cd anthos-aws
トンネルを開くには、
bastion-tunnel.sh
スクリプトを実行します。トンネルはlocalhost:8118
に転送されます。踏み台インスタンスへのトンネルを開くには、次のコマンドを実行します。
./bastion-tunnel.sh -N
SSH トンネルからのメッセージがこのウィンドウに表示されます。接続を閉じる準備ができたら、Ctrl+C を使用するか、ウィンドウを閉じて処理を停止します。
新しいターミナルを開き、
anthos-aws
ディレクトリに移動します。cd anthos-aws
kubectl
を使用してクラスタに接続できることを確認します。env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
出力には、Management Service API サーバーの URL が含まれます。
コントロール プレーン インスタンス サイズの選択
GKE on AWS は、コントロール プレーン インスタンスのサイズ変更をサポートしていません。ユーザー クラスタを作成する前に、コントロール プレーンのインスタンス サイズを選択してください。コントロール プレーンのサイズは、クラスタ内のノードの数によって異なります。次の表に、さまざまなクラスタサイズに対し推奨されるコントロール プレーンのインスタンス サイズを示します。
クラスタサイズ(ノード) | コントロール プレーン インスタンス タイプ |
---|---|
1~10 | m5.large |
11~100 | m5.xlarge |
101~200 | m5.2xlarge |
ユーザー クラスタの作成
この例では、terraform
を使用して構成を生成し、基本クラスタを作成します。次に、kubectl apply
を使用して構成を適用します。
ターミナルを開き、必要に応じて踏み台インスタンスに接続します。
管理サービスのインストール時に作成したフォルダに移動します。
Terraform を使用して、サンプル クラスタを構成するマニフェストを生成し、YAML ファイルに保存します。Terraform のバージョンを選択して、次のコマンドを実行します。
Terraform 0.12、0.13
terraform output cluster_example > cluster-0.yaml
Terraform 0.14.3 以降
terraform output -raw cluster_example > cluster-0.yaml
このファイルの内容について詳しくは、
AWSCluster
とAWSNodePool
のドキュメントをご覧ください。テキスト エディタでファイルを開き、必要に応じて編集します。デフォルトで、GKE on AWS は
anthos-gke.yaml
で指定された各アベイラビリティ ゾーンにノードプールを作成します。ノードプールのサイズと数を変更し、目的のクラスタに一致させることができます。また、構成に追加の変更を加えることもできます。たとえば、GKE on AWS ノード上のインスタンス タイプを変更できます。また、コントロール プレーン ノードでロギングとモニタリングを有効にすることもできます。ファイルを管理サービスに適用します。
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f cluster-0.yaml
kubeconfig を作成する
ユーザー クラスタが起動している間、新しいユーザー クラスタの kubeconfig
コンテキストを作成できます。このコンテキストを使用して、ユーザー クラスタまたは管理クラスタに対する認証を行います。
anthos-gke aws clusters get-credentials
を使用して、~/.kube/config
にユーザー クラスタのkubeconfig
を生成します。env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
CLUSTER_NAME をクラスタ名に置き換えます。例:
cluster-0
kubectl
を使用して、新しいユーザー クラスタに対する認証を行います。env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
クラスタの準備が整っている場合は、出力にクラスタ内の Kubernetes コンポーネントの URL が含まれます。
クラスタのステータスの表示
管理サービスは、AWSCluster
または AWSNodePool
を適用するとき、AWS リソースをプロビジョニングします。
anthos-aws
ディレクトリからanthos-gke
を使用して、コンテキストを管理サービスに切り替えます。cd anthos-aws anthos-gke aws management get-credentials
クラスタをリストするために、
kubectl get AWSClusters
を使用します。env HTTPS_PROXY=http://localhost:8118 \ kubectl get AWSClusters
出力には、各クラスタの名前、状態、経過時間、バージョン、エンドポイントが含まれます。
たとえば、次の出力には
cluster-0
という名前のAWSCluster
が 1 つだけ含まれています。NAME STATE AGE VERSION ENDPOINT cluster-0 Provisioning 2m41s 1.25.5-gke.2100 gke-xyz.elb.us-east-1.amazonaws.com
クラスタのイベントを表示する
ユーザー クラスタの最近の Kubernetes イベントを表示するには、kubectl get events
を使用します。
anthos-aws
ディレクトリからanthos-gke
を使用して、コンテキストを管理サービスに切り替えます。cd anthos-aws anthos-gke aws management get-credentials
kubectl get events
を実行します。env HTTPS_PROXY=http://localhost:8118 \ kubectl get events
出力には、管理サービスからの情報、警告、関連エラーが含まれます。
ユーザー クラスタの削除
ユーザー クラスタを削除するには、次の手順を行います。
anthos-aws
ディレクトリからanthos-gke
を使用して、コンテキストを管理サービスに切り替えます。cd anthos-aws anthos-gke aws management get-credentials
kubectl delete
を使用して、ユーザー クラスタを含むマニフェストを削除します。env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f CLUSTER_FILE
CLUSTER_FILE は、AWScluster オブジェクトと AWSNodePool オブジェクトを含むマニフェストの名前に置き換えます。例:
cluster-0.yaml
すべてのユーザー クラスタの削除
すべてのユーザー クラスタを削除するには、次の手順を行います。
anthos-aws
ディレクトリからanthos-gke
を使用して、コンテキストを管理サービスに切り替えます。cd anthos-aws anthos-gke aws management get-credentials
kubectl delete
を使用して、管理サービスから AWSNodePool と AWSCluster を削除します。env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSNodePool --all env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSCluster --all
詳細については、GKE on AWS のアンインストールをご覧ください。
次のステップ
GKE on AWS で最初のワークロードを起動する。
GKE Identity Service で ID プロバイダを構成する。
異なる設定でカスタム ユーザー クラスタを作成する。
ワークロードを負荷分散するための AWS ネットワーキングを設定する。
AWSCluster と AWSNodePool のカスタム リソース定義の仕様を確認する。