ノード・プール内の管理対象ノードをサイクリングする場合のサービス可用性とコストのバランス

Kubernetes Engine (OKE)を使用して作成したノード・プール内の管理対象ノードをサイクリングする際に、サービスの可用性とコストのバランスを取る方法をご覧ください。

ノード・プール内の管理対象ノードをサイクリングしてブート・ボリュームを置換する場合、またはノードを終了および置換する場合、Kubernetes Engineは既存のノードを自動的にコード化して使用不可にし、ノードをドレインします(ノード・プールに指定された「コードとドレイン」設定を使用)。

次のように、Kubernetes Engineの動作を調整して、サービスの可用性およびコストに関する独自の要件を満たすことができます:

  • ブート・ボリュームの置換時、およびノードの終了および置換時に、操作中に使用できないようにするノード数を指定できます(maxUnavailableと呼ばれます)。使用できないノードの数が多いほど、Kubernetes Engineがコストを増加させずに並行して更新できるノードが増えます。ただし、使用できないノードの数が多いほど、サービスの可用性が低下する可能性があります。
  • ノードの終了および置換時には、更新操作中に一時的に許可する追加ノードの数を指定できます(maxSurgeと呼ばれます)。許可する追加ノードの数が多いほど、サービスの可用性を損なうことなく、Kubernetes Engineが並列で更新できるノードが増えます。ただし、許可する追加ノードの数が多いほど、コストは高くなります。

maxUnavailablemaxSurgeの両方について、許可されるノード数を整数として、またはコンソールのノード・プールの「ノード数」プロパティ(APIのノード・プールの「サイズ」プロパティ)に表示されるノード数の割合として指定できます。

ノードを終了および置換する際に、追加のノード(maxSurge)および使用不可ノード(maxUnavailable)に許可番号を明示的に指定しない場合、次のことが適用されます:

  • maxSurgeまたはmaxUnavailableのいずれかに値を指定しない場合、maxSurgeはデフォルトで1になり、maxUnavailableはデフォルトで0になります。
  • maxSurgeの値のみを指定した場合、maxUnavailableはデフォルトで0になります。
  • maxUnavailableの値のみを指定した場合、maxSurgeはデフォルトで1に設定されます。
  • 追加ノード(maxSurge)と使用不可ノード(maxUnavailable)の両方に許可される番号として0を指定することはできません。

ブート・ボリュームを置換する際に、使用できないノード(maxUnavailable)に許可された数を明示的に指定しない場合、次のことが適用されます:

  • maxUnavailableの値を指定しない場合、maxUnavailableはデフォルトで1に設定されます。
  • maxUnavailableの許容数として0を指定することはできません。

次の点に注意してください:

  • 操作の最後に、ノード・プール内のノードの数は、コンソールに表示されるノード・プールの「ノード数」プロパティで指定された数(APIのノード・プールの「サイズ」プロパティ)に戻ります。
  • ノードの終了および置換時に、操作中にmaxSurgeの値を指定する場合、テナンシには、指定する追加ノードの数に対して十分な割当て制限が必要です。
  • maxUnavailableの値を指定すると、ノード・プールでその数のノードを使用不可にできない場合(たとえば、ポッドの中断予算のため)、操作は失敗します。
  • maxUnavailableの値としてパーセンテージを入力すると、Kubernetesエンジンは、許可されるノード数の計算時に、パーセンテージを最も近い整数に切り上げます。
  • ラージ・ノード・プールを更新する場合、maxUnavailableに指定する値によって許容できない長いサイクル時間が生じる可能性があることに注意してください。たとえば、1000ノードを持つノード・プールのノードをサイクリングするときに、maxUnavailableの値として1を指定した場合、Kubernetes Engineはノード・プール内のすべてのノードをサイクルするのに数日かかることがあります。ノード・サイクリング操作が30日以内に完了しない場合、関連する作業リクエストのステータスは「失敗」に設定されます。別のノード・サイクリング・リクエストを送信して、操作を再開します。
  • ノード・プール内の管理対象ノードをサイクリングしてノード・プールをスケール・ダウンする場合、ノード・プール内のノードの数は、maxUnavailableの値として指定された数に減らすことができます。その結果、後続の操作によって、使用可能なノードの数が意図した数より少なくなり、サービスの可用性が低下し、ワークロードに影響する可能性があります。このような状況では、注意深く進み、maxUnavailable値を減らすことを検討してください。