Kubernetes-api
Kubernetes-API
Kubernetes APIは、システムの宣言的な構成スキーマの基盤として機能します。 Kubectl コマンドラインツールを使用して、APIオブジェクトを作成、更新、削除、および取得できます。 Kubernetes APIは、Kubernetesのさまざまなコンポーネント間でコミュニケーターとして機能します。
KubernetesにAPIを追加する
Kubernetesに新しいAPIを追加すると、Kubernetesに新しい機能が追加され、Kubernetesの機能が向上します。 ただし、システムのコストと保守性も増加します。 コストと複雑さのバランスをとるために、いくつかのセットが定義されています。
追加されるAPIは、ユーザーの50%以上に役立つはずです。 Kubernetesに機能を実装する他の方法はありません。 例外的な状況については、Kubernetesのコミュニティミーティングで説明し、APIを追加します。
APIの変更
Kubernetesの機能を向上させるために、システムに継続的に変更が導入されます。 Kubernetesチームは、システムの既存の機能を削除したり、影響を与えたりせずにKubernetesに機能を追加します。
一般的なプロセスを実証するために、ここに(仮説的な)例があります-
- ユーザーがPodオブジェクトを*/api/v7beta1/…*にPOSTします
- JSONは v7beta1.Pod 構造に非整列化されます
- デフォルト値は v7beta1.Pod に適用されます
- v7beta1.Pod は api.Pod 構造に変換されます
- api.Pod が検証され、すべてのエラーがユーザーに返されます
- api.Pod はv6.Podに変換されます(v6は最新の安定バージョンであるため)
- v6.Pod はJSONにマーシャリングされ、 etcd に書き込まれます
Podオブジェクトが保存されたので、ユーザーはサポートされている任意のAPIバージョンでそのオブジェクトを取得できます。 たとえば-
- ユーザーは*/api/v5/…*からポッドを取得します
- JSONは etcd および unmarshalled から v6.Pod 構造に読み取られます
- デフォルト値は v6.Pod に適用されます
- v6.Pod はapi.Pod構造に変換されます
- api.Pod は v5.Pod 構造に変換されます
- v5.Pod はJSONにマーシャリングされ、ユーザーに送信されます
このプロセスの意味するところは、APIの変更は慎重にかつ下位互換性を持って行う必要があるということです。
APIバージョン管理
複数の構造のサポートを容易にするために、Kubernetesは、 /api/v1 または /apsi/extensions/v1beta1 などの異なるAPIパスで複数のAPIバージョンをサポートします
Kubernetesのバージョニング標準は、複数の標準で定義されています。
アルファレベル
- このバージョンにはアルファが含まれています(例: v1alpha1)
- このバージョンはバグがあるかもしれません。有効なバージョンにはバグがある可能性があります
- バグのサポートはいつでも削除できます。
- サポートが常に存在しない場合があるため、短期テストでのみ使用することをお勧めします。
ベータレベル
- バージョン名にベータ版が含まれています(例: v2beta3)
- コードは完全にテストされており、有効なバージョンは安定しているはずです。
- この機能のサポートは廃止されません。いくつかの小さな変更があるかもしれません。
- 以降のリリースで互換性のない変更が行われる可能性があるため、ビジネスクリティカルではない使用にのみ推奨されます。
安定したレベル
- バージョン名は vX です。 X は整数です。
- 機能の安定したバージョンは、多くの後続バージョンのリリースされたソフトウェアに表示されます。