ユーザー クラスタの作成

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 にパブリック サブネットの踏み台インスタンスが含まれます。

管理サービスに接続するには、次の手順を実施します。

  1. GKE on AWS 構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。

    cd anthos-aws

  2. トンネルを開くには、bastion-tunnel.sh スクリプトを実行します。トンネルは localhost:8118 に転送されます。

    踏み台インスタンスへのトンネルを開くには、次のコマンドを実行します。

    ./bastion-tunnel.sh -N
    

    SSH トンネルからのメッセージがこのウィンドウに表示されます。接続を閉じる準備ができたら、Ctrl+C を使用するか、ウィンドウを閉じて処理を停止します。

  3. 新しいターミナルを開き、anthos-aws ディレクトリに移動します。

    cd anthos-aws
  4. 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 を使用して構成を適用します。

  1. ターミナルを開き、必要に応じて踏み台インスタンスに接続します。

  2. 管理サービスのインストール時に作成したフォルダに移動します。

  3. 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 のドキュメントをご覧ください。

  4. テキスト エディタでファイルを開き、必要に応じて編集します。デフォルトで、GKE on AWS は anthos-gke.yaml で指定された各アベイラビリティ ゾーンにノードプールを作成します。ノードプールのサイズと数を変更し、目的のクラスタに一致させることができます。また、構成に追加の変更を加えることもできます。たとえば、GKE on AWS ノード上のインスタンス タイプを変更できます。また、コントロール プレーン ノードでロギングとモニタリングを有効にすることもできます。

  5. ファイルを管理サービスに適用します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    

kubeconfig を作成する

ユーザー クラスタが起動している間、新しいユーザー クラスタの kubeconfig コンテキストを作成できます。このコンテキストを使用して、ユーザー クラスタまたは管理クラスタに対する認証を行います。

  1. 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

  2. kubectl を使用して、新しいユーザー クラスタに対する認証を行います。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    クラスタの準備が整っている場合は、出力にクラスタ内の Kubernetes コンポーネントの URL が含まれます。

クラスタのステータスの表示

管理サービスは、AWSCluster または AWSNodePool を適用するとき、AWS リソースをプロビジョニングします。

  1. anthos-aws ディレクトリから anthos-gke を使用して、コンテキストを管理サービスに切り替えます。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. クラスタを一覧表示するには、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 を使用します。

  1. anthos-aws ディレクトリから anthos-gke を使用して、コンテキストを管理サービスに切り替えます。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. kubectl get events を実行します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get events
    

出力には、管理サービスからの情報、警告、関連エラーが含まれます。

ユーザー クラスタの削除

ユーザー クラスタを削除するには、次の手順を行います。

  1. anthos-aws ディレクトリから anthos-gke を使用して、コンテキストを管理サービスに切り替えます。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. kubectl delete を使用して、ユーザー クラスタを含むマニフェストを削除します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f CLUSTER_FILE
    

    CLUSTER_FILE は、AWScluster オブジェクトと AWSNodePool オブジェクトを含むマニフェストの名前に置き換えます。例: cluster-0.yaml

すべてのユーザー クラスタの削除

すべてのユーザー クラスタを削除するには、次の手順を行います。

  1. anthos-aws ディレクトリから anthos-gke を使用して、コンテキストを管理サービスに切り替えます。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 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 のアンインストールをご覧ください。

次のステップ