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 のマイナー バージョンは、セキュリティ パッチやバグの修正を受け取れなくなります。

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

Google では、サポートが終了したバージョンに対するパッチや更新の提供は確約していません。

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

バージョニング体系

GKE は、GKE パッチ バージョンを Kubernetes のセマンティック バージョニング業界基準(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.x から 1.24.x ではなく 1.25.x にアップグレードできます。

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

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

または、必要なバージョンで新しいクラスタを作成し、ワークロードを再デプロイすることもできます。

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

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

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

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

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

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