ユーザー クラスタの作成

AWS 上の Anthos クラスタ(GKE on AWS)のユーザー クラスタは、Kubernetes ワークロードをホストします。このトピックでは、基本的なユーザー クラスタの作成方法について説明します。ユーザー クラスタを詳細に構成する場合は、カスタム ユーザー クラスタの作成をご覧ください。

AWSClusterAWSNodePoolカスタム リソースを使用して、AWS 上の Anthos クラスタのユーザー クラスタをプロビジョニングします。

始める前に

ユーザー クラスタを作成するには、まず管理サービスをインストールする必要があります。

AWS 上の Anthos クラスタのリソースに接続するには、次の手順を行います。既存の AWS VPC(または VPC への直接接続)があるか、管理サービスの作成時に専用の VPC を作成したかに基づいて、以下の手順を行います。

既存の VPC

既存の VPC への直接接続または VPN 接続がある場合は、このトピックのコマンドから env HTTP_PROXY=http://localhost:8118 行を省略します。

専用の VPC

専用の VPC で管理サービスを作成すると、Anthos clusters on AWS にパブリック サブネットの踏み台インスタンスが含まれています。

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

  1. Anthos clusters 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 が含まれます。

コントロール プレーン インスタンス サイズの選択

AWS 上の Anthos クラスタは、コントロール プレーン インスタンスのサイズ変更をサポートしていません。ユーザー クラスタを作成する前に、コントロール プレーンのインスタンス サイズを選択してください。コントロール プレーンのサイズは、クラスタ内のノードの数によって異なります。次の表に、さまざまなクラスタサイズに対し推奨されるコントロール プレーンのインスタンス サイズを示します。

クラスタサイズ(ノード) コントロール プレーン インスタンス タイプ
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
    

    このファイルの内容について詳しくは、AWSClusterAWSNodePool のドキュメントをご覧ください。

  4. テキスト エディタでファイルを開き、必要に応じて編集します。デフォルトでは、AWS 上の Anthos クラスタは、anthos-gke.yaml で指定された各アベイラビリティ ゾーンにノードプールを作成します。ノードプールのサイズと数を変更し、目的のクラスタに一致させることができます。また、構成に追加の変更を加えることもできます。たとえば、Anthos clusters 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.24.6-gke.1300   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
    

詳細については、AWS 上の Anthos クラスタのアンインストールをご覧ください。

次のステップ