はじめに
このエントリは、Kubernetes 1.16 の CHANGELOG からにAPI Changes についてまとめています。翻訳に合わせて補足を追記しています。その他の内容は Kubernetes 1.16 の変更点まとめを参照ください。
このエントリでは補足などの追加のコメントは
のあとに追加するようにしています。
API Changes
-
MutatingWebhookConfigurationとValidatingWebhookConfigurationの API がadmissionregistration.k8s.io/v1に昇格しました- v1 から
failurePolicyのデフォルト値がIgnoreからFailに変更されました-
Fail になったことによって Pod の ValidatingWebhookConfiguration を追加して Webhook 先起動しなくなると Pod がデプロイできなくなり修正も行えない問題が報告されています。移行するときは注意しましょう。
-
- v1 から
matchPolicyのデフォルト値がExactからEquivalentに変更されました - v1 から
timeoutのデフォルト値が30sから10sに変更されました - v1 から
sideEffectsのデフォルト値が削除され、必須フィールドとなりました。 v1 ではNoneかNoneOnDryRunのみが許可されています-
UnknownとSomeが削除されたようです。Unknownは以前はデフォルト値になっていましたがUnknownだと dryRun が動作せずkubectl diffなどを使うとエラーになっていましたが今後はそういったことはなくなりそうです。
-
-
admissionReviewVersionsのデフォルト値が削除され、必須フィールドとなりました。v1またはv1betaがサポートされています。 -
nameフィールドがadmissionregistration.k8s.io/v1のMutatingWebhookConfigurationとValidatingWebhookConfigurationオブジェクトの中でユニークな値を設定しなければいけないように変更されました
- v1 から
- admission webhook から送られる
AdmissionReviewAPI がadmission.k8s.io/v1に昇格しました。 Webhookは、admissionReviewVersions:["v1"、"v1beta1"]でv1AdmissionReviewオブジェクトを受信するための設定を指定でき、送信されるのと同じapiVersionのAPIオブジェクトで応答する必要があります。admission.k8s.io/v1を利用している webhooks はそのレスポンスで追加のバリデーションが行われます。- validating admission webhooks では
response.patchとresponse.patchTypeは許可されなくなりました -
apiVersion: "admission.k8s.io/v1"が必須になりました -
kind: "AdmissionReview"が必須になりました -
response.uid: "<value of request.uid>"が必須になりました -
response.patchが設定されている場合はresponse.patchType: "JSONPatch"が必須になりました (#80231, @liggitt) -
上記の MutatingWebhookConfigurationとValidatingWebhookConfigurationにあったadmissionReviewVersionsで指定して、Webhook はリクエストのオブジェクトと同じバージョンのレスポンスを返す必要があるようです
- validating admission webhooks では
-
CustomResourceDefinitionAPIがapiextensions.k8s.io/v1に昇格しました。変更点は以下のとおりです。- Validattion Schema による新しい Defaulting 機能の使用はv1に制限されています
-
spec.scopeのデフォルト値はNamespacedではなくなり、明示的な指定が必須になりました -
spec.versionは v1 で削除されました。代わりにspec.versionsを利用してください。 -
spec.validationは v1 で削除されました。代わりにspec.versions[*].schemaを利用してください。 -
spec.subresourcesは v1 で削除されました。代わりにspec.versions[*].subresourcesを利用してください。 -
spec.additionalPrinterColumnsは v1 で削除されました。代わりにspec.versions[*].additionalPrinterColumnsを利用してください。 -
spec.conversion.webhookClientConfigはspec.conversion.webhook.clientConfigに移動されました。 -
spec.conversion.conversionReviewVersionsはspec.conversion.webhook.conversionReviewVersionsに移動されました -
spec.versions[*].schema.openAPIV3Schemaは v1 の CustomResourceDefinitions を作成するときに必須になりました -
spec.preserveUnknownFields: trueは v1 の CustomResourceDefinitions を作成するときに許可されなくなりました。 代わりにスキーマの定義にx-kubernetes-preserve-unknown-fields: trueを追加してください。-
スキーマを定義するほうに定義するようになったようです。ソース
-
-
additionalPrinterColumnsの各カラム定義のJSONPathフィールドが削除され、v1 からjsonPathに変更されました。 (fixes https://github.com/kubernetes/kubernetes/issues/66531) -
apiextensions.k8s.io/v1beta1のCustomResourceDefinitionが廃止予定となり、 v1.19 で廃止される予定になりました。 (#79604, @liggitt)
- CR の変換のために CustomResourceDefinition conversion webhook との間で送受信される
ConversionReviewAPI がapiextensions.k8s.io/v1に昇格しました。 CustomResourceDefinition conversion webhook は、CustomResourceDefinition の conversionReviewVersions リストに v1 を含めることで、apiextensions.k8s.io/v1バージョンのConversionReviewAPIオブジェクトでの受信および応答をサポートすることを示すことができるようになりました。 conversion webhook は、受け取ったのと同じ apiVersion の ConversionReview オブジェクトで応答する必要があります。apiextensions.k8s.io/v1ConversionReviewのレスポンスは、送信されたオブジェクトのrequest.uidと一致するresponse.uidを指定する必要があります。 (#81476 、@liggitt) - RuntimeClasses を考慮したスケジューリングがサポートされました。RuntimeClasses は tolarations と nodeSelector で指定でき、RuntimeClass を使った Pod を作成すると PodSpec にそれらの指定がマージされます。
- CloudProvider によって報告される Node IP のセットが変更された場合でも、 kubelet は同じプライマリ Node IP をより確実に報告するようになりました。
(#79391, @danwinship)-
マージの方法に問題があったようでマージ方式に変更があったようです。
-
- ハッシュの変更を回避するために、コンテナハッシュ値を計算するときにnilまたは空のフィールドを省略します。 コンテナ仕様にゼロ以外のデフォルト値を持つ新しいフィールドの場合、ハッシュは変更されます。(#57741, @dixudx)
-
apiextensions.v1beta1.CustomResourceDefinitionStatusとapiextensions.v1.CustomResourceDefinitionStatusの conditions は必須ではなくなりオプショナルになりました。(#64996, @roycaihw) - CustomResourceDefinition の condition ステータスが変更されたときに
lastTransitionTimeが更新されるようになりました。(#69655, @CaoShuFeng)