ノードの自動アップグレード

このページは、Google Kubernetes Engine でノードの自動アップグレードを構成する方法について説明します。

概要

ノードの自動アップグレードを有効にすると、クラスタ コントロール プレーン(マスター)が更新されるときに、コントロール プレーンのバージョンを使用してクラスタ内のノードを最新の状態に維持できます。Google Cloud Console または gcloud コマンドを使用して新しいクラスタやノードプールを作成するときは、デフォルトでノード自動アップグレードが有効になっています。

クラスタとノードのアップグレードの詳細を確認できます。

ノードの自動アップグレードには次のようなメリットがあります。

  • 管理オーバーヘッドの削減: コントロール プレーンがアップグレードされたときに、ノードを手動でトラッキングして更新する必要がなくなります。
  • セキュリティの向上: セキュリティ上の問題を解決するために、新しいバイナリがリリースされることがあります。自動アップグレードでは、GKE によって自動的にセキュリティ アップデートが適用され、最新の状態が保たれます。
  • 使いやすさ: ノードを最新の状態に保ち、Kubernetes の最新の機能を使用することが簡単にできます。

自動アップグレードが有効になっているノードプールでは、選択条件(リリースノートに記載)を満たすとアップグレードがスケジュール設定されます。クラスタとフリートの安定性を確保するために、ロールアウトが数週間にわたって段階的に行われます。アップグレードが実行されると、ノードがドレインされ、現在のクラスタ コントロール プレーンのバージョンと一致するように再作成されます。ノード VM のブートディスクに加えた変更は、ノードが再作成されると無効になります。ノードの再作成後も変更を維持するには、DaemonSet を使用します。

アルファ版のクラスタでは、ノードの自動アップグレードを使用できません。Windows Server ノードプールがあるクラスタを使用している場合は、ノードの自動アップグレードを有効にする前に Windows Server ノードプールのアップグレードを確認してください。

既存のノードプールの自動アップグレードの状態を確認する

ノードプールの自動アップグレードが有効か無効かを確認するには、Google Cloud Console や gcloud コマンドを使用します。

gcloud

ノードプールの自動アップグレードの状態を確認するには、次のコマンドを実行します。

gcloud container node-pools describe node-pool-name \
  --cluster cluster-name \
  --zone compute-zone

ここで

  • node-pool-name は、ノードプールの名前です。
  • cluster-name は、ノードプールを含むクラスタの名前です。
  • compute-zone はクラスタのゾーンです。

Console

ノードプールの自動アップグレードの状態を確認するには、次の手順を行います。

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 鉛筆の形をしたクラスタの編集ボタンをクリックします。

  3. [ノードプール] セクションで、確認するノードプールを選択します。

  4. [管理] セクションで、[自動アップグレード] フィールドの値を表示します。

既存のノードプールのノードの自動アップグレードを有効にする

Google Cloud Console または gcloud コマンドを使用して新しいクラスタを作成するときは、デフォルトでノード自動アップグレードが有効になっています。

ノード自動アップグレードが無効な場合は有効にできます。

gcloud

既存のノードプールの自動アップグレードを有効にするには、次のコマンドを実行します。

gcloud container node-pools update node-pool-name --cluster cluster-name \
    --zone compute-zone --enable-autoupgrade

ここで

  • node-pool-name は、ノードプールの名前です。
  • cluster-name は、ノードプールを含むクラスタの名前です。
  • compute-zone はクラスタのゾーンです。

Console

既存のノードプールの自動アップグレードを有効にするには、次の手順を行います。

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 鉛筆の形をしたクラスタの編集ボタンをクリックします。

  3. [ノードプール] セクションで、変更するノードプールの名前をクリックし、[編集] をクリックします。

  4. [自動アップグレードを有効化] をオンにします。

  5. [保存] をクリックして、クラスタを変更します。

ノードをアップグレード可能にする際の制御を容易にするには、メンテナンスの時間枠と除外の構成を検討してください。

既存ノードプールのノードの自動アップグレードを無効にする

既存のノードプールのノード自動アップグレードは無効にできます。その場合は、クラスタのノードが実行するバージョンがクラスタのバージョンと互換性のあることを確認してください。

gcloud

既存のノードプールの自動アップグレードを無効にするには、次のコマンドを実行します。

gcloud container node-pools update node-pool-name --cluster cluster-name \
    --zone compute-zone --no-enable-autoupgrade

Console

既存のノードプールの自動アップグレードを無効にするには、次の手順を行います。

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 鉛筆の形をしたクラスタの編集ボタンをクリックします。

  3. [ノードプール] セクションで、変更するノードプールの名前をクリックし、[編集] をクリックします。

  4. [自動アップグレードを有効化] をオフにします。

  5. [保存] をクリックして、クラスタを変更します。

ノードの自動アップグレードを有効にしてクラスタまたはノードプールを作成する

gcloud

デフォルト ノードプールの自動アップグレードが有効なクラスタを作成するには、gcloud container clusters create コマンドに --enable-autoupgrade フラグを指定します。

gcloud container clusters create cluster-name --zone compute-zone \
    --enable-autoupgrade

自動アップグレードが有効なノードプールを作成するには:

gcloud container node-pools create node-pool-name --cluster cluster-name \
    --zone compute-zone --enable-autoupgrade

Console

Cloud Console で作成されたクラスタとノードプールは、デフォルトで自動アップグレードが有効になっています。クラスタおよびノードプールの作成手順については、クラスタの作成またはノードプールの追加と管理をご覧ください。

新しいノードプールの自動アップグレードを無効にできます。クラスタ作成ページで、変更するノードプールの名前をクリックし、[自動アップグレードを有効化] をオフにします。

サージ アップグレード パラメータを変更する

サージ アップグレードを使用すると、GKE が一度にアップグレードするノード数とアップグレードでワークロードが中断される回数を変更できます。

max-surge-upgrade フラグと max-unavailable-upgrade フラグは、ノードプールごとに定義されています。適切なパラメータの選択について詳しくは、最適なサージ構成の決定をご覧ください。

これらの設定は、クラスタやノードプールを作成または更新するときに変更できます。

下記のコマンドでは、次の変数を使用しています。

  • cluster-name は、ノードプールのクラスタの名前です。
  • compute-zone はクラスタのゾーンです。
  • node-pool-name は、ノードプールの名前です。
  • number-nodes は、各クラスタのゾーンにあるノードプール内のノード数です。
  • surge-nodes は、ノードプールの各アップグレーで作成される追加の(サージ)ノードの数です。
  • unavailable-nodes は、ノードプールの各アップグレードで同時に使用できないノードの数です。

特定のパラメータでクラスタを作成する

サージ アップグレードに固有の設定でクラスタを作成するには、max-surge-upgrade フラグと max-unavailable-upgrade フラグを使用します。

gcloud container clusters create cluster-name \
  --max-surge-upgrade=surge-nodes --max-unavailable-upgrade=unavailable-nodes

サージ アップグレードが無効なクラスタを作成する

サージ アップグレードなしでクラスタを作成するには、max-surge-upgrade フラグの値を 0 に設定します。

gcloud container clusters create cluster-name \
  --max-surge-upgrade=0 --max-unavailable-upgrade=1

特定のサージ パラメータでノードプールを作成する

サージ アップグレードに固有の設定で既存のクラスタにノードプールを作成するには、max-surge-upgrade フラグと max-unavailable-upgrade フラグを使用します。

gcloud container node-pools create node-pool-name \
  --num-nodes=number-nodes --cluster=cluster-name \
  --max-surge-upgrade=surge-nodes --max-unavailable-upgrade=unavailable-nodes

既存のノードプールのサージ アップグレードをオンまたはオフにする

既存のノードプールのアップグレード設定を更新するには、max-surge-upgrade フラグと max-unavailable-upgrade フラグを使用します。max-surge-upgrade0 よりも大きい値に設定すると、GKE によってサージノードが作成されます。max-surge-upgrade0 に設定すると、サージノードは作成されません。

gcloud beta container node-pools update node-pool-name \
  --cluster=cluster-name \
  --max-surge-upgrade=surge-nodes --max-unavailable-upgrade=unavailable-nodes

ノードプールでサージ アップグレードが有効になっていることを確認する

ノードプールでサージ アップグレードが有効になっていることを確認するには、gcloud を使用してクラスタのパラメータを表示します。

gcloud container node-pools describe node-pool-name \
--cluster=cluster-name

アップグレードの通知を受信する

GKE は Pub/Sub にアップグレードの通知を公開し、クラスタに関する情報を GKE から受け取るためのチャネルをユーザーに提供します。

詳細については、クラスタのアップグレード通知の受信をご覧ください。

次のステップ