GKE のバージョニングとサポート


このページでは、Google Kubernetes Engine(GKE)のバージョニングと、バージョン サポートのポリシーについて説明します。現在のバージョンのロールアウトとサポート スケジュールについては、GKE リリース スケジュールをご覧ください。

バージョン サポート

現在、Kubernetes オープンソース ソフトウェア(OSS)コミュニティは、新機能や機能強化を盛り込んだマイナー バージョンを年 3 回リリースしています。各リリース サイクルは約 15 週間です。

Kubernetes 1.19 以降、OSS では各マイナー バージョンが 12 か月間サポートされます。サポートされているマイナー バージョンで見つかった重大なバグや脆弱性は、アドホック パッチ バージョンのリリースによって修正されます。バージョンのサポート カレンダーは、Kubernetes コミュニティによって随時更新される場合があります。

バージョンが Regular チャネルで利用可能になると、Google は GKE の各マイナー バージョンに対して合計で 14 か月間のサポートを提供します。ノードとノードプールのバージョンは、コントロール プレーンよりも 2 つ前までのマイナー バージョンにできますが、Kubernetes OSS バージョン スキュー ポリシーにより、コントロール プレーン バージョンよりも新しいバージョンにすることはできません。サポートと信頼性を維持するため、有効なバージョン スキューに関係なく、ノードでサポート対象のバージョンを使用する必要があります

サポート対象バージョンは、12 か月をすぎると、2 か月間のメンテナンス期間に入り、その後サポートが終了します。

GKE マイナー バージョンのライフサイクル

マイナー バージョンのライフサイクルの最初のフェーズは、サポート対象の GKE バージョンのリリースから始まります。サポート対象のマイナー バージョンを実行するクラスタは、報告されたバグやセキュリティの問題を修正するために定期的なパッチを受け取ります。現在の Kubernetes OSS コミュニティのバージョン サポート ポリシーに基づき、GKE はサポート対象のマイナー バージョンを 14 か月間維持します(Regular チャンネルのリリース後 12 か月間と、その後 2 か月間のメンテナンス期間)。メンテナンス期間中はメンテナンス バージョンで新しいノードプールの作成ができなくなりますが、メンテナンス バージョンを実行している既存のノードプールは引き続き稼働し続けます。

メンテナンス期間が終了すると、マイナー バージョンはサポートが終了して正式にサポート対象外となり、利用できなくなります。サポートが終了した GKE のマイナー バージョンには、セキュリティ パッチやバグの修正が適用されなくなります。サポートが終了したマイナー バージョンのパッチ バージョンは、サポート対象外であり使用できません。

GKE バージョン 1.19 以降では、サポート終了後にそのサポート対象外となったバージョンを実行しているノードがアップグレードされ、クラスタの健全性およびオープンソースのバージョン スキュー ポリシーとの整合性が確保されます。サポート対象外のバージョンを実行しているノードは、バージョンが終了してもすぐにアップグレードされない場合があり、実際のタイミングは Google の裁量で変わる可能性があります。

サポートが終了したバージョンへのパッチや更新の提供は確約できません。

まれに、Kubernetes OSS コミュニティのポリシーの変更、脆弱性の検出、効果的な解決策のない技術的な問題のために、GKE バージョンのメンテナンス期間やサポート終了日の変更が必要になる場合があります。使用可能な最新バージョンについては、GKE リリースノートをご覧ください。

バージョニング体系

GKE では、Kubernetes のセマンティック バージョニングの業界標準に GKE のパッチ バージョンを付加した形式(x.y.z-gke.N)を採用しています。

Kubernetes のメジャー バージョン(x)
メジャー バージョンは、下位非互換性の変更が公開 API に導入された場合に増加します。メジャー バージョンでは、Kubernetes バージョンが x.y から x+1.y に上がります。
Kubernetes のマイナー バージョン(y)
Kubernetes の新しいマイナー バージョンは、年 3 回リリースされます。各リリース サイクルは約 15 週間です。非推奨の API は、新しいマイナー バージョン(1.22 など)で削除される可能性があります。マイナー バージョンがリリースされるたびに Kubernetes のバージョンが 1.y から 1.y+1 に上がります。たとえば、Kubernetes 1.18 の次のマイナー リリースは Kubernetes 1.19 になります。
Kubernetes パッチリリース(z)
通常、GKE で使用される新しい Kubernetes のパッチリリース(1.18.6 など)は毎週提供されます。パッチリリースは、各ゾーンに段階的にロールアウトされます。
GKE パッチリリース(-gke.N)
-gke.N という接尾辞が付加されたパッチリリース(1.18.6-gke.N など)には、オープンソースのアップストリーム Kubernetes ソフトウェアに加えて GKE のセキュリティ アップデートやバグの修正が組み込まれています。これらのアップデートや修正は、Google Cloud との互換性と相互運用性を維持するために必要です。

利用可能なバージョンとデフォルト バージョンの確認

利用可能なバージョンについては、GKE リリースノートをご覧ください。

特定のゾーンで利用可能な Kubernetes のバージョンとデフォルト バージョンは、Google Cloud コンソールまたは Google Cloud CLI でも確認できます。

gcloud CLI を使用してバージョンを確認する

利用可能なバージョンとデフォルト バージョンを確認するには、クラスタタイプに応じて次のいずれかの gcloud コマンドを実行します。各タブで、特定のリリース チャンネルのバージョンまたはチャネルなし(静的)のバージョンを確認するためのコマンドを説明します。

Rapid

Rapid リリース チャンネルのデフォルトと使用可能なバージョンを確認するには、次のコマンドを実行します。

デフォルトのバージョン

gcloud container get-server-config --flatten="channels" --filter="channels.channel=RAPID" \
    --format="yaml(channels.channel,channels.defaultVersion)"

利用可能なバージョン

gcloud container get-server-config --flatten="channels" --filter="channels.channel=RAPID" \
    --format="yaml(channels.channel,channels.validVersions)"

Regular

Regular リリース チャンネルのデフォルトと使用可能なバージョンを確認するには、次のコマンドを実行します。

デフォルトのバージョン

gcloud container get-server-config --flatten="channels" --filter="channels.channel=REGULAR" \
    --format="yaml(channels.channel,channels.defaultVersion)"

利用可能なバージョン

gcloud container get-server-config --flatten="channels" --filter="channels.channel=REGULAR" \
    --format="yaml(channels.channel,channels.validVersions)"

Stable

Stable リリース チャンネルのデフォルトと使用可能なバージョンを確認するには、次のコマンドを実行します。

デフォルトのバージョン

gcloud container get-server-config --flatten="channels" --filter="channels.channel=STABLE" \
    --format="yaml(channels.channel,channels.defaultVersion)"

利用可能なバージョン

gcloud container get-server-config --flatten="channels" --filter="channels.channel=STABLE" \
    --format="yaml(channels.channel,channels.validVersions)"

チャンネルなし

チャンネルなし(静的)のデフォルト バージョンと使用可能なバージョンを確認するには、次のコマンドを実行します。

デフォルトのバージョン

gcloud container get-server-config --format="yaml(defaultClusterVersion)"

使用可能なコントロール プレーンのバージョン

gcloud container get-server-config --format="yaml(validMasterVersions)"

使用可能なノードのバージョン

gcloud container get-server-config --format="yaml(validNodeVersions)"

Google Cloud コンソールを使用してバージョンを確認する

利用可能なバージョンとデフォルト バージョンを確認するには、次の操作を行います。

  1. Google Cloud コンソールで Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. [ 作成] をクリックします。

  3. 標準クラスタモードを選択し、[構成] をクリックします。

  4. [ロケーション タイプ] セクションで、クラスタのロケーションと目的のロケーションを選択します。

  5. [コントロール プレーンのバージョン] セクションで、リリース チャンネルを選択します。チャンネルで利用可能なすべてのバージョンが一覧表示されます。デフォルト バージョンが自動的に選択されています。

クラスタ バージョンの指定

このセクションは、Standard モードで作成されたクラスタにのみ適用されます。

gcloud CLI を使用してクラスタを作成またはアップグレードする場合は、--cluster-version フラグを使用してクラスタ バージョンを指定できます。特定のバージョン(1.9.7-gke.N など)を使用できます。バージョンのエイリアスを使用することも可能です。

  • latest: クラスタのゾーンまたはリージョンの GKE で現在利用可能なサポート対象の Kubernetes バージョンのうち最も番号が大きいものを指定します。
  • 1.X: 1.X のマイナー バージョンのうち、最も番号が大きい有効なパッチ + gke.N パッチリリースを指定します。
  • 1.X.Y: 1.X.Y パッチリリースのうち、最も番号が大きい有効な gke.N パッチを指定します。
  • -: クラスタ コントロール プレーンの場合は、コントロール プレーンのデフォルト Kubernetes バージョンを指定します。ノードのアップグレードの場合は、クラスタ コントロール プレーンが実行しているバージョンを指定します。

バージョンに latest を指定してクラスタを作成またはアップグレードしても、自動アップグレードは行われません。クラスタ内のノードを常に最新の安定バージョンにするには、ノードの自動アップグレードを有効にします。

ノード バージョンの指定

このセクションは、Standard モードで作成されたクラスタにのみ適用されます。Autopilot クラスタでは、ノードは自動的にアップグレードされます。

ノードプールを作成またはアップグレードする際に、ノードプールのバージョンを指定できます。デフォルトでは、ノードはコントロール プレーンと同じバージョンの GKE を実行します。ノードは、コントロール プレーンよりも 2 つ前のマイナー バージョンより古いバージョンを実行できません。

まれなケースとして、クラスタのバージョンが利用できなくなってもノードのバージョンを使用できる場合があります。

バージョン サポートに関するよくある質問

各マイナー バージョンのサポート期間が開始されるのはいつですか?

Kubernetes のマイナー バージョンのサポートは、Regular リリース チャンネルで新しいクラスタを作成できるようになったときに開始されます。

Kubernetes マイナー バージョンの GKE によるサポート期間を教えてください。

GKE では、利用可能な各 Kubernetes のマイナー バージョンに対して 14 か月間のサポートを提供しています。バグやセキュリティの問題を修正するパッチは、各バージョンにサポート期間を通して提供されます。

GKE のマイナー バージョンのメンテナンス期間とサポート終了期間の違いは何ですか?

メンテナンス期間は、バージョンが間もなくサポート終了期間に入ることを意味します。サポート終了期間中、GKE のマイナー バージョンにセキュリティ パッチ、バグの修正、新機能は提供されません。

GKE で Kubernetes バージョンのサポートはいつ終了しますか?

Kubernetes のマイナー バージョンは、14 か月間のサポート期間が終了するとサポート対象外になります。

メンテナンス開始日はどうなりますか?

GKE は、リリースノート、プロジェクト担当者へのメール、GKE の通知などの既存のタッチポイントを使用して、今後のメンテナンスとバージョンのサポート終了についてお客様に通知します。メンテナンス バージョンを実行している既存のノードプールは引き続き機能しますが、メンテナンス バージョンで新しいノードプールは作成できなくなります。

サポート期間が終了するとどうなりますか?

サポート終了バージョンを実行しているお客様は、バージョンが終了する前にプロジェクトの連絡先に通知メールが届きます。GKE は、セキュリティと互換性を目的としてサポート終了バージョンを実行しているノードの自動アップグレードを段階的に開始します(この処理は自動アップグレードが有効かどうかにかかわらず行われます)。これは、サポート終了後に新しいセキュリティ パッチやバグ修正は行われないためです。サポート終了バージョンを実行しているクラスタまたはノードで問題が発生した場合は、Cloud カスタマーケアを利用する前に、サポート対象バージョンにアップグレードする必要があります。

クラスタの自動アップグレードが開始するのはいつですか?

クラスタ コントロール プレーンは、新しいクラスタ作成にそのコントロール プレーン バージョンが利用できなくなったときに、サポート対象のバージョンに自動的にアップグレードされます。

サポート対象外のバージョンを実行しているノードは、サポート終了日から 1 か月以内にサポート対象バージョンに自動アップグレードされるようにスケジュール設定されています。

クラスタのアップグレード中に GKE バージョンをスキップできますか?

GKE ではクラスタ コントロール プレーンのマイナー バージョンをスキップすることはできませんが、パッチ バージョンをスキップすることは可能です。ワーカーノードではマイナー バージョンをスキップできます。たとえば、ノードプールを 1.23 から 1.25 にアップグレードできます(1.24 はスキップ)。

複数のマイナー バージョン間でクラスタをアップグレードするには、コントロール プレーンをマイナー バージョンごとに 1 つずつアップグレードし、ワーカーノードを毎回同じバージョンにアップグレードします。たとえば、コントロール プレーンをバージョン 1.23 から 1.25 にアップグレードするには、まずバージョン 1.23 から 1.24 にアップグレードしてから、コントロール プレーンに合わせてワーカーノードをアップグレードします。この処理を繰り返してバージョン 1.24 から 1.25 にアップグレードします。

ワーカーノードをバージョンに合わせてアップグレードすると、バージョンのスキューを回避できます。バージョンのスキップは極力行わないことをおすすめします。ワーカーノード バージョンをスキップするとテスト範囲が広くなり、対応は可能ではあるものの、検討事項が多くなりがちです。

代替策として、目的のバージョンで新しいクラスタを作成し、ワークロードを再デプロイするという方法も一つです。

クラスタを Kubernetes バージョンに無期限に保持することはできますか?

いいえ。各 GKE バージョンは 14 か月間サポートされています。サポート終了後の GKE バージョンを使用してクラスタを運用すると、パッチやバグ修正が提供されないため、セキュリティ、信頼性、互換性について重大なリスクが生じます。

サポートを継続するため、どのくらいの頻度で Kubernetes バージョンをアップグレードする必要がありますか?

GKE バージョンのアップグレードによる運用の負担を軽減するため、リリース チャンネルを選択して、ノードの自動アップグレードを有効にすることをおすすめします。ただし、手動でアップグレードするときは、少なくとも 6 か月ごとにアップグレードを行って新しい機能を利用し、サポートされているバージョンを維持することをおすすめします。

GKE コントロール プレーンのロールアウト ポリシーを教えてください。

ご利用のクラスタがリリース チャンネルに登録されているかどうか、またはノードの自動アップグレードが無効になっているかどうかにかかわらず、クラスタ コントロール プレーンは常に定期的にアップグレードされます。詳細については、自動アップグレードをご覧ください。