IP アドレス管理(IPAM)パブリック API サブネットを使用して、各 Google Distributed Cloud(GDC)エアギャップ ゾーンにグローバル ルート サブネットが割り当てられています。グローバル ルート サブネットは、テナント組織内のすべてのクラスタ(組織インフラストラクチャ クラスタやワークロード VM など)をブートストラップするために各ゾーンに分割されるルート IP アドレス範囲(CIDR)プールをホストします。IP アドレス範囲の小さな部分も、エニーキャスト IP アドレス プールとしてルート サブネットで使用できます。
組織を作成したら、GDC ユニバースのサブネットに対して次の運用タスクを実行できます。
新しいゾーンのルート範囲グローバル サブネットを作成する
各ゾーンにはルート範囲のグローバル サブネットが必要です。GDC ユニバースの組織の初期ブートストラップ フェーズでは、各ゾーンにグローバル サブネットが自動的に生成されます。ただし、初期インストール後に新しいゾーンが追加された場合は、新しいゾーンのルート範囲グローバル サブネットを手動で作成する必要があります。
新しいゾーンのネットワーク ルート範囲サブネットの CIDR 範囲を定義する
CIDR 範囲の定義に関する組織のインストール ガイダンスと同様に、CIDR 範囲は相互に重複できません。また、カスタム リソース仕様で ipam.gdc.goog/usage: network-root-range ラベルが付いたサブネットである zone-infra-cidr および既存のルート グローバル サブネットとも重複できません。
zone-infra-cidr は各ゾーンに存在し、お客様が定義した場合は、Customer Intake Questionnaire(CIQ)から取得できます。
zone-infra-cidrを取得するには、次のコマンドを実行します。kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system zone-infra-cidrCIDR 範囲をメモします。
組織に割り当てる名前と一致する名前の Namespace が必要です。この Namespace が存在することを確認します。
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get namespace ORG_NAME既存のルート グローバル サブネットを取得します。
グローバル ルート管理クラスタの場合は、次のコマンドを実行します。
kubectl –kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet \ -n ORG_NAME -l ipam.gdc.goog/usage=network-root-rangeグローバル組織管理者 API サーバーの場合は、次のコマンドを実行します。
kubectl –kubeconfig GLOBAL_ORG_API_SERVER_KUBECONFIG get subnet \ -n platform -l ipam.gdc.goog/usage=network-root-range出力からすべての CIDR 範囲をメモします。
新しい計画の CIDR 範囲が以前の CIDR 範囲と重複していないことを確認します。
新しい CIDR 範囲が新しいゾーンで有効であることを確認したら、CIDR 範囲が次のルールに準拠していることを確認します。
| CIDR 範囲フィールド。 | 最小サイズ | VPC/VRF | グローバル API サーバー |
|---|---|---|---|
zoneInfraVPCCIDR |
17 | インフラストラクチャ VPC | グローバル ルート |
zoneDefaultVPCCIDR |
18 | デフォルト VPC | グローバル組織 |
zoneOrgAdminExternalCIDR |
23 | 管理ネットワーク セグメント | グローバル ルート |
zoneOrgDataExternalCIDR |
23 | データ ネットワーク セグメント | グローバル ルート |
グローバル ルート管理 API サーバーにサブネットを作成する
グローバル ルート管理者 API サーバーにサブネットを作成する手順は次のとおりです。
Universe 内のゾーンを一覧表示し、新しいゾーン名を見つけます。
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get zone -A組織の新しいゾーンのゾーン ネットワーク ルート範囲
infra-vpcサブネットを作成します。kubectl apply -f --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: infra-vpc ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: infra-vpc-NEW_ZONE_NAME-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: zoneInfraVPCCIDR zone: NEW_ZONE_NAME propagationStrategy: SingleZone type: Root EOF組織の新しいゾーンのゾーン ネットワーク ルート範囲データ ネットワーク セグメント サブネットを作成します。
kubectl apply -f --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: data ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: data-external-NEW_ZONE_NAME-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: zoneOrgDataExternalCIDR zone: NEW_ZONE_NAME propagationStrategy: SingleZone type: Root EOF組織の新しいゾーンのゾーン ネットワーク ルート範囲管理ネットワーク セグメント サブネットを作成します。
kubectl apply -f --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: admin ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: admin-external-NEW_ZONE_NAME-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: zoneOrgAdminExternalCIDR zone: NEW_ZONE_NAME propagationStrategy: SingleZone type: Root EOF
グローバル組織管理者 API サーバーにサブネットを作成する
API サーバーが実行されたら、platform 名前空間内の組織のグローバル組織管理者 API サーバーにデフォルトの VPC サブネットを作成する必要があります。
次の Subnet カスタム リソースを作成して適用します。
kubectl apply -f --kubeconfig=GLOBAL_ORG_API_SERVER_KUBECONFIG - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: default-vpc
ipam.gdc.goog/usage: zone-network-root-range
name: default-vpc-NEW_ZONE_NAME-root-cidr
namespace: platform
spec:
type: Root
ipv4Request:
cidr: zoneDefaultVPCCIDR
zone: NEW_ZONE_NAME
propagationStrategy: SingleZone
EOF
サブネットをアップスケールする
公開 Subnet リソースは自動アップスケーリングをサポートしていません。顧客管理の VPC またはネットワーク セグメントに CIDR 範囲を追加するには、新しいサブネットを作成し、特定のラベルでグループ化する必要があります。ルート管理クラスタへのアクセスが必要なため、お客様がサブネットを個別にアップスケールすることはできません。
サブネット グループ化ルール
サブネットはラベルによってさまざまなカテゴリに分類されます。
| カテゴリ | ラベル |
|---|---|
| デフォルト VPC | ipam.gdc.goog/vpc: default-vpc |
| インフラストラクチャ VPC | ipam.gdc.goog/vpc: infra-vpc |
| 管理ネットワーク セグメント | ipam.gdc.goog/network-segment: admin |
| データ ネットワーク セグメント | ipam.gdc.goog/network-segment: data |
初期ブートストラップ時に、組織の取り込みアンケート(OIQ)で 4 つの CIDR 範囲が指定されました。これらの 4 つのグローバル サブネットは、顧客組織の作成時にグローバル API サーバーに作成されました。これらのグローバル サブネットは、組織内のすべてのゾーンにわたる各カテゴリのルートレベルの CIDR 範囲です。ルートレベルのグローバル サブネットにはすべて ipam.gdc.goog/usage: network-root-range というラベルが付いています。
各ゾーンに対して、ルートレベルのサブネットから切り出して、子グローバル サブネットがグローバル API サーバーに作成されます。各子グローバル サブネットは、特定のゾーンのカテゴリの CIDR 範囲をホストし、ipam.gdc.goog/usage: zone-network-root-range というラベルが付いています。ゾーンの子グローバル サブネットは、特定のゾーンに自動的に伝播されます。
一般的なアップスケーリングのユースケース
既存のサブネットをスケールアップするための追加サブネットを最も効率的に割り当てるには、サブネット カテゴリごとに推奨されるユースケースを検討してください。アップスケール プロセスを開始する前に、アップスケールするカテゴリを決定します。
デフォルト VPC
default-vpc のサブネットは、主に共有サービス クラスタ、ユーザー クラスタ、default-vpc-default-node-subnet の Pod と Service の CIDR を割り当てるために使用されます。また、クラスタノード IP アドレスと組織のワークロード IP アドレスにも使用されます。
ユーザー クラスタの作成に失敗した場合、サブネットのアップスケーリングが必要になる可能性があります。
ユーザー クラスタの Pod または Service の CIDR の親サブネットが見つからないため、ユーザー クラスタの作成が失敗することがあります。このエラーのサンプル メッセージは次のようになります。
could not find parent for subnet platform/user-vm-1-service-cidr
この問題は、サブネットをアップスケールする必要性に関連するいくつかの理由が原因で発生する可能性があります。確認するには、次の手順を検討してください。
Clusterカスタム リソースの.spec.clusterNetworkセクションでpodCIDRSizeフィールドとserviceCIDRSizeフィールドを確認します。kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get cluster \ -n platform USER_CLUSTER_NAME -oyaml出力は次のようになります。
Example: spec: clusterNetwork: podCIDRSize: 20 serviceCIDRSize: 20既存のサブネットの親サブネットを見つけます。
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet -n platform -l \ ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=zone-network-root-range出力は次のようになります。
Example: NAME PARENT READY IPV4 CIDR IPV6 CIDR default-vpc-zone0-cidr True 198.51.100.0/18親サブネットによって割り当てられたすべてのサブネットを検索します。
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet -n platform -l \ ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage!=zone-network-root-range出力は次のようになります。
Example: default-vpc-default-node-subnet {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.100.0/23 g-org-1-shared-service-pod-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.16.0/20 g-org-1-shared-service-service-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.2.0/23 user-vm-1-pod-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.8.0/21 user-vm-1-service-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.4.0/23 user-vm-2-pod-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.32.0/21 user-vm-2-service-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.6.0/23
この例では、/18 親 CIDR に /23 CIDR が 4 つ、/20 CIDR が 1 つ、/21 CIDR が 2 つ割り当てられています。新しいユーザー クラスタは podCIDRSize に /20 CIDR、serviceCIDRSize に /20 CIDR をリクエストしていますが、これは不十分です。
この場合は、デフォルト VPC のカテゴリにサブネットを追加する必要があります。
インフラストラクチャ VPC
infra-vpc のサブネットは、主に組織の Pod と Service の CIDR を組織のインフラストラクチャ クラスタと境界クラスタに割り当てるために使用されます。また、境界クラスタのノード IP アドレスにも使用されます。
これは内部 GDC インフラストラクチャの設定に属し、各組織には 1 つの組織インフラストラクチャ クラスタと 1 つの境界クラスタしかないため、通常、infra-vpc にアップスケール オペレーションは必要ありません。
管理ネットワーク セグメント
管理ネットワーク セグメントのサブネットは、主に組織管理者の仮想ルーティングと転送(VRF)で IP アドレスを割り当てるために使用されます。組織にデフォルトのノード サブネット、またはゲートウェイ情報を含むサブネットが作成されている。このデフォルト サブネットは、組織インフラストラクチャ クラスタノードの IP アドレスと境界クラスタノードの IP アドレスを割り当てます。
管理ネットワーク セグメントは内部 GDC インフラストラクチャ設定に属し、各組織に設定できる組織インフラストラクチャ クラスタと境界クラスタは 1 つずつのみであるため、通常、このサブネットをアップスケールする必要はありません。
データ ネットワーク セグメント
データ ネットワーク セグメントのサブネットは、主に組織データ VRF の IP アドレスを割り当てるために使用されます。組織にデフォルトのノード サブネットまたはゲートウェイ情報を含むサブネットが作成されている。このデフォルト サブネットは、組織インフラストラクチャ クラスタノードの IP アドレスと境界クラスタノードの IP アドレスを割り当てます。
データ ネットワーク セグメントは内部 GDC インフラストラクチャのセットアップに属し、各組織には 1 つの組織インフラストラクチャ クラスタと 1 つの境界クラスタのみを設定できるため、通常、このサブネットのアップスケーリングは必要ありません。
カテゴリにサブネットを追加する
サブネット タイプに基づいて、カテゴリにサブネットを追加できます。次のタイプは、サブネットを追加できます。
- インフラストラクチャ VPC
- 管理ネットワーク セグメント
- データ ネットワーク セグメント
- デフォルト VPC
サブネットを追加するサブネット タイプを特定し、そのサブネット タイプについて次の手順を完了します。
グローバル ルート管理者 API サーバーで、ルート サブネット タイプを取得し、
subnet.status.ipv4Allocation.cidrから CIDRmaskSizeフィールドを確認します。kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet -n ORG_NAME \ -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=network-root-range次のように置き換えます。
GLOBAL_ROOT_ADMIN_KUBECONFIG: ルート管理クラスタの kubeconfig ファイルのパス。ORG_NAME: 組織の名前。SUBNET_TYPE: サブネット タイプ(vpc=infra-vpc、network-segment=admin、network-segment=data、vpc=default-vpcなど)。
この値を合計 CIDR としてメモしておきます。これは後で参照されます。
ルート サブネットのすべての子サブネットを取得し、
subnet.status.ipv4Allocation.cidrから各 CIDRmaskSizeフィールドを確認します。kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet -n ORG_NAME \ -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage!=network-root-range各値を、後で参照する使用済み CIDR としてメモします。
合計 CIDR と使用済み CIDR に基づいて、サブネットの利用可能な CIDR を計算します。使用可能な CIDR が新しいサブネットを割り当てるのに十分な大きさでない場合は、新しいネットワーク ルート範囲のグローバル サブネットを追加します。その後、次のステップに進みます。
グローバル ルート管理者 API サーバーに新しいサブネットを作成します。
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/SUBNET_TYPE_LABEL ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: SUBNET_NAME namespace: ORG_NAME spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH zone: ZONE_NAME propagationStrategy: SingleZone type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF次のように置き換えます。
GLOBAL_ROOT_ADMIN_KUBECONFIG: ルート管理クラスタの kubeconfig ファイルのパス。SUBNET_TYPE_LABEL: サブネット タイプ。vpc: infra-vpc、network-segment: admin、network-segment: data、vpc: default-vpcのいずれかの値にする必要があります。SUBNET_NAME: 新しいサブネットの名前。ORG_NAME: 組織の名前。CIDR_PREFIX_LENGTH: 新しいサブネットのプレフィックス長(20など)。ZONE_NAME: サブネットのゾーン名(例:zone1)。PARENT_SUBNET_NAME: 親サブネットの名前(infra-vpc-root-cidr、admin-external-root-cidr、data-external-root-cidr、default-vpc-root-cidrなど)。
ステータス
Readyタイプがtrueであることを確認して、サブネットの準備ができていることを確認します。組織のグローバル API サーバーにグローバル サブネットが作成され、準備ができていることを確認します。
kubectl --kubeconfig GLOBAL_ORG_ADMIN_KUBECONFIG get subnet -n NAMESPACE -l \ ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=zone-network-root-rangeNAMESPACE は、サブネットの Namespace に置き換えます。
infra-vpcサブネットにはinfra-networkを使用し、他のサブネット タイプにはplatformを使用します。ゾーン サブネットがルート管理クラスタの組織名前空間に作成され、準備ができていることを確認します。
kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get subnet -n ORG_NAME \ -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=zone-network-root-rangeゾーン サブネットが
platformNamespace の Management API サーバーに作成され、準備ができていることを確認します。kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet -n NAMESPACE \ -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=zone-network-root-range
指定したゾーンの組織のサブネット アップスケールが完了しました。管理者は、新しいサブネットからさらに子サブネットを作成できます。
新しいネットワーク ルート範囲のグローバル サブネットを追加する
ipam.gdc.goog/usage: network-root-range ラベルが付いたグローバル サブネットは、このカテゴリのすべてのゾーンの CIDR をホストします。使い切った場合は、グローバル API サーバーに新しい network-root-range サブネットを作成する必要があります。必要に応じて、複数のルート グローバル サブネットを作成できます。
新しい network-root-range サブネットを作成する手順は次のとおりです。
新しいネットワーク ルート範囲のグローバル サブネットの YAML ファイル(
subnet-network-root.yamlなど)を作成します。apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/SUBNET_TYPE ipam.gdc.goog/usage: network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: SUBNET_NAME namespace: ORG_NAME spec: ipv4Request: cidr: NEW_CIDR type: Root次のように置き換えます。
SUBNET_TYPE: サブネット タイプ。vpc: infra-vpc、network-segment: admin、network-segment: data、vpc: default-vpcのいずれかの値にする必要があります。API_SERVER_ANNOTATION: このサブネットが別の API サーバーにピボットする必要があることを識別するアノテーション。infra-vpcまたは管理者と datanet のワーク セグメントの場合は、ipam.gdc.goog/pivot-destination: global-orgを使用します。新しいdefault-vpcルート範囲を追加する場合は、このアノテーションを設定しないでください。SUBNET_NAME: 新しいサブネットの名前。ORG_NAME: 組織の名前。NEW_CIDR: サブネットの新しい CIDR。この CIDR は、同じグローバル ルート管理者 API サーバー内のipam.gdc.goog/usage: network-root-rangeラベルを持つ既存のサブネットの CIDR と重複できません。