はじめに
このエントリは、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 から送られる
AdmissionReview
API がadmission.k8s.io/v1
に昇格しました。 Webhookは、admissionReviewVersions:["v1"、"v1beta1"]
でv1
AdmissionReviewオブジェクトを受信するための設定を指定でき、送信されるのと同じ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 では
-
CustomResourceDefinition
APIが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 との間で送受信される
ConversionReview
API がapiextensions.k8s.io/v1
に昇格しました。 CustomResourceDefinition conversion webhook は、CustomResourceDefinition の conversionReviewVersions リストに v1 を含めることで、apiextensions.k8s.io/v1
バージョンのConversionReview
APIオブジェクトでの受信および応答をサポートすることを示すことができるようになりました。 conversion webhook は、受け取ったのと同じ apiVersion の ConversionReview オブジェクトで応答する必要があります。apiextensions.k8s.io/v1
ConversionReview
のレスポンスは、送信されたオブジェクトの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)