基本クラスタを作成する

この投稿は、GKE on VMware の小規模な概念実証のインストール方法を説明するガイドのパート 2 です。パート 1 は、最小限のインフラストラクチャの設定に関するもので、IP アドレスの計画方法と、デプロイに必要な vSphere と Google Cloud インフラストラクチャの設定方法を説明しています。このドキュメントでは、前のセクションで行った設定と計画に基づいて、vSphere 環境で管理ワークステーション、管理クラスタ、ユーザー クラスタを作成する方法を説明します。その後、アプリケーションのデプロイに進むことができます。

このシンプルなインストールのインフラストラクチャ設定のように、このドキュメントを使用して設定したクラスタは、実際の本番環境のニーズやユースケースには適していない可能性があります。本番環境へのインストールに関するその他の情報、ベスト プラクティス、手順については、インストール ガイドをご覧ください。

始める前に

手順の概要

この設定における主な手順は次の通りです。

  1. vCenter のユーザー名とパスワード、前のセクションで準備した IP アドレスなど、GKE on VMware を構成するために必要なすべての情報が揃っていることを確認します
  2. サービス アカウントの作成に必要な権限を持つアカウントを使用して、Google Cloud CLI にログインします。
  3. 設定の完了に必要な追加のサービス アカウントを含め、管理者クラスタとユーザー クラスタの作成に必要なリソースとツールを使用して、管理ワークステーションを作成します
  4. 管理クラスタとユーザー クラスタの Kubernetes コントロール プレーンをホストし、ユーザー クラスタを管理および更新するための管理クラスタを作成します。
  5. 実際のワークロードを実行できるユーザー クラスタを作成します。

情報を収集する

GKE on VMware 構成ファイルの入力を開始する前に、最小限のインフラストラクチャを設定するで準備した必要な情報がすべて揃っていることを確認します。GKE on VMware を構成してこの設定を完了するには、次のすべての値が必要です。

vCenter の詳細

IP アドレス

IP アドレスを計画するで選択したすべての IP アドレスが揃っていることを確認します。これには、次のものが含まれます。

  • 管理ワークステーション用の 1 つの IP アドレス。
  • 管理クラスタノードおよびユーザー クラスタノード用の 10 個の IP アドレス(クラスタのアップグレード時に使用できる 2 つの追加ノードのアドレスを含む)。
  • 管理クラスタの Kubernetes API サーバーの仮想 IP アドレス(VIP)。
  • ユーザー クラスタの Kubernetes API サーバーの VIP。
  • ユーザー クラスタの Ingress VIP。
  • ユーザー クラスタの 10 個の Service VIP。
  • ユーザー クラスタの Pod と Service の CIDR 範囲(重複の回避で説明されているように、デフォルト以外の範囲を使用する必要がある場合)。

また、以下も必要です。

  • DNS サーバーの IP アドレス。
  • NTP サーバーの IP アドレス。
  • 管理ワークステーションとクラスタノードを持つサブネットのデフォルト ゲートウェイの IP アドレス。

Google Cloud の詳細

Google Cloud CLI にログインします。

GKE on VMware を設定するには、異なる権限を持つ複数のサービス アカウントが必要です。手動でコンポーネント アクセス サービス アカウントを作成する必要がありますが、gkeadm コマンドライン ツールでは、管理ワークステーションを作成する一環として、残りのアカウントのデフォルト バージョンを作成し構成できます。ただし、設定の際 gkeadm は、現在の gcloud CLI の account プロパティを使用するため、これを行うには、サービス アカウントの作成と構成に必要な権限のあるアカウントを使用して Google Cloud CLI にログインする必要があります。

  1. gcloud CLI にログインします。どの Google アカウントも使用できますが、必要な権限が必要です。このガイドの前のパートに沿って操作した場合は、すでにコンポーネント アクセス サービス アカウントを作成するための適切なアカウントでログインしている可能性があります。

    gcloud auth login
    
  2. gcloud CLI の account プロパティが正しく設定されていることを確認します。

    gcloud config list
    

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

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

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

クラスタを作成する前に、管理ワークステーションを設定し、そこに SSH 接続する必要があります。管理ワークステーションは、vSphere 環境で GKE Enterprise クラスタを作成するために必要なツールとリソースを備えたスタンドアロンの VM です。このセクションの手順では、gkeadm コマンドライン ツールを使用します。このツールは、64 ビット Linux、Windows 10、Windows Server 2019、macOS 10.15 以降で利用できます。

テンプレートを生成する

次のコマンドを実行して、テンプレート構成ファイルを生成します。

./gkeadm create config

このコマンドを実行すると、現在のディレクトリに以下のテンプレート構成ファイルが生成されます。

  • credential.yaml。vCenter のログイン情報の指定に使用します。
  • admin-ws-config.yaml。管理ワークステーション構成設定の指定に使用します。

認証情報ファイルを入力する

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

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

管理ワークステーション構成ファイルを入力する

admin-ws-config.yaml を編集用に開きます。 完了すると、このファイルには、この基本インストールの管理ワークステーションを作成するために gkeadm が必要とするすべての情報が含まれています。一部のフィールドには、デフォルト値または生成された値があらかじめ入力されています。このシンプルなインストールでは、これらの値を変更しないでください。

残りのフィールドは、以前に収集した情報を使用して次のように入力します。フィールドの形式がわからない場合は、下の完全な構成ファイルの例か、管理ワークステーション構成ファイルのリファレンスをご覧ください。フィールドの値を入力しながら参照できるように、ページを別のタブかウィンドウで開いたままにすることをおすすめします。

フィールドまたはセクション Instructions
gcp.componentAccessServiceAccountKeyPath コンポーネント アクセス サービス アカウント用に作成した JSON キーファイルのパス。
vCenter.credentials.address vCenter Server の IP アドレスまたはホスト名。
vCenter.datacenter vCenter データセンターの名前。
vCenter.datastore vCenter データストアの名前。
vCenter.cluster vCenter クラスタの名前。
vCenter.network 管理ワークステーションを作成する vCenter ネットワークの名前。
vCenter.resourcePool このフィールドを "CLUSTER_NAME/Resources" に設定します(CLUSTER_NAME は、vSphere クラスタの名前に置き換えます)。
vCenter.caCertPath vCenter Server のルート CA 証明書のパス。
proxyURL gkeadm の実行に使用するマシンが、インターネットへのアクセスにプロキシ サーバーを使用する必要がある場合は、このフィールドにプロキシ サーバーの URL を設定します。
adminWorkstation.ipAllocationMode このフィールドは、"static" に設定します。
adminWorkstation.network.hostConfig.ip 前に選択した管理ワークステーション用の IP アドレス。
adminWorkstation.network.hostConfig.gateway 管理ワークステーションとクラスタノードに使用するサブネットのデフォルト ゲートウェイの IP アドレス。
adminWorkstation.network.hostConfig.netmask 管理ワークステーションを含むネットワークのネットマスク。
adminWorkstation.network.hostConfig.dns 管理ワークステーションで使用できる DNS サーバーの IP アドレス。
adminWorkstation.proxyURL ネットワークがプロキシ サーバーの背後にあり、管理ワークステーションとクラスタの両方で同じプロキシ サーバーを使用する場合は、このフィールドをプロキシ サーバーの URL に設定します。

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

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

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

出力は次のようになります。

  • admin-cluster.yaml。管理クラスタを作成するためのテンプレート構成ファイルです。
  • user-cluster.yaml。ユーザー クラスタを作成するためのテンプレート構成ファイルです。
  • 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

管理クラスタを作成する

vCenter と他の詳細情報で管理ワークステーションを構成したので、それを使用して vSphere 環境に管理クラスタを作成できます。この手順を開始する前に、前記のとおり、管理ワークステーションに SSH 接続されていることを確認してください。以下のコマンドはすべて管理ワークステーションで実行されます。

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

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

管理クラスタ内の次のノードには、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 アドレスとホスト名の配列です。これらは、GKE On VMware が管理クラスタノードに割り当てる IP アドレスとホスト名です。

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

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

admin-cluster.yaml を編集用に開きます。 完了すると、このファイルには、この基本インストールの管理クラスタを作成するために gkectl が必要とするすべての情報が含まれています。一部のフィールドには、デフォルト値、生成された値、または管理ワークステーションを構成するときに指定した値(vCenter の詳細など)がすでに入力されています。このシンプルなインストールでは、これらの値を変更しないでください。

残りのフィールドは、以前に収集した情報を使用して次のように入力します。フィールドの形式がわからない場合は、下の完全な構成ファイルの例か、管理クラスタ構成ファイルのリファレンスをご覧ください。フィールドの値を入力しながら参照できるように、ページを別のタブかウィンドウで開いたままにすることをおすすめします。

フィールドまたはセクション Instructions
vCenter.dataDisk インストーラが Kubernetes オブジェクトのデータを保持するために作成する仮想マシンディスク(VMDK)に使用する名前。
network.hostConfig.dnsServers クラスタ VM が使用できる DNS サーバーの IP アドレス。
network.hostConfig.ntpServers クラスタ VM が使用できる時刻サーバーの IP アドレス。
network.ipMode.type このフィールドは、"static" に設定します。
network.ipMode.ipBlockFilePath 先ほど作成した IP ブロック ファイルのパス。
network.serviceCIDRnetwork.podCIDR この値は、デフォルト以外の範囲を使用する必要がある場合にのみ変更してください(重複を回避するを参照)。
loadBalancer.vips.controlPlaneVIP 管理クラスタの Kubernetes API サーバー用に選択した仮想 IP アドレス(VIP)。
loadbalancer.kind このフィールドは、"MetalLB" に設定します。
antiAffinityGroups このフィールドは、"false" に設定します。
gkeConnect.projectID このフィールドには、Google プロジェクトのプロジェクト ID を設定します。
gkeConnect.registerServiceAccountKeyPath このフィールドには、connect-register サービス アカウントの 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"
  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

OS イメージを vSphere にインポートする

完成した構成ファイルを使用して gkectl prepare を実行し、ノードの OS イメージを vSphere にインポートします。

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

このコマンドの実行により、イメージが vSphere にインポートされ、管理クラスタのイメージを含む VM テンプレートとしてマークされます。

管理クラスタを作成する

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

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 コンソールまたは管理ワークステーションのコマンドラインからユーザー クラスタを作成できます。現在、ユーザー クラスタの作成には、Google Cloud コンソールのみ使用できます。

Console

この方法では、GKE On-Prem API という Google Cloud サービスを使用して、vSphere 環境でクラスタを作成し管理します。Google Cloud コンソールからユーザー クラスタを作成すると、選択したフリートホスト プロジェクトでこの API が自動的に有効になります。この仕組みの詳細については、Google Cloud コンソールでユーザー クラスタを作成するをご覧ください。この方法を使用することで、クラスタの作成者は、Google ID を使用してGoogle Cloud コンソールで新しいクラスタに自動的にログインできますが、他のユーザーに対しては認証を設定する必要があります。

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

    GKE Enterprise のクラスタページに移動

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

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

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

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

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

クラスタの基本

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

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

    • クラスタのライフサイクルを管理する際に GKE On-Prem API が必要とするユーザー クラスタ メタデータ
    • システム コンポーネントのロギング、モニタリング、監査のデータ
  4. ユーザー クラスタの GKE on VMware のバージョンを選択します。

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

ネットワーキング

このセクションでは、クラスタのノード、Pod、Service の IP アドレスを指定します。このシンプルなインストールでは、クラスタで 3 つのノードそれぞれに 1 つのアドレスと、ユーザー クラスタのアップグレード中に一時ノードに使用できる追加の IP アドレスが必要です。

  1. [ノード IP] セクションで、クラスタの [IP モード] として [静的] を指定します。

  2. ユーザー クラスタノード用に以前に計画したアドレスを使用して、以下の情報を入力します。

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

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

  3. 重複を回避するで説明されているように、デフォルト以外の範囲を使用する必要がない場合、[Service と Pod CIDR] セクションはデフォルト値のままにします。

  4. [ホスト構成] セクションで次の情報を指定します。

    1. ユーザー クラスタで使用できる DNS サーバーの IP アドレスを入力します。
    2. NTP サーバーの IP アドレスを入力します。
  5. [続行] をクリックして [ロードバランサ] セクションに移動します。

ロードバランサ

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

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

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

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

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

  3. [アドレスプール] セクションで、上り(内向き)VIP を含むロードバランサのアドレスプールを指定します。これらは、以前に計画した Service VIP です。

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

コントロール プレーン

このセクションには、デフォルト値を使用します。[続行] をクリックします。

機能

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

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

ノードプール

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

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

確認して完了する

[Verify and Complete] をクリックしてユーザー クラスタを作成します。ユーザー クラスタの作成には 10 分以上かかります。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

コマンドライン

この手順を開始する前に、前記のとおり、管理ワークステーションに SSH 接続されていることを確認してください。以下のコマンドはすべて管理ワークステーションで実行されます。

ユーザー クラスタに静的 IP を指定する

ユーザー クラスタノード用に計画した静的 IP アドレスを指定するには、user-cluster-ipblock.yaml という名前で IP ブロック ファイルを作成します。ユーザー クラスタ ノード用に 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 という名前の構成ファイルが生成されました。この構成ファイルはユーザー クラスタの作成用です。 一部のフィールドには、デフォルト値、生成された値、または管理ワークステーションを構成するときに指定した値(vCenter の詳細など)がすでに入力されています。このシンプルなインストールでは、これらの値を変更しないでください。

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

  2. 残りのフィールドは、以前に収集した情報を使用して次のように入力します。フィールドの形式がわからない場合は、下の完全な構成ファイルの例か、ユーザー クラスタ構成ファイルのリファレンスをご覧ください。フィールドの値を入力しながら参照できるように、ページを別のタブかウィンドウで開いたままにすることをおすすめします。

フィールドまたはセクション Instructions
name ユーザー クラスタの任意の名前
network.hostConfig.dnsServers クラスタ VM が使用できる DNS サーバーの IP アドレス。
network.hostConfig.ntpServers クラスタ VM が使用できる時刻サーバーの IP アドレス。
network.ipMode.type このフィールドは、"static" に設定します。
network.ipMode.ipBlockFilePath user-cluster-ipblock.yaml へのパス。
network.serviceCIDRnetwork.podCIDR この値は、デフォルト以外の範囲を使用する必要がある場合にのみ変更してください(重複を回避するを参照)。
loadBalancer.vips.controlPlaneVIP ユーザー クラスタの Kubernetes API サーバー用に選択した仮想 IP アドレス(VIP)。
loadBalancer.vips.ingressVIP Ingress プロキシのロードバランサ用に選択した仮想 IP アドレス。
loadbalancer.kind このフィールドは、"MetalLB" に設定します。
loadbalancer.metalLB.addressPools ロードバランサのアドレスプールを指定します。これらは、以前に計画した Service VIP です。アドレスプールと選択した addressesname を指定します。アドレスプールには、Ingress プロキシ VIP を含める必要があります。
nodePools 選択した name を指定し、単一のノードプール用に事前入力された値を使用します。ノードプール用に、enableLoadBalancertrue に設定します。MetalLB はクラスタノードで実行されるため、それを使用するにはこれが必要です。
antiAffinityGroups このフィールドは、"false" に設定します。
gkeConnect.projectID このフィールドには、Google プロジェクトのプロジェクト ID を設定します。
gkeConnect.registerServiceAccountKeyPath このフィールドには、connect-register サービス アカウントの JSON キーを設定します。

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

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

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

次のステップ

これで、GKE on VMware の最小限のインストールが完了しました。オプションのフォローアップとして、アプリケーションをデプロイすることで、インストールの動作を確認できます。