--- title: Kubernetes非推奨ポリシー content_type: concept weight: 40 --- このドキュメントではシステムのさまざまな側面に関する非推奨ポリシーについて詳しく説明します。 Kubernetesは多くのコンポーネントと多くのコントリビュータを持つ大規模なシステムです。 このようなソフトウェアでは、機能セットは時間の経過とともに自然に進化し、時には機能を削除する必要がある場合があります。 これにはAPI、フラグ、または機能全体が含まれることもあります。 既存のユーザーへの影響を避けるため、Kubernetesは削除される予定のシステムの側面については非推奨ポリシーに従っています。 ## API KubernetesはAPI駆動型のシステムであるため、問題領域の理解の進化を反映して時間の経過とともに進化してきました。 Kubernetes APIは実際は「APIグループ」と呼ばれる一連のAPIであり、各APIグループは個別にバージョン管理されています。 [APIバージョン](/docs/ja/reference/using-api/#api-versioning)は主に3つのトラックに分類され、それぞれに異なる非推奨ポリシーがあります: | 例 | トラック | |----------|-----------------------| | v1 | GA (一般提供、安定版) | | v1beta1 | Beta (プレリリース) | | v1alpha1 | Alpha (実験的) | Kubernetesの特定のリリースでは任意の数のAPIグループと任意の数のそれぞれのバージョンをサポートすることができます。 次のルールはAPIの要素の非推奨を管理します。これには以下が含まれます: * RESTリソース (別名 APIオブジェクト) * RESTリソースのフィールド * RESTリソースのアノテーション、"beta"アノテーションは含まれますが"alpha"アノテーションは含まれません * 列挙された値や定数値 * コンポーネントの設定構造 これらのルールは、masterまたはリリースブランチへの任意のコミット間ではなく、公式リリース間に適用されます。 **ルール #1: APIの要素はAPIグループのバージョンをインクリメントすることでもに削除することができます。** APIの要素が特定バージョンのAPIグループに追加されると、 トラックに関係なくそのバージョンから削除されたり、 大幅に挙動が変更されることはありません。 {{< note >}} 歴史的な理由により、「core」(グループ名なし)と「extensions」という2つの「monolithic」APIグループがあります。 リソースはこれらのレガシーなAPIグループからより特定のドメインに特化したAPIグループに段階的に移行されます。 {{< /note >}} **ルール #2: APIオブジェクトはいくつかのバージョンに存在しないRESTリソース全体を除き、 任意のリリース内のAPIバージョン間で情報を失うことなくラウンドトリップできる必要があります** 例えば、あるオブジェクトがv1として書き込まれその後v2として読み取られv1に変換された場合、 結果として得られるv1リソースは元のリソースと同一である必要があります。 v2における表現はv1とは異なるかもしれませんが、システムは両方向にそれらを変換する方法を知っています。 さらに、v2で追加された新しいフィールドはv1にラウンドトリップできる必要があります。 つまりv1では同等のフィールドを追加するかアノテーションとして表現する必要があるかもしれません。 **ルール #3: 特定のトラックのAPIバージョンは安定性の低いAPIバージョンを優先して非推奨になることはありません。** * GA APIバージョンは、betaおよびalpha APIバージョンに置き換えることができます。 * Beta APIバージョンは以前のbetaおよびalpha APIバージョンに置き換えることはできますが、GA APIバージョンに置き換えることは*できません*。 * Alpha APIバージョンは以前のalpha APIバージョンに置き換えることはできますが、GAまたはbeta APIバージョンに置き換えることはできません。 **ルール #4a: APIの有効期間はAPIの安定性レベルによって決まります** * GA APIバージョンは非推奨としてマークされることがありますが、Kubernetesのメジャーバージョン内で削除されることはありません。 * Beta APIバージョンは導入後9ヶ月または3つのマイナーリリース(いずれか長い方)以内に非推奨にされ、 非推奨後9ヶ月または3つのマイナーリリース(いずれか長い方)以内に提供されなくなります。 * Alpha APIバージョンは事前の非推奨通知なしにリリースから削除される場合があります。 これによりbeta APIバージョンのサポートは [最大2つのリリースのバージョンの差異](/ja/releases/version-skew-policy/)をカバーし、 APIが不安定なbetaバージョンで停滞し、beta APIのサポートが終了したときに本番稼働が中断されることはありません。 {{< note >}} GA APIを削除するKubernetesのメジャーバージョン改訂の計画は現在ありません。 {{< /note >}} {{< note >}} [#52185](https://github.com/kubernetes/kubernetes/issues/52185)が解決されるまで、 ストレージに永続化されているAPIバージョンは削除されません。 これらのバージョンのAPIエンドポイントの提供は無効にできます(このドキュメントの非推奨タイムラインに従います)が、 APIサーバーはストレージから以前永続化されたデータをデコード/変換できる機能を維持する必要があります。 {{< /note >}} **ルール #4b: 特定のグループの「優先」APIバージョンと「ストレージバージョン」は、 新しいバージョンと以前のバージョンの両方をサポートするリリースが行われるまで更新されない場合があります。** ユーザーはKubernetesの新しいリリースにアップグレードした後、 (新しいバージョンでのみ利用可能な機能を明示的に使用していない限り) 何も新しいAPIバージョンに変換することなく、また破損が発生することなく、 以前のリリースにロールバックできる必要があります。 これはオブジェクトの保存された表現において特に顕著です。 これらはすべて例を挙げて説明するのが最も適切です。新しいAPIグループを導入する Kubernetesリリース、バージョンXを想像してください。 新しいKubernetesリリースは約4ヶ月ごと(1年に3回)に行われます。 以下の表は一連の後続リリースでサポートされるAPIバージョンを示しています。
リリース | APIバージョン | 優先/ストレージバージョン | ノート |
---|---|---|---|
X | v1alpha1 | v1alpha1 | |
X+1 | v1alpha2 | v1alpha2 |
|
X+2 | v1beta1 | v1beta1 |
|
X+3 | v1beta2, v1beta1 (非推奨) | v1beta1 |
|
X+4 | v1beta2, v1beta1 (deprecated) | v1beta2 | |
X+5 | v1, v1beta1 (非推奨), v1beta2 (非推奨) | v1beta2 |
|
X+6 | v1, v1beta2 (非推奨) | v1 |
|
X+7 | v1, v1beta2 (非推奨) | v1 | |
X+8 | v2alpha1, v1 | v1 |
|
X+9 | v2alpha2, v1 | v1 |
|
X+10 | v2beta1, v1 | v1 |
|
X+11 | v2beta2, v2beta1 (非推奨), v1 | v1 |
|
X+12 | v2, v2beta2 (非推奨), v2beta1 (非推奨), v1 (非推奨) | v1 |
|
X+13 | v2, v2beta1 (非推奨), v2beta2 (非推奨), v1 (非推奨) | v2 | |
X+14 | v2, v2beta2 (非推奨), v1 (非推奨) | v2 |
|
X+15 | v2, v1 (非推奨) | v2 |
|