リリース チャンネル

このトピックでは、Google Kubernetes Engine(GKE)で GKE クラスタのバージョニングとアップグレードを行う際のベスト プラクティスを提供するリリース チャンネルについて説明します。

概要

Kubernetes は、アップデートを頻繁にリリースして、セキュリティ アップデートの提供、既知の問題の修正、新機能の導入を行っています。リリース チャンネルを活用すると、クラスタにデプロイされたバージョンの安定性と機能セットのバランスを取ることができます。

リリース チャンネルに新しいクラスタを登録すると、Google によりクラスタとノードプールのバージョンとアップグレード サイクルが自動的に管理されます。すべてのチャンネルがサポート対象の GKE のリリースであり、一般提供(GA)と見なされます(ただし、個々の機能は必ずしも一般提供とは限りません)。これらのチャンネルの Kubernetes リリースは正式な Kubernetes リリースであり、一般提供とベータ版の両方の Kubernetes API が含まれています。新しい Kubernetes バージョンは、まず Rapid チャンネルにリリースされ、その後 Regular、Stable チャンネルに昇格されます。これにより、ビジネス、安定性、機能のニーズを満たすチャンネルをクラスタでサブスクライブできます。

デフォルトでは、GKE で作成される新しいクラスタは Regular リリース チャンネルに登録されます。

利用できるチャンネル

以下のリリース チャンネルが利用可能です。各チャンネルには、利用できる機能と更新チャーンの間にトレードオフ関係があります。認定基準はチャンネルごとに異なりますが、どのチャンネルもテスト済みの一般提供バージョンの Kubernetes を提供します。

チャンネル 新しい Kubernetes リリース提供 特性
Rapid アップストリーム オープンソースの一般提供から数週間* Kubernetes の最新リリースをできるだけ早く入手しておくと、一般提供が開始されたときにすぐに新しい GKE 機能を使用できます。クラスタは、パッチ バージョンが常に最新に保たれるように頻繁に更新され、新しい Kubernetes 機能を提供します。Rapid チャンネルに登録したクラスタでは一般提供バージョンが使用されますが、Rapid チャンネルは本番環境前の環境で新しい Kubernetes バージョンと API のテストに使用するのに最適です。Rapid チャンネルでは最新の GKE バージョンが提供されるため、これらのバージョンは GKE SLA から除外されます。このため、既知の解決策のない問題が存在する可能性があります。
Regular(デフォルト) Rapid でのリリースから 2~3 か月後* 比較的早い段階で、GKE と Kubernetes の新機能を使用できます。ただし、より長い期間かけて認定されたバージョンに限られます。機能の可用性とリリースの安定性のバランスが取れているため、ほとんどのユーザーにおすすめです。
Stable Regular でのリリースから 2~3 か月後* 新機能よりも安定性を優先します。このチャンネルの変更点と新バージョンは、Rapid チャンネルと Regular チャンネルで検証されてから、最後に公開されます。これによって、さらに時間をかけて検証できます。

*正確なリリース スケジュールは、オープンソース リリースやパッチ スケジュールなど、複数の要因によって異なり、変更される可能性があります。最新情報を入手するには、GKE リリースノートを確認するか、チャンネルの RSS フィードに登録してください。

クラスタをリリース チャンネルに登録すると、新しいバージョンがそのチャンネルで利用可能になった際にそのクラスタも自動的にアップグレードされます。

マイナー バージョンは、Rapid チャンネルで累積使用が蓄積され、安定性が確認されると、Regular チャンネルに昇格されます。最終的にマイナー バージョンは、高優先度のアップデートのみを提供する Stable チャンネルに昇格されます。昇格はそれぞれ、そのバージョンを実行しているクラスタで観測されたパフォーマンスに基づいて、段階的な安定性レベルと本番環境の対応状況を表します。

重要なセキュリティ パッチは、クラスタと Google のインフラストラクチャを保護するため、すべてのリリース チャンネルに配信されます。

チャンネルなし

クラスタのバージョンとノードをより直接的に管理する場合は、静的 GKE バージョンを指定して、リリース チャンネルにクラスタを登録しないこと(つまりチャネルなし)を選択できます。リリース チャンネルを使用しない場合は、ノードのアップグレード戦略の管理はお客様の責任となります。その場合も引き続き、Kubernetes のバージョンとバージョン スキューのサポート ポリシーを遵守し、サポートされている GKE バージョンを使用する必要があります。

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

チャンネルで利用できるバージョン

各リリース チャンネルには、デフォルト バージョンと、そのチャンネルで利用可能な一連のバージョンが備わっているため、本番環境をアップグレードする前に、新しく利用可能になったバージョンでのワークロードの運用性を確認できます。チャンネルで提供されるバージョンは、そのチャンネルの認定資格を満たしています。

  • 新しいパッチのリリースは、すべてのチャンネルでデフォルトになる少なくとも 1 週間前から利用可能になります。
  • 新しいマイナー リリースは、次のように利用可能になります。
    • Rapid チャンネルでデフォルトになる少なくとも 2 週間前。
    • Regular チャンネルと Stable チャンネルでデフォルトになる少なくとも 4 週間前。

GKE では、アップグレードに起因する中断を低減するため、利用可能なバージョンをテストすることをおすすめします。方法の 1 つとして、チャンネルで利用可能になったすべてのバージョンを受け取るよう本番前環境を登録できます。テストや検証により長い時間が必要な場合は、GKE で除外ウィンドウを使用して自動アップグレードを延期することをおすすめします。

GKE は、クラスタをデフォルトのバージョンに段階的に自動アップグレードします。アップグレード プロセスをより細かく制御する必要がある場合は、前もって利用可能なバージョンにアップグレードすることをおすすめします。GKE の自動アップグレード プロセスでは、クラスタ リソースのバージョンが自動アップグレードの対象となるバージョン以降の場合、それらのリソースに変更は加えられません。クラスタやノードは、事前に手動でアップグレードすることで自動アップグレード プロセスをスキップできます。

リリース チャンネルのデフォルト バージョンと利用可能なバージョンを表示するには、次のコマンドを実行します。COMPUTE_ZONE は、コンピューティング ゾーンに置き換えます。

gcloud container get-server-config --format "yaml(channels)" --zone COMPUTE_ZONE

チャンネルの最新情報の確認

リリース チャンネルの新機能については、リリースノートをご覧ください。全体を対象とするリリースノートだけではなく、各リリース チャンネルごとに個別のリリースノートも提供されています。

リリース チャンネル リリースノート
Rapid チャンネル HTML または Atom フィード
Regular チャンネル HTML または Atom フィード
Stable チャンネル HTML または Atom フィード

チャンネルの選び方

チャンネルには一般提供版の Kubernetes のみが含まれ、各チャンネルは Kubernetes および GKE リリースの品質レベルと成熟度を表します。次の図は、リリース チャンネルの導入サイクルを示しています。

リリース チャンネルの導入サイクル

新しい機能より成熟度が重要となる本番環境のワークロードには、Regular(デフォルト)チャンネルまたは Stable チャンネルを使用することをおすすめします。

  • 新機能を詳しくトラッキングする必要がある場合は、Regular チャネルの使用を検討してください。このチャンネルでは、Kubernetes OSS バージョンの安定性と鮮度のバランスが保たれます。
  • 要件が成熟度の場合(特に本番環境クラスタの場合)、Stable チャンネルを使用します。

GKE は、クラスタをチャンネルの品質基準に適合する新しいバージョンにアップグレードします。ただし、次の目的のために、事前にクラスタをアップグレードしておくことをおすすめします。

  • アップグレードの制御と業務時間との調整がしやすくなる。
  • 予測がしやすくなる。これは、リリース ターゲットを満たすクラスタ(つまり、次のターゲット バージョンに手動でアップグレードされたクラスタ)の自動アップグレードを GKE がスキップするためです。ノードは、コントロール プレーン(マスター)バージョンに合わせて、脆弱性やサポートされていないバージョン スキューから保護するために、選択したチャンネルの推奨バージョンに自動的にアップグレードされます。

リリース チャンネルへのクラスタの登録

リリース チャンネルには、新規または既存のクラスタを登録できます。

新しいクラスタの登録

リリース チャンネルで新しいクラスタを作成、登録するには、gcloud ツールまたは Google Cloud Console を使用します。デフォルトでは、新しいクラスタは Regular リリース チャンネルに自動的に登録されます。

Console

GKE Standard クラスタの場合、Google Cloud Console での作成時に別のチャネルを指定できます。

  1. Cloud Console で Google Kubernetes Engine ページに移動します。

    Google Kubernetes Engine に移動

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

  3. [Standard] セクションで [構成] をクリックします。

  4. [コントロール プレーンのバージョン] で、[リリース チャンネル] オプションがデフォルトで選択されています。

  5. [リリース チャンネル] プルダウン リストで、クラスタを登録するリリース チャンネルを選択するか、デフォルト値の [Regular チャンネル] のままにします。

  6. 必要に応じて、クラスタの作成を続行します。

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

gcloud

標準クラスタを作成して特定のリリース チャンネルに登録するには、次のコマンドを実行します。

gcloud container clusters create CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --release-channel CHANNEL \
    ADDITIONAL_FLAGS

Autopilot クラスタを作成して特定のリリース チャネルに登録するには、次のコマンドを実行します。

gcloud container clusters create-auto CLUSTER_NAME \
    --region=COMPUTE_REGION
    --release-channel CHANNEL \
    ADDITIONAL_FLAGS

次のように置き換えます。

  • CLUSTER_NAME: 新しいクラスタの名前。
  • リージョン クラスタの場合は、--region COMPUTE_REGION フラグを使用して、クラスタのリージョンを指定します。
  • ゾーンクラスタの場合は、--region COMPUTE_ZONE フラグを使用して、クラスタのゾーンを指定します。
  • CHANNEL: リリース チャンネルのタイプ。rapidregularstable のいずれか。
  • ADDITIONAL_FLAGS: クラスタの作成時に指定する必要がある他のフラグ。標準クラスタのオプション フラグのリストについては、gcloud container clusters create のドキュメントをご覧ください。Autopilot クラスタのオプション フラグのリストについては、gcloud container clusters create-auto のドキュメントをご覧ください。

既存クラスタの登録

クラスタ コントロール プレーンのバージョンがリリース チャンネルのデフォルトにアップグレード可能であれば、既存のクラスタをリリース チャンネルに登録できます。つまり、リリース チャンネルのデフォルト バージョンは、既存のコントロール プレーンのバージョンと同じか、最大でもマイナー バージョンが 1 つ大きいだけのものでなければなりません。

登録するには、目的の CHANNELクラスタ リリース チャンネルを更新します。

クラスタのチャンネルの確認

gcloud または Google Cloud Console を使用して、クラスタのリリース チャンネルを特定できます。

Console

  1. Cloud Console で Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. 検査するクラスタの名前をクリックします。

  3. [クラスタの基本] で、[リリース チャンネル] フィールドの値(Regular チャンネルなど)を確認します。

gcloud

gcloud container clusters describe CLUSTER_NAME \
    --zone COMPUTE_ZONE --format="value(releaseChannel.channel)"

以下を置き換えます。

新しいリリース チャンネルの選択

リリース チャンネル間の移行は限定的なシナリオでサポートされます。

Stable から Regular への移行など、マイナー バージョン 1 つのアップグレードとなる移行はサポートされます。

Kubernetes のマイナー バージョン間でのダウングレードにはリスクがあるため、Regular から Stable への移行などのダウングレードはできません。同様に、Stable から Rapid への移行など、マイナー バージョン 1 つを超えるアップグレードはサポートされていません。

新しいリリース チャンネルを選択するには、目的の CHANNELクラスタ リリース チャンネルを更新します。

新しいリリース チャンネルの選択がサポートされていない場合は、目的のチャンネルに新しいクラスタを作成し、ワークロードを移行することをおすすめします。既存のクラスタを使用する場合は、リリース チャンネルからの登録解除を手順に沿って行い、ターゲット リリース チャンネルでクラスタの Kubernetes マイナー バージョンが利用可能になるまで待ってから、ターゲット リリース チャンネルへの既存クラスタの登録を手順に沿って進めます。

リリース チャンネルの登録解除

チャンネルの登録を解除する場合、クラスタのノードプールでは、リリース チャンネルを無効にした後でも、自動アップグレードと自動修復は引き続き有効になります。クラスタがリリース チャンネルの登録を解除した後、手動でノードの自動アップグレードを無効にし、ノード自動修復を無効にできます。

クラスタでリリース チャンネルの登録を解除しても、手動アップグレードには引き続き次の制限があります。

リリース チャンネルの登録を解除するには、クラスタのリリース チャンネルを None の値に更新します。

gcloud container clusters update CLUSTER_NAME \
    --release-channel None

クラスタ リリース チャンネルの更新

既存のクラスタのリリース チャンネルのプロパティを編集するには、次のコマンドを実行します。

gcloud container clusters update CLUSTER_NAME \
    --release-channel CHANNEL

以下を置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • CHANNEL: 目的のリリース チャンネル。rapidregularstableNone のいずれか。

注意点

リリース チャンネルを使用するときは、次の注意事項に留意してください。

Rapid チャンネル クラスタとアルファ クラスタの違い

Rapid リリース チャンネルを使用して作成されたクラスタは、アルファ クラスタではありません。以下の点が異なります。

  • リリース チャンネルを使用するクラスタはアップグレード可能です。自動アップグレードが有効であり、無効にはできません。アルファ クラスタはアップグレードできません。
  • リリース チャンネルを使用するクラスタには有効期限がありません。アルファ クラスタは 30 日後に期限が切れます。
  • アルファ版 Kubernetes API は、リリース チャンネルを使用するクラスタでは有効化できません。

次のステップ