このページは、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
ノードプールの自動アップグレードの状態を確認するには、次の手順を行います。
Cloud Console で Google Kubernetes Engine のメニューに移動します。
鉛筆の形をしたクラスタの編集ボタンをクリックします。
[ノードプール] セクションで、確認するノードプールを選択します。
[管理] セクションで、[自動アップグレード] フィールドの値を表示します。
既存のノードプールのノードの自動アップグレードを有効にする
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
既存のノードプールの自動アップグレードを有効にするには、次の手順を行います。
Cloud Console で Google Kubernetes Engine のメニューに移動します。
鉛筆の形をしたクラスタの編集ボタンをクリックします。
[ノードプール] セクションで、変更するノードプールの名前をクリックし、[編集] をクリックします。
[自動アップグレードを有効化] をオンにします。
[保存] をクリックして、クラスタを変更します。
ノードをアップグレード可能にする際の制御を容易にするには、メンテナンスの時間枠と除外の構成を検討してください。
既存ノードプールのノードの自動アップグレードを無効にする
基盤となるクラスタがリリース チャンネルに登録されていない場合、既存のノードプールのノード自動アップグレードを無効にできます。その場合は、クラスタのノードが実行するバージョンがクラスタのバージョンと互換性のあることを確認してください。
gcloud
既存のノードプールの自動アップグレードを無効にするには、次のコマンドを実行します。
gcloud container node-pools update node-pool-name --cluster cluster-name \ --zone compute-zone --no-enable-autoupgrade
Console
既存のノードプールの自動アップグレードを無効にするには、次の手順を行います。
Cloud Console で Google Kubernetes Engine のメニューに移動します。
鉛筆の形をしたクラスタの編集ボタンをクリックします。
[ノードプール] セクションで、変更するノードプールの名前をクリックし、[編集] をクリックします。
[自動アップグレードを有効化] をオフにします。
[保存] をクリックして、クラスタを変更します。
ノードの自動アップグレードを有効にしてクラスタまたはノードプールを作成する
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-upgrade
を 0
よりも大きい値に設定すると、GKE によってサージノードが作成されます。max-surge-upgrade
を 0
に設定すると、サージノードは作成されません。
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 から受け取るためのチャネルをユーザーに提供します。
詳細については、クラスタのアップグレード通知の受信をご覧ください。
次のステップ
- ノードプールの詳細を確認する。
- クラスタとノードプールのアップグレードを確認する。
- クラスタまたはノードプールを手動でアップグレードする。