このドキュメントでは、さまざまなKubernetesコンポーネント間でサポートされる最大のバージョンの差異(バージョンスキュー)について説明します。特定のクラスターデプロイツールは、バージョンの差異に追加の制限を加える場合があります。
Kubernetesのバージョンはx.y.zの形式で表現され、xはメジャーバージョン、yはマイナーバージョン、zはパッチバージョンを指します。これはセマンティック バージョニングに従っています。詳細は、Kubernetesのリリースバージョニングを参照してください。
Kubernetesプロジェクトでは、最新の3つのマイナーリリースについてリリースブランチを管理しています。
セキュリティフィックスを含む適用可能な修正は、重大度や実行可能性によってはこれら3つのリリースブランチにバックポートされることもあります。パッチリリースは、定期的または必要に応じてこれらのブランチから分岐されます。パッチリリースマネージャーがこれを決定しています。パッチリリースマネージャーは各リリースのリリースチームのメンバーです。
マイナーリリースは約3ヶ月ごとに行われるため、それぞれのリリースブランチは約9ヶ月間メンテナンスされます。
高可用性 (HA) クラスターでは、最新および最古のkube-apiserverインスタンスがそれぞれ1つのマイナーバージョン内でなければなりません。
例:
kube-apiserverが1.13であるとしますkube-apiserverインスタンスは1.13および1.12がサポートされますkubeletはkube-apiserverより新しいものであってはならず、2つの古いマイナーバージョンまで有効です。
例:
kube-apiserverが1.13であるとしますkubeletは1.13、1.12および1.11がサポートされます備考: HAクラスター内のkube-apiserver間にバージョンの差異がある場合、有効なkubeletのバージョンは少なくなります。
例:
kube-apiserverインスタンスが1.13および1.12であるとしますkubeletは1.12および1.11がサポートされます(1.13はバージョン1.12のkube-apiserverよりも新しくなるためサポートされません)kube-controller-manager、kube-schedulerおよびcloud-controller-managerは、通信するkube-apiserverインスタンスよりも新しいバージョンであってはなりません。kube-apiserverのマイナーバージョンと一致することが期待されますが、1つ古いマイナーバージョンでも可能です(ライブアップグレードを可能にするため)。
例:
kube-apiserverが1.13であるとしますkube-controller-manager、kube-schedulerおよびcloud-controller-managerは1.13および1.12がサポートされます備考: HAクラスター内のkube-apiserver間にバージョンの差異があり、これらのコンポーネントがクラスター内のいずれかのkube-apiserverと通信する場合(たとえばロードバランサーを経由して)、コンポーネントの有効なバージョンは少なくなります。
例:
kube-apiserverインスタンスが1.13および1.12であるとしますkube-apiserverインスタンスへ配信するロードバランサーと通信するkube-controller-manager、kube-schedulerおよびcloud-controller-managerは1.12がサポートされます(1.13はバージョン1.12のkube-apiserverよりも新しくなるためサポートされません)kubectlはkube-apiserverの1つ以内のバージョン(古い、または新しいもの)をサポートします。
例:
kube-apiserverが1.13であるとしますkubectlは1.14、1.13および1.12がサポートされます備考: HAクラスター内のkube-apiserver間にバージョンの差異がある場合、有効なkubectlバージョンは少なくなります。
例:
kube-apiserverインスタンスが1.13および1.12であるとしますkubectlは1.13および1.12がサポートされます(ほかのバージョンでは、あるkube-apiserverコンポーネントからマイナーバージョンが2つ以上離れる可能性があります)コンポーネント間でサポートされるバージョンの差異は、コンポーネントをアップグレードする順序に影響されます。このセクションでは、既存のクラスターをバージョン1.nから1.(n+1)へ移行するために、コンポーネントをアップグレードする順序を説明します。
前提条件:
kube-apiserverインスタンスは1.nとしますkube-apiserverは1.nまたは1.(n+1)とします(最新と最古の間で、最大で1つのマイナーバージョンの差異となります)kube-controller-manager、kube-schedulerおよびcloud-controller-managerはバージョン1.nとします(必ず既存のAPIサーバーのバージョンよりも新しいものでなく、かつ新しいAPIサーバーのバージョンの1つ以内のマイナーバージョンとなります)kubeletインスタンスはバージョン1.nまたは1.(n-1)とします(必ず既存のAPIサーバーよりも新しいバージョンでなく、かつ新しいAPIサーバーのバージョンの2つ以内のマイナーバージョンとなります)kube-apiserverインスタンスが送信するこれらのデータを扱うことができます:
ValidatingWebhookConfigurationおよびMutatingWebhookConfigurationオブジェクトは、1.(n+1)で追加されたRESTリソースの新しいバージョンを含んで更新されます(または、v1.15から利用可能なmatchPolicy: Equivalentオプションを使用してください)kube-apiserverを1.(n+1)にアップグレードしてください。
備考: 非推奨APIおよびAPIの変更ガイドラインのプロジェクトポリシーにおいては、シングルインスタンスの場合でもkube-apiserverのアップグレードの際にマイナーバージョンをスキップしてはなりません。
前提条件:
kube-apiserverインスタンスが1.(n+1)であること(これらのコントロールプレーンコンポーネントが、クラスター内のkube-apiserverインスタンスと通信できるHAクラスターでは、これらのコンポーネントをアップグレードする前にすべてのkube-apiserverインスタンスをアップグレードしなければなりません)kube-controller-manager、kube-schedulerおよびcloud-controller-managerを1.(n+1)にアップグレードしてください。
前提条件:
kubeletと通信するkube-apiserverが1.(n+1)であること必要に応じて、kubeletインスタンスを1.(n+1)にアップグレードしてください(1.nや1.(n-1)のままにすることもできます)。
警告:kube-apiserverと2つのマイナーバージョンのkubeletインスタンスを使用してクラスターを実行させることは推奨されません:
- コントロールプレーンをアップグレードする前に、インスタンスを
kube-apiserverの1つのマイナーバージョン内にアップグレードさせる必要があります- メンテナンスされている3つのマイナーリリースよりも古いバージョンの
kubeletを実行する可能性が高まります
このページは役に立ちましたか?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to 問題を報告する or 改善を提案.