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
データストアを構成する。