このドキュメントでは、kubeception を使用するユーザー クラスタを作成する方法について説明します。
kubeception とは
kubeception という用語は、Kubernetes クラスタを使用して他の Kubernetes クラスタを作成および管理するというコンセプトを表すために使用されます。GKE on VMware のコンテキストでは、kubeception はユーザー クラスタのコントロール プレーンが管理クラスタ内の 1 つ以上のノードで実行される場合を指します。
Google では kubeception の使用を推奨していません。代わりに、Controlplane V2 を使用することをおすすめします。Controlplane V2 では、ユーザー クラスタのコントロール プレーン ノードはユーザー クラスタ自体にあります。
IP アドレスを計画する
IP アドレスを計画する(kubeception)の手順に従います。
クラスタ構成ファイルに入力する
ユーザー クラスタを作成する(Controlplane V2)の手順に従います。
ユーザー クラスタの構成ファイルに次のように入力します。
enableControlplaneV2
をfalse
に設定する。使用する負荷分散の種類を決めます。次のオプションがあります。
MetalLB バンドルの負荷分散。
loadBalancer.kind
を"MetalLB"
に設定します。また、loadBalancer.metalLB.addressPools
セクションに入力し、少なくとも 1 つのノードプールのenableLoadBalancer
をtrue
に設定します。詳細については、MetalLB によるバンドルされた負荷分散をご覧ください。Seesaw によるバンドルされた負荷分散。
loadBalancer.kind
を"Seesaw"
に設定し、loadBalancer.seesaw
セクションに入力します。詳細については、Seesaw によるバンドルされた負荷分散をご覧ください。F5 BIG-IP による統合負荷分散。
loadBalancer.kind
を"F5BigIP"
に設定し、f5BigIP
セクションに入力します。 詳細については、F5 BIG-IP による負荷分散をご覧ください。手動負荷分散。
loadBalancer.kind
を"ManualLB"
に設定し、manualLB
セクションに入力します。詳細については、手動の負荷分散をご覧ください。
負荷分散のオプションの詳細については、負荷分散の概要をご覧ください。
ユーザー クラスタで Dataplane V2 を有効にするかどうかを決定し、それに応じて enableDataplaneV2 を設定します。
構成ファイルに
stackdriver
セクションとcloudAuditLogging
セクションを含める場合、gkeConnect.projectID
の ID はstackdriver.projectID
とcloudAuditLogging.projectID
で設定した ID と同じである必要があります。 プロジェクト ID が同じでない場合、クラスタの作成は失敗します。構成ファイルに
gkeOnPremAPI
、cloudAuditLogging
、stackdriver
セクションを含める場合は、gkeOnPremAPI.location
、cloudAuditLogging.clusterLocation
、stackdriver.location
で同じ Google Cloud リージョンを設定する必要があります。リージョンが同じでない場合、クラスタの作成は失敗します。
入力済みの構成ファイルの例
入力済みの IP ブロック ファイルと、入力済みのユーザー クラスタ構成ファイルの例を以下に示します。この構成により、利用可能な機能のすべてではなく、一部が有効になります。
user-ipblock.yaml
blocks: - netmask: 255.255.252.0 gateway: 172.16.23.254 ips: - ip: 172.16.20.21 hostname: user-host1 - ip: 172.16.20.22 hostname: user-host2 - ip: 172.16.20.23 hostname: user-host3 - ip: 172.16.20.24 hostname: user-host4
user-cluster.yaml
apiVersion: v1 kind: UserCluster name: "my-user-cluster" gkeOnPremVersion: 1.15.0-gke.581 enableControlplaneV2: false network: hostConfig: dnsServers: - "203.0.113.1" - "198.51.100.1" ntpServers: - "216.239.35.4" ipMode: type: static ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 loadBalancer: vips: controlPlaneVIP: "172.16.20.32" ingressVIP: "172.16.21.30" kind: "MetalLB" metalLB: addressPools: - name: "my-address-pool" addresses: - "172.16.21.30 - 172.16.21.39" enableDataplaneV2: true masterNode: cpus: 4 memoryMB: 8192 replicas: 1 nodePools: - name: "my-node-pool" cpus: 4 memoryMB: 8192 replicas: 3 osImageType: "ubuntu_containerd" enableLoadBalancer: true antiAffinityGroups: enabled: true 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" autoRepair: enabled: true
構成ファイルを検証する
ユーザー クラスタの構成ファイルに入力したら、gkectl check-config
を実行してファイルが有効であることを検証します。
gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
以下を置き換えます。
ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス
USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルのパス
コマンドがエラー メッセージを返した場合は、問題を修正してファイルを再度検証します。
時間のかかる検証をスキップする場合は、--fast
フラグを渡します。個別の検証をスキップするには、--skip-validation-xxx
フラグを使用します。check-config
コマンドについて詳しくは、プリフライト チェックの実行をご覧ください。
(省略可)ユーザー クラスタの Seesaw ロードバランサを作成する
バンドル型の Seesaw ロードバランサを使用する場合は、このセクションの手順を行います。それ以外の場合は、このセクションをスキップします。
Seesaw ロードバランサの VM を作成して構成します。
gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
(省略可)OS イメージを vSphere にインポートし、コンテナ イメージをプライベート レジストリに push する
次のいずれかに該当する場合は、gkectl prepare
を実行します。
ユーザー クラスタは、管理クラスタとは異なる vSphere データセンターにあります。
ユーザー クラスタには、管理クラスタとは異なる vCenter Server があります。
ユーザー クラスタが、管理クラスタで使用される非公開レジストリとは異なる非公開コンテナ レジストリを使用する。
gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --bundle-path BUNDLE \ --user-cluster-config USER_CLUSTER_CONFIG
以下を置き換えます。
ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス
BUNDLE: バンドル ファイルのパス。このファイルは
/var/lib/gke/bundles/
の管理ワークステーションにあります。次に例を示します。/var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルのパス
ユーザー クラスタを作成する
次のコマンドを実行して、ユーザー クラスタを作成します。
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
ユーザー クラスタ kubeconfig ファイルを見つける
gkectl create cluster
コマンドで、現在のディレクトリに USER_CLUSTER_NAME-kubeconfig
という名前の kubeconfig ファイルが作成されます。この kubeconfig ファイルは後でユーザー クラスタとやり取りする際に必要になります。
kubeconfig ファイルには、ユーザー クラスタの名前が含まれています。クラスタ名を表示するには、次のコマンドを実行します。
kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG
出力にクラスタの名前が表示されます。次に例を示します。
NAME my-user-cluster
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 ...
トラブルシューティング
クラスタの作成とアップグレードに対するトラブルシューティングをご覧ください。