このページでは、ストレージ リソースとコンピューティング リソースを追加してシステムを動的に拡張するプロセスについて説明します。次のタイプの拡張機能の手順について説明します。
- 水平サーバーラックの拡張: ゾーンに新しいラックを追加します。このラックには、コンピューティング ノード、コンソール、トップオブラック(ToR)スイッチ、管理(MGMT)スイッチが含まれています。
- 垂直サーバー拡張: 空の拡張スロットがあるラックにサーバー拡張ブロックを追加します。
- 垂直ファイルとブロック ストレージの拡張: 既存のストレージ クラスタに空の拡張スロットがあるラックにストレージ ノードを追加します。同じストレージ スイッチに接続されているストレージ ノードは、同じクラスタに属します。
さまざまなタイプの動的拡張の詳細については、動的拡張の概要をご覧ください。
始める前に
ゾーンを変更する前に、次のことを行う必要があります。
- ハードウェアの検査を実施し、OEM との承認手続きを行います。ラックの検査の手順に沿って対応します。
- KUBECONFIG の生成に沿って、コントロール プレーン ノードの管理クラスタの
KUBECONFIGを生成します。このガイドのすべてのkubectl手順で、生成されたKUBECONFIG構成ファイルを使用します。 ルートクラスタの現在の Google Distributed Cloud(GDC)エアギャップ バージョンが 1.13.1 以降であることを確認します。
kubectl --kubeconfig $KUBECONFIG get org root -n gpc-systemGDC tar ファイルをダウンロードします。詳しくは、ファイルをダウンロードするをご覧ください。
新しいアプライアンスのファームウェアを準備します。
- GDC ハードウェアのパケット交換デバイス。詳細については、スイッチをご覧ください。
- ONTAP の手動アップグレードの手順に沿って、ONTAP ファイル ストレージとブロック ストレージを更新します。
gdcloud system doctorを使用して GDCH システムが正常であることを確認します。gdcloud system doctorコマンドを使用できない場合は、ネットワーク インストールの確認の代替方法を使用します。
サーバーラックの水平方向の拡張を行う
コンピューティング ノード、コンソール、ToR スイッチ、管理スイッチで構成される新しいラックを、水平サーバーラック拡張によってゾーンに追加します。このセクションで説明する手順は、単一のラックを対象としています。複数のラックがある場合は、各ラックにこの手順を適用します。
リセット オペレーションを実施する
次の機器は安全にリセットする必要があります。
- セキュア リセット シリアル コンソール サーバーを実行します。デプロイごとにシリアル コンソールが異なる場合があるため、これらの手順については Google にお問い合わせください。
Raritan 配電ユニット(PDU)で安全なリセットを実行します。
- USB-b ケーブルをシステム コントローラから Raritan PDU に接続します。
- ローカル シリアル コンソールで、コマンド
reset factorydefaultsを使用して PDU を出荷時のデフォルト設定にリセットします。 - PDU が
admin/legrandに設定されました。
安全な消去の手順に沿って、安全なリセットを実行し、ファームウェアを更新して、ToR スイッチと MGMT スイッチを PowerOn Auto Provisioning(POAP)にリセットします。
各サーバーに接続し、安全な消去を手動で実行します。
アーティファクトを準備する
必要な構成ファイルとカスタム リソースを適用する手順は次のとおりです。
gdcloud system assets addコマンドを使用して、ZonalExpansionYAML ファイル、ハードウェアCustomResources、ハードウェアSubcomponentOverrideリソースを生成します。gdcloud system assets add \ --kubeconfig $KUBECONFIG \ --license-dir FILE_PATH/licenses/ \ --secrets FILE_PATH/secrets.yaml \ --devices FILE_PATH/devices.csv \ --cables FILE_PATH/cables.csv \ --include-cellcfg \ --name az-ae-expansion \ --output ./outputs/af使用する各ファイルに対して
FILE_PATHを置き換えます。各ファイルが異なる場所にある場合、このパスは異なる可能性があります。ZonalExpansionカスタム リソースは、追加されたすべてのオブジェクトを追跡し、すべてのオブジェクトのステータスを報告します。ZonalExpansionYAML ファイルを確認する際は、次のガイダンスを使用してください。nameフィールドは、az-ae-expansionなどの説明的なものにする必要があります。assetsフィールドには、新しい拡張ラック内のすべての新しいアプライアンスを含める必要があります。
ZonalExpansionリソースの例を次に示します。apiVersion: system.private.gdc.goog/v1alpha1 kind: ZonalExpansion metadata: name: file namespace: gpc-system spec: assets: - kind: ManagementSwitch name: az-ae-mgmtsw01 - kind: ManagementSwitch name: az-ae-mgmtsw02 - kind: TORSwitch name: az-ae-torsw01 - kind: TORSwitch name: az-ae-torsw02 - kind: TORSwitch name: az-ae-bm01Infrastructure as Code(IAC)ツールを使用して、
ZonalExpansionカスタム リソースを適用します。詳細については、Infrastructure as Code の設定をご覧ください。または、IAM-R0004 ランブックに沿って、kubectlを使用してこれを行います。ZonalExpansionリソースとNonCompliantDeviceSetリソースが作成されたことを確認します。ZonalExpansionリソースのステータスを確認します。kubectl --kubeconfig $KUBECONFIG get -A zonalexpansion -o yamlこの段階で、プリフライト チェックは理由
ReasonAssetsNotExistedで失敗します。NonCompliantDeviceSetリソースは、noncompliantassets-という接頭辞が付いた名前で存在している必要があります。アセット リストは、
ZonalExpansionカスタム リソースのassetsフィールドと同じである必要があります。
OLT-R0003 の手順に沿ってアセットを更新します。
新しいラックの ToR スイッチと MGMT スイッチを、既存のラックのアグリゲーション スイッチに接続します。
スイッチをベースラックに物理的に接続します。
サーバーのブートストラップを完了する
このフェーズはほとんどが自動化されていますが、いくつかの手順が必要です。ブートストラップの進行状況をモニタリングし、失敗ケースを処理する必要があります。
- コントローラは、条件
PreflightCheck=Trueが満たされると、ブートストラップ プロシージャを自動的に開始します。 - 条件
NetworkBootstrapSucceed=TrueがZonalExpansionカスタム リソースに公開されていることを確認します。この条件はZonalExpansion.Status.PNETBootstrapStatusにあります。 スイッチが
NonCompliantDeviceSetリストから削除されたことを確認します。kubectl --kubeconfig $KUBECONFIG get noncompliantdeviceset noncompliantassets-EXPANSION_NAME -A -o yamlEXPANSION_NAMEは、ゾーン拡張カスタム リソースの名前に置き換えます。返された YAML ファイルの
Spec.Assetsフィールドにスイッチが含まれていないことを確認します。この削除により、GDC はネットワーク ACL を更新して、他のアプライアンスのブートストラップ手順を許可できます。更新された 2 つのネットワーク ACL は、quarantine-mgmt-switch-aclとquarantine-data-switch-aclです。サーバーのすべてのベースボード管理コントローラ(BMC)IP アドレスを一覧表示し、iLO IP アドレスが新しいベアメタル マシンに割り当てられ、ブートストラップを開始できることを確認します。
kubectl --kubeconfig $KUBECONFIG get servers -n gpc-system -o=custom-columns=SERVER:.metadata.name,BMC_IP:.spec.bmc.ip出力例:
SERVER BMC_IP yz-aa-bm01 10.128.136.2 yz-aa-bm02 10.128.136.3 yz-aa-bm03 10.128.136.4 yz-ab-bm01 10.128.136.66 yz-ab-bm02 10.128.136.67 yz-ab-bm03 10.128.136.68 yz-ac-bm01 10.128.136.130 yz-ac-bm02 10.128.136.131 yz-ac-bm03 10.128.136.132 yz-ac-bm04 10.128.136.133 yz-ac-bm05 10.128.136.134 yz-ac-bm06 10.128.136.135 yz-ac-bm07 10.128.136.136 yz-ac-bm08 10.128.136.137 yz-ac-bm09 10.128.136.138 yz-ac-bm10 10.128.136.139 yz-ac-bm11 10.128.136.140 yz-ac-bm12 10.128.136.141 yz-ac-bm13 10.128.136.142 yz-ac-bm14 10.128.136.143 yz-ac-bm15 10.128.136.144 yz-ac-bm16 10.128.136.145 yz-ac-bm17 10.128.136.146 yz-ac-bm18 10.128.136.147GDC は、サーバーを並行してブートストラップし、セキュア消去、検証、BIOS 設定の更新などのブートストラップ手順を実行します。
ServerBootstrapSucceeded=True条件がZonalExpansionカスタム リソースに公開されていることを確認します。この条件はZonalExpansion.Status.SERVBootstrapStatusにあります。- ブートストラップが成功すると、サーバーのベアメタル ホストのステータスが
AvailableまたはProvisionedの状態になります。 - CLI の詳細レベルが 4 の場合、
"Not all servers in the ZonalExpansion are bootstrapped"のようなログが表示され、まだ準備ができていないサーバーのリストが表示されます。
- ブートストラップが成功すると、サーバーのベアメタル ホストのステータスが
サーバーが
NonCompliantDeviceSetリストから削除されたことを確認します。kubectl --kubeconfig $KUBECONFIG get noncompliantdevicesets -n gpc-system "noncompliantassets-EXPANSION_NAME" -o yaml条件
ExpansionSucceeded=TrueがZonalExpansionカスタム リソースに公開されていることを確認します。この条件はZonalExpansion.Status.Conditionsにあります。NonCompliantDeviceSetリストが削除されたことを確認します。kubectl --kubeconfig $KUBECONFIG get noncompliantdeviceset noncompliantassets-EXPANSION_NAME -A予想される出力:
`Error from server (NotFound): noncompliantdevicesets.system.private.gdc.goog "noncompliantassets-EXPANSION_NAME" not found`
垂直方向のサーバー拡張を行う
垂直サーバー拡張により、空の拡張スロットがあるラックにサーバー拡張ブロックを追加します。この拡張の手順の多くは、コンピューティングの水平方向の拡張と似ています。垂直サーバーラックの拡張を行う手順は次のとおりです。
- 6 ノードの容量を占有する標準サーバー ブロック、または 3 ノードの容量を消費する GPU サーバー ブロックを物理的にインストールします。ラックごとに複数のブロックを追加できます。警告: ケーブルを
mgmtswスイッチまたはaggswスイッチに接続しないでください。詳細については、スイッチをご覧ください。 - 電源以外のケーブル接続は行わないでください。この手順により、サーバーの電源投入プロセスで、サーバーが到着時にオフラインになっていないことを確認できます。
gdcloud system assets addコマンドを使用して、ZonalExpansionYAML ファイルとハードウェアSubcomponentOverrideリソースを生成します。gdcloud system assets add \ --kubeconfig $KUBECONFIG \ --license-dir FILE_PATH/licenses/ \ --secrets FILE_PATH/secrets.yaml \ --devices FILE_PATH/devices.csv \ --cables FILE_PATH/cables.csv \ --include-cellcfg \ --name az-ae-expansion \ --output ./outputs/af使用する各ファイルに対して
FILE_PATHを置き換えます。各ファイルが異なる場所にある場合、このパスは異なる可能性があります。ZonalExpansionYAML ファイルを確認する際は、次のガイダンスを使用してください。nameフィールドは、az-ae-expansionなどの説明的なものにする必要があります。assetsフィールドには、新しい拡張ラック内のすべての新しいアプライアンスを含める必要があります。
ZonalExpansionリソースの例を次に示します。apiVersion: system.private.gdc.goog/v1alpha1 kind: ZonalExpansion metadata: name: file namespace: gpc-system spec: assets: - kind: ManagementSwitch name: az-ae-mgmtsw01 - kind: ManagementSwitch name: az-ae-mgmtsw02 - kind: TORSwitch name: az-ae-torsw01 - kind: TORSwitch name: az-ae-torsw02 - kind: TORSwitch name: az-ae-bm01先ほど作成した
ZonalExpansionカスタム リソースをクラスタに適用します。ZonalExpansionリソースとNonCompliantDeviceSetリソースが作成されたことを確認します。ZonalExpansionリソースのステータスを確認します。この段階で、プリフライト チェックは理由ReasonAssetsNotExistedで失敗します。NonCompliantDeviceSetリソースは、noncompliantassets-という接頭辞が付いた名前で存在している必要があります。- アセット リストは、
ZonalExpansionカスタム リソースのassetsフィールドと同じである必要があります。
OLT-R0003 の手順に沿ってアセットを更新します。
OLT-R0001 ランブックに沿って、隔離スイッチ ACL が実行されていることを確認します。
サーバーのケーブル接続がまだ完了していない場合は、接続します。Hewlett Packard Enterprise(HPE)から提供されたケーブル接続ファイルに従います。
サーバーのブートストラップ プロセスが正常に開始され、完了することを確認します。詳細については、サーバーのブートストラップを完了するをご覧ください。
ファイルとブロック ストレージの垂直方向の拡張を行う
これらの手順には、垂直方向のストレージ ノード拡張(単一ラック)に必要な手順が含まれています。ストレージ ノードの拡張は、既存のラックのストレージ機能を拡張するために新しい ONTAP ストレージ ノードが追加されたときに実行されます。ここでは、新しいストレージ デバイスのケーブル接続手順は説明しません。既存のクラスタで新しいストレージ ノードを消去、アップグレード、追加する手順のみを説明します。
ストレージ ノードの拡張を設定する
ストレージ ノードの拡張用にクラスタを準備する手順は次のとおりです。
KUBECONFIG の生成に沿って、コントロール プレーン ノードの管理クラスタの
KUBECONFIGを生成します。このガイドのすべてのkubectlステップで、生成されたKUBECONFIG構成ファイルを使用します。ノード拡張の初期設定を行う間、ストレージ Reconciler を無効にするには、
SubcomponentOverrideリソースを適用します。kubectl --kubeconfig $KUBECONFIG apply -f - <<EOF apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: file-storage-sub-override namespace: root spec: subComponentRef: "file-storage" backend: operableParameters: controller: enableReconcilers: "" disableReconcilers: "*" EOFオーバーライドが機能し、
file-storageリコンサイラが無効になっていることを確認します。kubectl --kubeconfig $KUBECONFIG describe deployment file-storage -n file-system | grep reconcilers次の画面が表示されます。
--enable-reconcilers= --disable-reconcilers=*この状態が表示されない場合は、
SubcomponentOverrideリソースが適用されるまで数分待ってから、このチェックをもう一度実行します。数分経ってもSubcomponentOverrideが適用されない場合は、GDC エンジニアリング サポートにお問い合わせください。gdcloud system assets addコマンドを使用して、ZonalExpansionYAML ファイルとハードウェアSubcomponentOverrideリソースを生成します。gdcloud system assets add \ --kubeconfig $KUBECONFIG \ --license-dir FILE_PATH/licenses/ \ --secrets FILE_PATH/secrets.yaml \ --devices FILE_PATH/devices.csv \ --cables FILE_PATH/cables.csv \ --include-cellcfg \ --name az-ae-expansion \ --output ./outputs/af ``` Replace FILE_PATH for each of the files used. Note, this path might be different if each file is in a different location. Use the following guidance when reviewing the `ZonalExpansion` YAML file: The `name` field must be descriptive, such as aj-ad-expansion. The `assets` field must include all new appliances in the new expansion rack. Here is an example of a `ZonalExpansion` resource: ```sh apiVersion: system.private.gdc.goog/v1alpha1 kind: ZonalExpansion metadata: name: file namespace: gpc-system spec: assets: - kind: StorageNode name: aj-ad-stge03-01 - kind: StorageNode name: aj-ad-stge03-02 ```先ほど作成した
ZonalExpansionカスタム リソースをクラスタに適用します。ZonalExpansionリソースとNonCompliantDeviceSetリソースが作成されたことを確認します。- ZonalExpansion リソースのステータスを確認します。この段階で、プリフライト チェックは理由
ReasonAssetsNotExistedで失敗します。 NonCompliantDeviceSetリソースは、noncompliantassets-という接頭辞が付いた名前で存在している必要があります。- アセットリストは、
ZonalExpansionカスタム リソースのアセット フィールドと同じにする必要があります。
- ZonalExpansion リソースのステータスを確認します。この段階で、プリフライト チェックは理由
IaC ツールを使用して、次のハードウェア アセット
SubcomponentOverrideリソースをルート管理者クラスタに適用します。- file/file-storage.yaml
- inv/inv-core.yaml
新しいノードがクラスタに追加されたことを確認します。
kubectl --kubeconfig $KUBECONFIG get storagenodes -n gpc-system新しいノード カスタム リソースが追加され、より新しい経過時間が表示されます。
NAME MGMTIP INTERCONNECTIP MODEL AGE aj-ad-stge01-01 172.22.243.129 169.254.0.1 AFF-A250 37d aj-ad-stge01-02 172.22.243.130 169.254.0.3 AFF-A250 37d aj-ad-stge03-01 172.22.243.133 169.254.0.9 AFF-A400 20d aj-ad-stge03-02 172.22.243.134 169.254.0.11 AFF-A400 20ddescribeコマンドを使用して、両方のノードに関する情報を取得します。これらのノードには、後の手順で必要な情報が含まれています。kubectl --kubeconfig $KUBECONFIG describe storagenode NODE_NAME -n gpc-systemNODE_NAMEは、作成した各ノードの名前に置き換えます。出力例:
NAME MGMTIP INTERCONNECTIP MODEL AGE aj-ad-stge03-02 172.22.243.134 169.254.0.11 AFF-A400 20d
ストレージ ノードの拡張プロセスを完了する
ストレージ ノードの拡張プロセスを完了する手順は次のとおりです。
- 新しいストレージ ノードを手動でアップグレードします。各ノードで、システム コントローラからファイルを配信する ONTAP の手動アップグレードの手順に沿って操作します。
新しいストレージ ノードの安全な消去を実行します。新しい ONTAP ノードの場合は、ONTAP のリセットの手順に沿ってノードをリセットします。
新しいストレージ ノードを初期化します。前の手順で説明した、新しく追加された
StorageNodeカスタム リソースの情報を使用します。ノードごとに、ONTAP アプライアンスを初期化するの手順を行います。ONTAP の設定に沿って、新しいノードから現在のクラスタにケーブル接続します。
既存のクラスタに新しいノードを追加するの手順に沿って、新しいノードをクラスタに追加します。
動的拡張のトラブルシューティング
サービス マニュアルの次のランブックを使用して、動的拡張の問題をトラブルシューティングします。
- OLT-R0001
- OLT-R0002
- OLT-R0003