このドキュメントでは、Google Distributed Cloud クラスタの VM ストレージ ポリシーを構成する方法について説明します。
概要
vSphere では、ストレージ ポリシー ベースの管理(SPBM)を使用して、ストレージを仮想マシンのアプリケーションの要求に合わせて調整できます。これは、幅広いデータサービスとストレージ ソリューションにわたって単一の統合コントロール パネルとして機能するストレージ ポリシー フレームワークを提供します。
Google Distributed Cloud では、データストアを指定する代わりに、ストレージ ポリシーを指定できます。アプリケーションの要件に基づいてストレージ ポリシーを定義すると、vSphere が自動的にデータストアを選択して管理します。これにより、ストレージに関連するオーバーヘッドとメンテナンスが削減されます。
継承
ユーザー クラスタ、ユーザー クラスタ内のノードプール、またはユーザー クラスタ内のコントロール プレーン ノードのセットに対してストレージ ポリシーを指定できます。管理クラスタに高可用性コントロール プレーンがあり、Windows ノードプールがない場合は、管理クラスタのストレージ ポリシーを指定することもできます。
ユーザー クラスタにストレージ ポリシーを指定すると、そのポリシーはユーザー クラスタ内のノードプールによって継承されます。個々のノードプールにストレージ ポリシーを指定すると、そのポリシーがクラスタレベルのストレージ ポリシーの代わりに使用されます。同様に、個々のノードプールにデータストアを指定すると、そのデータストアがクラスタレベルのストレージ ポリシーの代わりに使用されます。
Controlplane V2 が有効になっているユーザー クラスタでは、クラスタレベルのストレージ ポリシーがコントロール プレーン ノードに継承されます。コントロール プレーン ノードにストレージ ポリシーまたはデータストアを指定すると、そのストレージ ポリシーまたはデータストアが、クラスタレベルのストレージ ポリシーの代わりに使用されます。
データストアへのストレージ ポリシーの適用
ストレージ ポリシーは、1 つのデータストアまたは複数のデータストアに適用できます。 ストレージ ポリシーを複数のデータストアに適用すると、管理クラスタ、ユーザー クラスタ、またはノードプールのストレージ リソースをデータストア間で分散できます。
例: ストレージ ポリシーとユーザー クラスタを作成する
このセクションでは、ストレージ ポリシーとユーザー クラスタの作成例を示します。この例は、ストレージ ポリシーを 2 つのデータストアに適用できることを示しています。
データストアにタグを適用する
この例の手順を行うには、vSphere 環境に 2 つ以上のデータストアが必要です。
ユーザー クラスタのノードをホストする vSphere クラスタには、この演習で使用するデータストアへのアクセス権が必要です。これを検証するプリフライト チェックがあります。
タグの適用に使用する vCenter アカウントには、ルート vCenter Server に対する次の vSphere のタグ付け権限が必要です。
- vSphere Tagging.Create vSphere タグ
- vSphere Tagging.Create vSphere タグカテゴリ
- vSphere Tagging.Assign または vSphere タグ付け解除
vSphere Client で、この演習に使用するデータストアのそれぞれに同じタグを割り当てます。手順については、データストアへのタグの割り当てをご覧ください。
詳細については、vSphere のタグおよび属性をご覧ください。
ストレージ ポリシーを作成する
vSphere Client で、タグベースの配置用の VM ストレージ ポリシーを作成します。 ストレージ ポリシーで、選択したデータストアに適用したタグを指定します。手順については、タグベースの配置用に仮想マシン ストレージ ポリシーを作成をご覧ください。
詳細については、仮想マシン ストレージ ポリシーの作成と管理をご覧ください。
vSAN データストアを使用している場合は、vSAN のポリシーをご覧ください。
ユーザー クラスタを作成する
この演習では、高可用性コントロール プレーンを持つユーザー クラスタを作成するため、3 つのコントロール プレーン ノードがあります。コントロール プレーン ノードに加えて、6 つのワーカーノード(3 つは 1 つのノードプールに、3 つは 2 番目のノードプールに)があります。すべてのノードが静的 IP アドレスを使用します。
まず、ユーザー クラスタを作成するの手順を実行します。
ユーザー クラスタの構成ファイルに次のように入力します。
vCenter.storagePolicyNameの値を既存のストレージ ポリシーの名前に設定します。vCenter.datastoreの値は設定しないでください。2 つのノードプールを指定します。最初のノードプールでは、データストアとストレージ ポリシーを指定しないでください。2 番目のノードプールでは、
vsphere.datastoreの値を既存のデータストアの名前に設定します。
クラスタ構成ファイルの例
次に、IP ブロック ファイルとユーザー クラスタ構成ファイルの一部の例を示します。
user-ipblock.yaml
blocks:
- netmask: 255.255.255.0
gateway: 172.16.21.1
ips:
- ip: 172.16.21.2
- ip: 172.16.21.3
- ip: 172.16.21.4
- ip: 172.16.21.5
- ip: 172.16.21.6
- ip: 172.16.21.7
- ip: 172.16.21.8
user-cluster-yaml
apiVersion: v1
kind: UserCluster
...
vCenter:
storagePolicyName: "my-storage-policy"
network:
hostConfig:
dnsServers:
- "203.0.113.2"
- "198.51.100.2"
ntpServers:
- "216.239.35.4"
ipMode:
type: "static"
ipBlockFilePath: "user-ipblock.yaml"
controlPlaneIPBlock:
netmask: "255.255.255.0"
gateway: "172.16.21.1"
ips:
- ip: "172.16.21.9"
hostname: "cp-vm-1"
- ip: "172.16.21.10"
hostname: "cp-vm-2"
- ip: "172.16.21.11"
hostname: "cp-vm-3"
loadBalancer:
vips:
controlPlaneVIP: "172.16.21.40"
ingressVIP: "172.16.21.30"
kind: MetalLB
metalLB:
addressPools:
- name: "address-pool-1"
addresses:
- "172.16.21.30-172.16.21.39"
...
enableControlplaneV2: true
masterNode:
cpus: 4
memoryMB: 8192
replicas: 3
nodePools:
- name: "worker-pool-1"
enableLoadBalancer: true
- name: "worker-pool-2"
vSphere:
datastore: "my-np2-datastore"
...
上記の例で理解しておくべき重要なポイントは、次のとおりです。
ワーカーノードの静的 IP アドレスは、IP ブロック ファイルに指定されています。IP ブロック ファイルには、ワーカーノードが 6 つしかなくてもアドレスが 7 つあります。その追加の IP アドレスは、クラスタのアップグレード、更新、自動修復に必要なものです。
コントロール プレーン ノード 3 つの静的 IP アドレスは、ユーザー クラスタ構成ファイルの
network.controlPlaneIPBlockセクションで指定されます。このブロックでは、追加の IP アドレスは必要ありません。masterNode.replicasフィールドが3に設定されているため、コントロール プレーン ノードは 3 つになります。masterNodeで、vsphere.datastoreまたはvsphere.storagePolicyNameに何も指定されていません。そのため、コントロール プレーン ノードはvCenter.storagePolicyNameで指定されたストレージ ポリシーを使用します。ユーザー クラスタ構成ファイルには
vCenter.storagePolicyの値は含まれていますが、vCenter.datastoreの値は含まれていません。指定されたストレージ ポリシーは、独自のストレージ ポリシーまたは独自のデータストアを指定していないプール内のノードで使用されます。node-pool-1で、vsphere.datastoreまたはvsphere.storagePolicyNameに何も指定されていません。そのため、node-pool-1内のノードはvCenter.storagePolicyNameで指定されたストレージ ポリシーを使用します。node-pool-2ではvsphere.datastoreの値はmy-np2-datastoreであるため、node-pool-2のノードはそのデータストアを使用し、ストレージ ポリシーを使用しません。
ユーザー クラスタを作成するの説明に沿って、ユーザー クラスタの作成を継続します。
管理クラスタとは別のデータセンターにユーザー クラスタを作成する
ユーザー クラスタは、管理クラスタとは別のデータセンターに配置できます。2 つのデータセンターは、vCenter Server の同じインスタンスまたは異なるインスタンスを使用できます。
このセクションでは、管理クラスタとは別の vCenter Server インスタンスを使用するユーザー クラスタを作成する方法の例を示します。ユーザー クラスタと管理クラスタは vCenter Server の別々のインスタンスを使用するため、別々のデータセンターに配置されます。
まず、ユーザー クラスタを作成するの手順を実行します。
ユーザー クラスタの構成ファイルに次のように入力します。
vCenter.storagePolicyNameの値を既存のストレージ ポリシーの名前に設定します。vCenter.datastoreの値は設定しないでください。vCenterで、address、datacenter、cluster、resourcePoolの値を指定します。network.vCenter.networkNameの値を指定します。2 つのノードプールを指定します。最初のノードプールでは、データストアとストレージ ポリシーを指定しないでください。2 番目のノードプールでは、
vsphere.datastoreの値を既存のデータストアの名前に設定します。
クラスタ構成ファイルの例
次に、IP ブロック ファイルとユーザー クラスタ構成ファイルの一部の例を示します。
user-ipblock.yaml
blocks:
- netmask: 255.255.255.0
gateway: 172.16.21.1
ips:
- ip: 172.16.21.2
- ip: 172.16.21.3
- ip: 172.16.21.4
- ip: 172.16.21.5
- ip: 172.16.21.6
- ip: 172.16.21.7
- ip: 172.16.21.8
user-cluster-yaml
apiVersion: v1
kind: UserCluster
...
vCenter:
address: "my-vcenter-server-2.my-domain.example"
datacenter: "my-uc-data-center"
cluster: "my-uc-vsphere-cluster"
resourcePool: "my-uc-resource-pool"
storagePolicyName: "my-storage-policy"
network:
vCenter:
networkName: "my-uc-network"
hostConfig:
dnsServers:
- "203.0.113.2"
- "198.51.100.2"
ntpServers:
- "216.239.35.4"
ipMode:
type: "static"
ipBlockFilePath: "user-ipblock.yaml"
controlPlaneIPBlock:
netmask: "255.255.255.0"
gateway: "172.16.21.1"
ips:
- ip: "172.16.21.9"
hostname: "cp-vm-1"
- ip: "172.16.21.10"
hostname: "cp-vm-2"
- ip: "172.16.21.11"
hostname: "cp-vm-3"
loadBalancer:
vips:
controlPlaneVIP: "172.16.21.40"
ingressVIP: "172.16.21.30"
kind: MetalLB
metalLB:
addressPools:
- name: "address-pool-1"
addresses:
- "172.16.21.30-172.16.21.39"
...
enableControlplaneV2: true
masterNode:
cpus: 4
memoryMB: 8192
replicas: 3
nodePools:
- name: "worker-pool-1"
enableLoadBalancer: true
- name: "worker-pool-2"
vSphere:
datastore: "my-np2-datastore"
...
上記の例で理解しておくべき重要なポイントは、次のとおりです。
ユーザー クラスタ構成ファイルには
vCenter.storagePolicyの値は含まれていますが、vCenter.datastoreの値は含まれていません。指定されたストレージ ポリシーは、独自のストレージ ポリシーまたは独自のデータストアを指定していないノードプール内のノードで使用されます。vCenterでは、address、datacenter、cluster、resourcePoolに指定された値があります。そのため、ユーザー クラスタは、管理クラスタとは異なる vCenter Server、データセンター、vSphere クラスタ、リソースプールを使用します。network.vCenter.networkNameに指定された値があります。masterNode.replicasフィールドが3に設定されているため、コントロール プレーン ノードは 3 つになります。masterNodeで、vsphere.datastoreまたはvsphere.storagePolicyNameに何も指定されていません。そのため、コントロール プレーン ノードはvCenter.storagePolicyNameで指定されたストレージ ポリシーを使用します。node-pool-1で、vsphere.datastoreまたはvsphere.storagePolicyNameに何も指定されていません。そのため、node-pool-1内のノードはvCenter.storagePolicyNameで指定されたストレージ ポリシーを使用します。node-pool-2ではvsphere.datastoreの値はmy-np2-datastoreであるため、node-pool-2のノードはそのデータストアを使用し、ストレージ ポリシーを使用しません。
ユーザー クラスタを作成するの説明に沿って、ユーザー クラスタの作成を継続します。