Google Distributed Cloud の更新に関するトラブルシューティング

Google Distributed Cloud の更新で問題が発生した場合は、以降のセクションのトラブルシューティングが役立つことがあります。更新できる設定の詳細については、クラスタで更新できる設定と更新できない設定をご覧ください。

さらにサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。

更新のタイムアウト

更新のタイムアウトは、更新するリソースに基づいて動的に計算されます。ただし、この計算は必ずしも正確ではありません。更新がタイムアウトすると、次のようなエラーが表示されます。

  • ユーザー クラスタ:

    Failed to update the cluster:...timed out waiting for the condition...
    
  • 管理クラスタ:

    Failed to update the admin cluster:...timed out waiting for the condition...
    

このようなタイムアウト エラーは無視して、更新コマンドを再試行できます。コマンドを再試行しても同じエラー メッセージで再びタイムアウトした場合は、Cloud カスタマーケアにお問い合わせください。

複数の変更が含まれる更新

gkectl update admin コマンドと gkectl update cluster コマンドでは、1 つのコマンドで複数の設定を更新することはできません。構成に複数の変更が含まれていると、次のようなエラーが返されます。

Update summary for cluster X:
    antiAffinityGroups: enabled to be set to true from false          &config.AAGSpec{
        -   Enabled: false,
        +   Enabled: true,
          }
    user master cpu to be set to 5 from 4          config.NodePoolProps{
            Role:        "master",
            MachineType: "standard-master",
        -   CPUs:        4,
        +   CPUs:        5,
            MemoryMB:    8192,
            Replicas:    3,
            ... // 2 identical fields
            Labels:         nil,
            NodeTaints:     nil,
        -   Vsphere:        nil,
        &config.NodePoolVsphereSpec{Datastore: "lifecycle-workloads1-datastore1"},
        +   Vsphere:        nil,
            BootDiskSizeGB: nil,
            OSImageType:    "",
            ... // 5 identical fields
          }

Exit with error:
Failed to update the cluster: the update contains multiple changes. Please
update only one feature at a time

このエラーの原因としては、さまざまな理由が考えられます。たとえば、次のようなものがあります。

  • 誤りや構成ミス。
  • 構成差分の前に実行した gkectl upgrade によって、変更が適用されると判断した。
    • gkectl upgrade では、バージョン バンプ以外の構成の差分は適用されません。
  • 以前に別の機能更新の構成を編集したものの、gkectl update コマンドを実行するのを忘れた。

このような場合は、エラー メッセージで差分を調べ、複数の gkectl update コマンドを使用して必要な設定を 1 つずつ更新します。変更を特定するには、gkectl get-config を使用してクラスタから構成ファイルを生成し、既存の状態と構成を確認します。

サポートされていない変更

gkectl update cluster コマンドと gkectl update admin コマンドは、サポートされていない変更を無視し、次のようなエラー メッセージを表示します。

detected unsupported changes: (-current +desired)
    ...
-   AdvancedNetworking:       &true,
+   AdvancedNetworking:       &false,
    ...
, which will be ignored

このような場合は、エラー メッセージで差分を確認して、次の操作を行います。

  • 意図しない変更の場合は、構成 YAML ファイルを編集して、意図した正しい変更のみを更新します。
    • たとえば、上記の例で AdvancedNetworking を無効にする意図がなかった場合、構成ファイルの YAML ファイルで advancedNetworking: true を設定します。
  • 変更が意図したものである場合、サポートされていない変更であることを意味します。次のいずれかの操作を行います。
    • 必要に応じてクラスタを再作成します。
    • Google サポートに問い合わせます。

OS イメージが存在しない

次の例のような OS Images プリフライト チェックに失敗すると、gkectl update cluster コマンドと gkectl update admin コマンドが失敗することがあります。

  • ユーザー クラスタ:

    - Validation Category: OS Images
        - [FAILURE] User cluster OS images exist: os images  [xxxx] don't exist,
        please run `gkectl prepare` to upload os images.
    
  • 管理クラスタ:

    - Validation Category: OS Images
        - [FAILURE] Admin cluster OS images exist: os images [xxxx] don't exist,
        please run `gkectl prepare` to upload os images.
    

これらのエラーは、定期的なクリーンアップ ジョブなどによって、vCenter 環境で OS イメージが予期せず削除された場合に発生することがあります。

インポートした OS イメージを再インポートするには、次のように gkectl prepare コマンドを実行します。

gkectl prepare \
    --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --skip-upload-container-images

新しいノードプールに十分な空き容量がデータストアにない

新しいノードプールを追加すると、次のような VSphere Datastore FreeSpace プリフライト チェック エラーで gkectl update cluster コマンドが失敗することがあります。

  - [FAILURE] VSphere Datastore FreeSpace: vCenter datastore: xxxx insufficient
  FreeSpace, requires at least xxx  GB

このエラーは、新しいノードプールを実行するのに十分な空き容量がデータストアにないことを示します。次のいずれかのオプションを使用すると、オペレーションに必要なスペースを確保できます。

  • データストアの空き容量を増やす。
  • ノードプールに別の nodePools[].vsphere.datastore データストアを構成する。

次のステップ

さらにサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。