基本クラスタを作成する

このドキュメントでは、Anthos clusters on VMware(GKE On-Prem)の小規模な概念実証用のインストールを行うために、基本クラスタを作成する方法について説明します。

主な手順は次のとおりです。

  1. 管理ワークステーションを作成する。

  2. 管理ワークステーションから、管理クラスタを作成する。

  3. 管理ワークステーションから、ユーザー クラスタを作成する。

始める前に

最小限のインフラストラクチャを設定するの説明に沿って、vSphere と Google Cloud の環境を設定します。

情報を収集する

管理ワークステーションの構成ファイルへの入力を準備するには、次の情報を収集します。

ログイン

gkeadm コマンドライン ツールで、SDK account プロパティを使用してサービス アカウントを作成します。つまり gkeadm を実行して管理ワークステーションを作成する前に、SDK account プロパティを設定することが重要です。

任意の Google アカウントでログインします。SDK の account プロパティが設定されます。

gcloud auth login

SDK の account プロパティが正しく設定されていることを確認します。

gcloud config list

出力には、SDK account プロパティの値が表示されます。例:

[core]
account = my-name@google.com
disable_usage_reporting = False
Your active configuration is: [default]

SDK アカウントにロールを付与する

gkeadm がサービス アカウントを作成、管理できるように、SDK の account プロパティとして設定された Google アカウントには次の IAM ロールが必要です。

  • resourcemanager.projectIamAdmin
  • serviceusage.serviceUsageAdmin
  • iam.serviceAccountCreator
  • iam.serviceAccountKeyAdmin

ロールを付与するには、Google Cloud プロジェクトに対する特定の権限が必要です。詳細については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。

必要な権限があれば、自分でロールを付与できます。それ以外の場合は、組織内の別のユーザーがロールを付与する必要があります。

ロールを付与するには:

Linux / macOS

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/resourcemanager.projectIamAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/serviceusage.serviceUsageAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/iam.serviceAccountKeyAdmin"

Windows

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/resourcemanager.projectIamAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/serviceusage.serviceUsageAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/iam.serviceAccountKeyAdmin"

以下を置き換えます。

  • PROJECT_ID: Google Cloud プロジェクトの ID
  • ACCOUNT: SDK の account プロパティの値

管理ワークステーションを作成する。

このセクションの手順では、gkeadm コマンドライン ツールを使用します。このツールは、64 ビット Linux、Windows 10、Windows Server 2019、macOS 10.15 以降で利用できます。

現在のディレクトリに gkeadm をダウンロードします。

テンプレートを生成する

./gkeadm create config

上記のコマンドにより、現在のディレクトリに次のファイルが作成されます。

  • credential.yaml
  • admin-ws-config.yaml

credential.yaml に入力する

credential.yaml に vCenter のユーザー名とパスワードを入力します。例:

kind: CredentialFile
items:
- name: vCenter
  username: "my-account-name"
  password: "AadmpqGPqq!a"

管理ワークステーションの構成ファイルをよく理解する

管理ワークステーションの構成ファイルのドキュメントに目を通して、ファイルの内容を大雑把に把握します。フィールドの値を入力しながら参照できるように、ページを別のタブかウィンドウで開いたままにすることをおすすめします。

admin-ws-config.yaml に入力する

admin-ws-config.yaml を編集用に開きます。

次のフィールドには、デフォルト値か生成された値が入力されています。

vCenter:
  credentials:
    fileRef:
      credentials:
      entry:

adminWorkstation:
  name:
  cpus:
  memoryMB:
  diskGB:
  dataDiskName:
  dataDiskMB:

ntpServer:

gcp.componentAccessServiceAccountKeyPath フィールドに入力します。

vCenter セクション内の次のフィールドに入力します。

credentials:
  address:
datacenter:
datastore:
cluster:
network:
caCertPath:

vCenter.resourcePoolCLUSTER_NAME/リソースに設定します。CLUSTER_NAME は、vSphere クラスタの名前に置き換えます。

必要に応じて、proxyURL フィールドに入力します。

必要に応じて、adminWorkstation.proxyURL フィールドに入力します。

adminWorkstation.network.ipAllocationMode"static" に設定します。

adminWorkstation.network.hostConfig セクション内の次のフィールドに入力します。

ip:
gateway:
netmask:
dns:

管理ワークステーションの構成ファイルの例

以下に、入力された管理ワークステーション構成ファイルの例を示します。

gcp:
  componentAccessServiceAccountKeyPath: "/usr/local/google/home/me/keys/component-access-key.json"
vCenter:
  credentials:
    address: "vc01.example"
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  datacenter: "vc01"
  datastore: "vc01-datastore-1"
  cluster: "vc01-workloads-1"
  network: "vc01-net-1"
  resourcePool: "vc01-workloads-1/Resources"
  caCertPath: "/usr/local/google/home/stevepe/certs/vc01-cert.pem"
proxyUrl: ""
adminWorkstation:
  name: gke-admin-ws-220304-014925
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: gke-on-prem-admin-workstation-data-disk/gke-admin-ws-220304-014925-data-disk.vmdk
  dataDiskMB: 512
  network:
    ipAllocationMode: "static"
    hostConfig:
      ip: "172.16.20.49"
      gateway: "172.16.20.1"
      netmask: "255.255.255.0"
      dns:
      - "203.0.113.1"
  proxyUrl: ""
  ntpServer: ntp.ubuntu.com

管理ワークステーションを作成する

管理ワークステーションを作成すると、サービス アカウントが自動的に作成されます。

./gkeadm create admin-workstation --auto-create-service-accounts

出力には、管理ワークステーションの作成に関する詳細情報が含まれ、管理ワークステーションへの SSH 接続の取得に使用できるコマンドが表示されます。

...
Admin workstation is ready to use.
Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
This file is required for future upgrades
SSH into the admin workstation with the following command:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49
********************************************************************

管理ワークステーションの作成の詳細については、管理ワークステーションを作成するをご覧ください。

管理ワークステーション上のファイルを表示する

上の出力に表示されたコマンドを使用して、管理ワークステーションへの SSH 接続を確立します。例:

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49

ホーム ディレクトリ内のファイルを一覧表示する

ls -1

出力には、gkeadm が作成した 2 つのサービス アカウント(connect-register サービス アカウントと logging-monitoring サービス アカウント)の JSON キーファイルが含まれます。connect-register サービス アカウントの JSON キーファイルの名前をメモします。これは、後でクラスタを作成するときに必要になります。例:

admin-cluster.yaml
admin-ws-config.yaml
sa-key.json
connect-register-sa-2203040617.json
credential.yaml
log-mon-sa-2203040617.json
logs
vc01-cert.pem
user-cluster.yaml

管理クラスタを作成する

管理ワークステーションへの SSH 接続を確立します。

管理クラスタの静的 IP アドレスを指定する

管理クラスタのノードに使用する静的 IP アドレスを指定するには、IP ブロック ファイルadmin-cluster-ipblock.yaml という名前で作成します。

管理クラスタ内の次のノードには、IP アドレスが 5 つ必要です。

  • 管理クラスタのコントロール プレーンとアドオンを実行するために 3 ノード

  • アップグレード中に一時的に使用される追加の 1 つのノード

  • 後で作成するユーザー クラスタのコントロール プレーンを実行するための 1 つのノード

5 つのノードのアドレスを含む IP ブロック ファイルの例を次に示します。

blocks:
  - netmask: 255.255.255.0
    gateway: 172.16.20.1
    ips:
    - ip: 172.16.20.50
      hostname: admin-vm-1
    - ip: 172.16.20.51
      hostname: admin-vm-2
    - ip: 172.16.20.52
      hostname: admin-vm-3
    - ip: 172.16.20.53
      hostname: admin-vm-4
    - ip: 172.16.20.54
      hostname: admin-vm-5

ips フィールドは、IP アドレスとホスト名の配列です。これらは、VMware の Anthos クラスタが管理クラスタノードに割り当てる IP アドレスとホスト名です。

IP ブロック ファイルには、管理クラスタノード用のサブネット マスクとデフォルト ゲートウェイも指定します。

管理クラスタの構成ファイルをよく理解する

管理クラスタの構成ファイルのドキュメントに目を通して、ファイルの内容を大雑把に把握します。フィールドの値を入力しながら参照できるように、ページを別のタブかウィンドウで開いたままにすることをおすすめします。

管理クラスタの構成ファイルに入力する

gkeadm が管理用ワークステーションを作成した際に、admin-cluster.yaml という名前の構成ファイルが生成されました。この構成ファイルは、管理クラスタの作成用です。

admin-cluster.yaml を編集用に開きます。 管理クラスタ構成ファイルのいくつかのフィールドには、デフォルト値、生成された値、管理ワークステーションの作成時に指定した値がすでに入力されています。これらのフィールドは変更せずにそのままにできます。

vCenter.dataDisk フィールドに入力します。

network.hostConfig セクション内の次のフィールドに入力します。

dnsServers:
ntpServers:

network.ipMode.type"static" に設定します。

network.ipMode.ipBlockFilePath"admin-cluster-ipblock.yaml" に設定します。

network.serviceCIDRnetwork.podCIDR に値を入力するか、デフォルト値のままにしておきます。

loadBalancer.vips セクション内の次のフィールドに入力します。

controlPlaneVIP:
addonsVIP:

loadBalancer.kind"MetalLB" に設定します。

antiAffinityGroups.enabledfalse に設定します。

gkeConnect.projectID を Google Cloud プロジェクトの ID に設定します。

gkeConnect.registerServiceAccountKeyPath を、接続登録サービス アカウントの JSON キーファイルのパスに設定します。

管理クラスタの構成ファイルの例

以下に、入力された管理ワークステーション構成ファイルの例を示します。

apiVersion: v1
kind: AdminCluster
name: "gke-admin-01"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.11.0-gke.543-full.tgz"
vCenter:
  address: "vc01.example"
  datacenter: "vc-01"
  cluster: "vc01-workloads-1"
  resourcePool: "my-cluster/Resources"
  datastore: "vc01-datastore-1"
  caCertPath: "/usr/local/google/home/me/certs/vc01-cert.pem""
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  dataDisk: "vc01-admin-disk.vmdk"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "vc01-net-1"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
    addonsVIP: "172.16.20.60"
  kind: "MetalLB"
antiAffinityGroups:
  enabled: false
componentAccessServiceAccountKeyPath: "sa-key.json"
gkeConnect:
  projectID: "my-project-123"
  registerServiceAccountKeyPath: "connect-register-sa-2203040617.json"
stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
  disableVsphereResourceMetrics: false

管理クラスタ構成ファイルを検証する

管理クラスタ構成ファイルが有効であり、クラスタの作成に使用できることを確認します。

gkectl check-config --config admin-cluster.yaml

vSphere 環境を準備する

gkectl prepare を実行して、vSphere 環境を初期化します。

gkectl prepare --config admin-cluster.yaml --skip-validation-all

管理クラスタを作成する

管理クラスタを作成します。

gkectl create admin --config admin-cluster.yaml

障害発生後に管理クラスタの作成を再開する

管理クラスタの作成が失敗またはキャンセルされた場合は、create コマンドを再度実行してください。

gkectl create admin --config admin-cluster.yaml

管理クラスタの kubeconfig ファイルを見つける

gkectl create admin コマンドで、現在のディレクトリに kubeconfig という名前の kubeconfig ファイルが作成されます。この kubeconfig ファイルは後で管理クラスタとやり取りする際に必要になります。

管理クラスタが実行されていることを確認する

管理クラスタが実行されていることを確認します。

kubectl get nodes --kubeconfig kubeconfig

出力には、管理クラスタノードが表示されます。例:

gke-admin-master-hdn4z            Ready    control-plane,master ...
gke-admin-node-7f46cc8c47-g7w2c   Ready ...
gke-admin-node-7f46cc8c47-kwlrs   Ready ...

ユーザー クラスタを作成する

ユーザー クラスタは、Google Cloud コンソールまたは管理ワークステーションのコマンドラインから作成できます。

Console

このセクションでは、ロードバランサとして MetalLB により最小限のインフラストラクチャ用に構成されたユーザー クラスタを作成する方法について説明します。

ユーザー クラスタを作成すると、Google Cloud コンソールによって、クラスタの作成用に選択した Google Cloud プロジェクトで GKE On-Prem API が自動的に有効になります。GKE On-Prem API は Google Cloud のインフラストラクチャで動作し、Google Cloud コンソールはこの API を使用して vSphere データセンターにクラスタを作成します。クラスタを管理するため、GKE-On-Prem API は、クラスタの作成時に指定した Google Cloud リージョンに、クラスタの状態に関するメタデータを保存する必要があります。このメタデータにより、GKE On-Prem API は、ユーザー クラスタのライフサイクルを管理できますが、ワークロード固有のデータは含まれません。

  1. Google Cloud コンソールで、Anthos の [クラスタ] ページに移動します。

    [Anthos クラスタ] ページに移動

  2. クラスタを作成する Google Cloud プロジェクトを選択します。選択したプロジェクトは、フリート ホスト プロジェクトとしても使用されます。これは、管理クラスタが登録されているプロジェクトと同じでなければなりません。ユーザー クラスタを作成すると、選択したプロジェクトのリストに自動的に登録されます。

  3. [クラスタを作成] をクリックします。

  4. ダイアログ ボックスで、[オンプレミス] をクリックします。

  5. [VMware vSphere] の横にある [構成] をクリックします。

  6. 前提条件を確認し、[続行] をクリックします。

クラスタの基本

  1. ユーザー クラスタの名前を入力します。
  2. [管理クラスタ] で、リストから管理クラスタを選択します。使用する管理クラスタが表示されない場合は、トラブルシューティングのセクション管理クラスタがクラスタの基本プルダウン リストに表示されないをご覧ください。

  3. [GCP API ロケーション] フィールドで、リストから Google Cloud リージョンを選択します。GKE On-Prem API が実行されるリージョンを制御するだけでなく、この設定では次の保存先リージョンを制御します。

    • クラスタのライフサイクルを管理する際に GKE On-Prem API が必要とするユーザー クラスタ メタデータ
    • システム コンポーネントの Cloud Logging データと Cloud Monitoring データ
    • Cloud Audit Logs によって作成された管理監査ログ
  4. ユーザー クラスタ用の Anthos clusters on VMware バージョンを選択します。

  5. [続行] をクリックして [ネットワーキング] セクションに移動します。

ネットワーキング

このセクションでは、クラスタのノード、Pod、Service の IP アドレスを指定します。ユーザー クラスタには、ノードごとに 1 つの IP アドレスと、ユーザー クラスタのアップグレード中に一時的なノードに使用される追加の IP アドレスが必要です。詳細については、ユーザー クラスタに必要な IP アドレス数をご覧ください。

  1. [ノード IP] セクションで、ユーザー クラスタの [IP モード] を選択します。次のいずれかを選択します。

    • DHCP: クラスタノードが、IP アドレスを DHCP サーバーから取得するようにするには、[DHCP] を選択します。

    • 静的: クラスタノードに静的 IP アドレスを付与する場合は、[静的] を選択します。

  2. [DHCP] を選択した場合は、次の手順にスキップして Service と Pod の CIDR を指定します。[静的 IP モード] で、次の情報を入力します。

    1. ユーザー クラスタ用ゲートウェイの IP アドレスを入力します。
    2. ユーザー クラスタ ノードのサブネット マスクを入力します。

    3. [IP アドレス] セクションで、IP アドレスと、必要に応じてユーザー クラスタ内のノードのホスト名を入力します。個別の IP v4 アドレス(192.0.2.1 など)か IPv4 アドレスの CIDR ブロック(192.0.2.0/24 など)を入力できます。

      • CIDR ブロックを入力する場合、ホスト名は入力しないでください。
      • 個別の IP アドレスを入力する場合は、必要に応じてホスト名を入力できます。ホスト名を入力しないと、Anthos clusters on VMware はホスト名として vSphere の VM 名を使用します。
    4. 必要に応じて [+ IP アドレスを追加] をクリックし、IP アドレスを追加します。

  3. Google Cloud コンソールの Service と Pod CIDR セクションで、Kubernetes Service と Pod に次のアドレス範囲を指定します。

    • サービス CIDR: 10.96.0.0/20
    • Pod CIDR: 192.168.0.0/16

    独自のアドレス範囲を入力する場合は、Pod と Service 向け IP アドレスのベスト プラクティスをご覧ください。

  4. [静的 IP モード] を選択した場合は、[ホスト構成] セクションで次の情報を指定します。

    1. DNS サーバーの IP アドレスを入力します。
    2. NTP サーバーの IP アドレスを入力します。
    3. 必要に応じて、DNS 検索ドメインを入力します。
  5. [続行] をクリックして、[ロードバランサ] セクションに移動します。

ロードバランサ

MetalLB をロードバランサとして構成します。

  1. [ロードバランサの種類] で [MetalLB] を選択したままにします。

  2. [仮想 IP] セクションで、以下を入力します。

    • コントロール プレーン VIP: ユーザー クラスタの Kubernetes API サーバーに送信されるトラフィックに使用する宛先 IP アドレス。この IP アドレスは、管理クラスタノードと同じ L2 ドメイン内になければなりません。このアドレスを [アドレスプール] セクションには追加しないでください。

    • Ingress VIP: Ingress プロキシ用のロードバランサに構成する IP アドレス。これは、[アドレスプール] セクションにあるアドレスプールに追加する必要があります。

  3. [アドレスプール] セクションで、上り(内向き)VIP 用のアドレスプールを指定します。

    1. [+ IP アドレス範囲を追加] をクリックします。
    2. アドレスプールの名前を入力します。
    3. IP アドレス範囲を CIDR 表記(例: 192.0.2.0/26)または範囲表記(例: 192.0.2.64-192.0.2.72)で入力します。各プール内での IP アドレスは重複してはならず、かつクラスタノードと同じサブネット内に存在する必要があります。
    4. [IP アドレスの割り当て] で、次のいずれかを選択します。

      • 自動: MetalLB コントローラがアドレスプールから IP アドレスを LoadBalancer タイプのサービスに自動的に割り当てるには、このオプションを選択します。
      • 手動: プールのアドレスを使用して、LoadBalancer タイプの Service のアドレスを手動で指定する場合は、このオプションを選択します。
    5. 末尾が .0 または .255 のプールのアドレスを MetalLB コントローラで使用しないようにするには、[バグのある IP アドレスを避ける] をクリックします。これにより、バグの多いコンシューマ デバイスが、これらの特別な IP アドレスに送信されたトラフィックを誤って破棄するという問題を回避できます。

    6. 以上の手順を必要なだけ繰り返してください。設定を終えたら、[完了] をクリックします。

  4. [次へ] をクリックします。

コントロール プレーン

  1. ユーザー クラスタのコントロール プレーン コンポーネントを実行する管理クラスタ内のノード用に構成されたデフォルト値を確認します。インフラストラクチャの最小値はデフォルト値で十分ですが、その値は必要に応じて調整できます。

  2. [次へ] をクリックします。

機能

  1. [反アフィニティ グループを有効にする] をオフにします。最小インフラストラクチャを設定したときに作成した ESXi ホストは 1 つのみのため、反アフィニティ グループは有効にしないでください。

  2. [次へ] をクリックします。

ノードプール

クラスタは、少なくとも 1 つのノードプールを含めて作成されます。ノードプールは、このクラスタで作成されたノードのグループのテンプレートです。詳細については、ノードプールの作成と管理をご覧ください。

ノードプールに構成されたデフォルト値を確認します。インフラストラクチャの最小値はデフォルト値で十分ですが、その値は必要に応じて調整できます。

確認して完了する

[Verify and Complete] をクリックしてユーザー クラスタを作成します。ユーザー クラスタの作成には 10 分以上かかります。Google Cloud コンソールで設定を確認し、データセンターにクラスタを作成するときに、ステータス メッセージが表示されます。

Google Cloud コンソールでユーザー クラスタを作成するオペレーターは、クラスターの作成後に自動的にログインされます。他のオペレーターは、クラスタへのアクセス権を取得するために、Cloud Console からクラスタにログインするの手順を行う必要があります。

設定の確認中にエラーが発生した場合、Google Cloud コンソールにエラー メッセージが表示されます。これにより、構成の問題を修正し、クラスタをもう一度作成することで簡単に解決できます。

発生する可能性のあるエラーと修正方法の詳細については、Google Cloud コンソールでのユーザー クラスタの作成に関するトラブルシューティングをご覧ください。

ユーザー クラスタの kubeconfig ファイルを作成する

コマンドラインからデータセンターのユーザー クラスタにアクセスするには、管理クラスタから kubeconfig ファイルを取得する必要があります。ユーザー クラスタのステータスが正常であることが Google Cloud コンソールに表示されたら、管理ワークステーションで次のコマンドを実行して、ユーザー クラスタ用の新しい kubeconfig ファイルをローカルに保存します。次のように置き換えます。

  • CLUSTER_NAME: 新しく作成されたユーザー クラスタの名前
  • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス
  • USER_CLUSTER_KUBECONFIG: コマンドが出力するユーザー クラスタの kubeconfig ファイルの名前
kubectl get secret admin \
--kubeconfig ADMIN_CLUSTER_KUBECONFIG \
-n CLUSTER_NAME \
-o=jsonpath='{.data.admin\.conf}' | base64 -d > USER_CLUSTER_KUBECONFIG

ファイルを保存したら、kubectl を使用してユーザー クラスタへのアクセスを開始できます。次に例を示します。

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get namespaces

コマンドライン

  1. 管理ワークステーションへの SSH 接続を確立します。

  2. ユーザー クラスタの静的 IP を指定する

    ユーザー クラスタに使用する静的 IP アドレスを指定するには、IP ブロック ファイルuser-cluster-ipblock.yaml という名前で作成します。ユーザー クラスタ ノード用に 3 つの IP アドレスと、アップグレード中に一時的に使用する追加のアドレスが必要です。4 つのアドレスがある IP ブロック ファイルの例を次に示します。

    blocks:
      - netmask: 255.255.255.0
        gateway: 172.16.20.1
        ips:
        - ip: 172.16.20.55
          hostname: user-vm-1
        - ip: 172.16.20.56
          hostname: user-vm-2
        - ip: 172.16.20.57
          hostname: user-vm-3
        - ip: 172.16.20.58
          hostname: user-vm-4
    

ユーザー クラスタの構成ファイルへの入力

gkeadm が管理用ワークステーションを作成した際に、user-cluster.yaml という名前の構成ファイルが生成されました。この構成ファイルはユーザー クラスタの作成用です。

  1. ユーザー クラスタの構成ファイルをよく理解する

    ユーザー クラスタの構成ファイルのドキュメントに目を通して、ファイルの内容を大雑把に把握します。フィールドの値を入力しながら参照できるように、ページを別のタブかウィンドウで開いたままにすることをおすすめします。

  2. user-cluster.yaml を編集用に開きます。

    ユーザー クラスタの構成ファイルのいくつかのフィールドには、デフォルト値、生成された値、管理ワークステーションの作成時に指定した値がすでに入力されています。これらのフィールドは変更せずにそのままにできます。

  3. [name] にユーザー クラスタに対して選択した名前を設定します。

ネットワーク セクションのフィールドに入力する

  1. network.hostConfig セクションで、次のフィールドの IP アドレスを入力します。

    dnsServers:
    ntpServers:
    
  2. network.ipMode.type"static" に設定します。

  3. network.ipMode.ipBlockFilePath"user-cluster-ipblock.yaml" に設定します。

  4. network.serviceCIDRnetwork.podCIDR に値を入力するか、デフォルト値のままにしておきます。

ロードバランサ セクションのフィールドに入力する

  1. loadBalancer.vips セクション内の次のフィールドに入力します。

    controlPlaneVIP:
    ingressVIP:
    
  2. loadBalancer.kind"MetalLB" に設定します。

  3. loadBalancer.metalLB セクションに入力します。詳細については、MetalLB によるバンドルされたロード バランシングをご覧ください。

  4. 少なくとも 1 つのノードプールで、enableLoadBalancertrue に設定します。詳細については、MetalLB によるバンドルされたロード バランシングをご覧ください。

  5. antiAffinityGroups.enabledfalse に設定します。

ユーザー クラスタの構成ファイルの例

以下に、入力されたユーザー クラスタ構成ファイルの例を示します。

apiVersion: v1
kind: UserCluster
name: "my-user-cluster"
gkeOnPremVersion: "1.11.0-gke.543"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
  serviceCIDR: "10.96.0.0/20"
  podCIDR: "192.168.0.0/16"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.61"
    ingressVIP: "172.16.20.62"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "uc-address-pool"
      addresses:
      - "172.16.20.63-172.16.20.72"
nodePools:
- name: "uc-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: false
gkeConnect:
  projectID: "my-project-123"
  registerServiceAccountKeyPath: "connect-register-sa-2203040617.json"
stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
  disableVsphereResourceMetrics: false
autoRepair:
  enabled: true

構成を検証してクラスタを作成する

  1. ユーザー クラスタの構成ファイルが有効であり、クラスタの作成に使用できることを確認します。

    gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
    
  2. ユーザー クラスタを作成します。

    gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml
    

    クラスタの作成には約 30 分かかります。

ユーザー クラスタ kubeconfig ファイルを見つける

gkectl create cluster コマンドで、現在のディレクトリに USER_CLUSTER_NAME-kubeconfig という名前の kubeconfig ファイルが作成されます。この kubeconfig ファイルは後でユーザー クラスタとやり取りする際に必要になります。

ユーザー クラスタが実行されていることを確認する

ユーザー クラスタが実行されていることを確認します。

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

USER_CLUSTER_KUBECONFIG は、kubeconfig ファイルのパスに置き換えます。

出力には、ユーザー クラスタノードが表示されます。例:

my-user-cluster-node-pool-69-d46d77885-7b7tx   Ready ...
my-user-cluster-node-pool-69-d46d77885-lsvzk   Ready ...
my-user-cluster-node-pool-69-d46d77885-sswjk   Ready ...

次のステップ

アプリケーションをデプロイする