3
2

More than 3 years have passed since last update.

Kubernetes 1.18: SIG APPS の変更内容

Last updated at Posted at 2020-04-03

はじめに

このページではKubernetes 1.18のChangelogを基に、SIG APPSに関連する変更内容をまとめています。

SIG-APPSはKubernetesのワークロードの扱いなどの変更を主に扱っているため、他のSIGと関係する変更が多いです。ワークロードの取り扱いやバグについては、この文書を参照してもらうのが良いですが、機能の詳細などは今後公開されていく他のSIGのまとめの方が詳しいと思います。(人によってまとめ方も違うので、それぞれ見て欲しいです。)

この記事は Kubernetes 1.18の変更点 まとめ の一部です。他の変更点もみてみてください。

:pencil: がついた文章は筆者の補足です。

※この記事は、Z Labの業務の一環として作成したものです。


Changes by Kind

Deprecation

kube-apiserver:

  • 以下の廃止予定だったAPIはもう提供されなくなります
    • 全ての apps/v1beta1, apps/v1beta2 のリソース。代わりに apps/v1を使ってください
    • extensions/v1beta1以下のdaemonsets, deployments, replicasetsのリソース。 代わりに apps/v1 を使ってください
    • extensions/v1beta1 以下の networkpolicies代わりにnetworking.k8s.io/v1` を使ってください
    • extensions/v1beta1 以下の podsecuritypolicies代わりにpolicy/v1beta1` を使ってください

API Change

なし

New API types/varsions

  • より良いIngress設定を実現する IngressClass リソースが追加されました。(#88509, @robscott) [SIG API Machinery, Apps, CLI, Network, Node and Testing]

New API fields:

  • autoscaling/v2beta2 HorizontalPodAutoscaler にspec.behaviorフィールドが追加されました。 これによりスケールの振る舞いを設定することができます。振る舞いの設定は スケールアップ、ダウンのそれぞれで指定することができます。ポリシーのリストとして安定性ウインドウを指定することができます。ポリシーは追加、削除されるPodの数の絶対値かパーセンテージを指定します。(#74525, @gliush) [SIG API Machinery, Apps, Autoscaling and CLI]
  • pathType というフィールドが追加され、これを使うことで リクエストに対してどのように指定されたパスをマッチさせるのかを示すことができます。値としてはExact, Prefix, ImplementationSpecific が設定できます。(#88587, @cmluciano) [SIG Apps, Cluster Lifecycle and Network]
  • Alphaの機能であるAnyVolumeDataSourceを使うことで PersistentVolumeClaimの spec.dataSourceで独自のデータソースを指定することができます。
  • Alphaの機能である ServiceAppProtocol を使うことで、 ServicePort, EndpointPortの定義に appProtocol を指定できるようになります。 (#88503, @robscott) [SIG Apps and Network]
  • Alphaの機能である ImmutableEphemeralVolumesを使うことで Secret, ConfigMapオブジェクトの immutable フィールドを指定し、これらが不変であることを示すことができます。(#86377, @wojtek-t)
    • :pencil: KEP: Immutable ephemeral volumes このフィールドを設定することでkubeletがConfigMap, Secretの変更を監視し、ファイルを書き換えるという仕事をする必要がなくなり、パフォーマンスが向上することが期待されます。

Other API changes:

なし

Configuration file changes:

kube-scheduler:

  • Kube-schedulerが1より多くのスケジューリングプロファイルで動作できるようになりました。プロファイルの選択には .spec.schedulerName を用います。 (#88285, @alculquicondor) [SIG Apps, Scheduling and Testing]

kube-proxy:

  • kube-controller-managerの 新しい--endpointslice-updates-batch-period フラグを使うことで Podの変化によって発生する endpointsliceの更新を削減することができます。 (#88745, @mborsz)

Features graduated to GA:

  • TaintBasedEvictions がGAとなりました (#87487, @skilxn-go)
  • Windows RunAsUserName がGAとなりました (#87790, @marosset) [SIG Apps and Windows]

Feature

なし

Other (Bug, Cleanup or Flake)

  • APIサーバが1.16以上で、kubeletが1.15以下の場合 PodのステータスであるpodIP, NodeのSpecであるpodCIDRを更新できていなかった問題を修正しました。(#88505, @liggitt) [SIG Apps and Network]
  • EndpointSliceがterminatingなPodのEndpointを含んでいた問題を修正しました。(#89056, @andrewsykim) [SIG Apps and Network]
  • EndpointSlice controllerの競合問題を修正し、EndpointSliceの外部からの変更を扱えるようにしました。(#85703, @robscott) [SIG Apps and Network]
  • EndpointSliceコントローラが共有オブジェクトを変更しようとするバグを修正しました。(#85368, @robscott) [SIG API Machinery, Apps and Network]
  • NodeのEventの "involevedObject"の"apiVersion"が設定されていないバグを修正しました。(#87537, @uthark) [SIG Apps and Node]
  • StatefulSetのconversionにより、同じマニフェストを何度もapplyすることができなかった問題を修正しました。(#87706, @liggitt) [SIG Apps and Testing]
  • Nodeが追加され、provider IDを決める際にエラーとなってしまうと、それ以降 provider IDが設定されないバグを修正しました。 (#87043, @zjs) [SIG Apps and Cloud Provider]
  • みなしごとなったControllerRevisionが再びStatefulSetのものにならないようにしました。(#86801, @likakuli), (#84984, @cofyc) [SIG Apps]
    • :pencil: ControllerRevisionは、普段は目にすることはないですが、StatefulSetなどの変更履歴を管理するためのオブジェクトです。deleteOptions.propagationPolicy=Orphanの場合、StatefulSetが削除されると、StatefulSetが管理するControllerRevisionはOwnerがなくなり、みなしごとなることが期待されるのですが、バグにより再び削除しようとしているStatafulSetがOwnerとなってしまう状態だったようです。このみなしごを再び引き取ってしまうバグは2つの要因があったようで上記2つのPRによりそれぞれが修正されています。
  • CSR controllerが扱う署名の証明書と鍵を、api-serverで行っているのと同じようにディスクから再読み込みできるようにしました。 (#86816, @deads2k) [SIG API Machinery, Apps and Auth]

まとめ

過去のAPIVersionは使えなくなりapps/v1が普通に使われるようになったことからも、Appsが担当しているワークロード周りのリソースの成熟を感じます。
新しい機能はネットワーク、ストレージなどとの連携がらみのものが多く、SIG-APPSの変更点から現在のKubernetesが力を入れている分野を俯瞰することができます。

既存のリソースは古いものに関してはバグもそれほどないように見えますが、StatefulSetなどはまだバグ修正が目立ちます。また、新機能追加やリファクタリングの影響で過去バージョンとの互換性が崩れてしまうことに対する修正も増えてきており、複雑化していくKubernetesのメンテナンスの難しさを感じました。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2