GKE on VMware の更新に関する問題のトラブルシューティング

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

さらにサポートが必要な場合は、Google サポートにお問い合わせください。

更新のタイムアウト

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

  • ユーザー クラスタ内:

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

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

このような種類のタイムアウト エラーは無視して、更新コマンドを再試行できます。コマンドを再試行しても同じエラー メッセージで再びタイムアウトした場合は、Google サポートにご連絡ください。

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

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 コマンドについては、OS イメージを vSphere にインポートする方法をご覧ください。

新しいノードプール用のデータストアの空き容量が不足している

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

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

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

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

次のステップ

さらにサポートが必要な場合は、Google サポートにお問い合わせください。