Kubernetes 1.15: SIG Apps の変更内容

# SIG Apps
[Kubernetes 1.15 の CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.15.md) から SIG Apps の取り組みについてまとめます。

その他の変更点については[Kubernetes 1.15: 変更点まとめ](https://qiita.com/uesyn/items/3def2beb32387e58af01)から参照できます。


## アップグレード時の注意点 (Urgent Upgrade Notes)

- Hyperkubeのshort aliases は削除されました。これは、hyperkubeのdocker imageがこれらのエイリアスを作成するからです。([#76953](https://github.com/kubernetes/kubernetes/pull/76953), [@Rand01ph](https://github.com/Rand01ph))
  - 📝[Dockerfileのこの部分で](https://github.com/kubernetes/kubernetes/blob/ef195428a0c5b16e3f3621b7fe59fa151ca28929/cluster/images/hyperkube/Dockerfile#L17-L29)でエイリアスを作成します。
  - :memo: `apiserver`, `controller-manager`, `proxy`, `scheduler` のエイリアスが削除されたため、利用していた方は `kube-apiserver` のように省略されていない指定に変更する必要があります。


## 注目機能 (Notable Features)

**Misc**

- [Object count quota](https://kubernetes.io/docs/concepts/policy/resource-quotas/#object-count-quota)はNamespacedなCustom Resourceにも対応しました。指定する際は`count/<resource>.<group>`とします。
  - 📝v1.9から利用できるようになっていた[Object Count Quota](https://kubernetes.io/docs/concepts/policy/resource-quotas/#object-count-quota)ですが、今まではCustom Resourceに対応していませんでした。
- CronJobリソースのEventにJobのStatusを追加しました。 ([#75712](https://github.com/kubernetes/kubernetes/pull/75712), [@danielqsj](https://github.com/danielqsj))
  - 📝EventのReasonの部分にStatus("Complete" or "Failed")が入るようになりました。
- Pod Disruption Budgetsに対してUpdateとPatchができるようになりました。 ([#69867](https://github.com/kubernetes/kubernetes/pull/69867), [@davidmccormick](https://github.com/davidmccormick))
  - 📝今まではPDBはImmutableで変更するためには一度削除する必要がありました。
- PodSecurityPolicyにRuntimeClassの制限とデフォルト値の設定を追加しました。 ([#73795](https://github.com/kubernetes/kubernetes/pull/73795),[@tallclair](https://github.com/tallclair))
  - 📝[RuntimeClass](https://kubernetes.io/docs/concepts/containers/runtime-class/)はコンテナを実行するコンテナランタイムを指定する機能です。

## その他の注目機能 (Other notable changes)

- `PersistentVolumeClaim`のSpecに`DataSource.Kind`を指定できるようになりました。これはcsi-provisionerが対応している場合に利用されます。([#76913](https://github.com/kubernetes/kubernetes/pull/76913), [@j-griffith](https://github.com/j-griffith))
  - 📝これはVolume Clone機能をサポートしているCSI向けの設定です。PersistentVolumeClaimにClone元となるリソースを指定することでクローンされたボリュームを利用できるようになります。[Volume CloneのKEP](https://github.com/kubernetes/enhancements/pull/642)
  - 📝VolumeのCloneはAlpha機能であるため、利用する場合はAPIServerに`--feature-gates=VolumePVCDataSource=true`の指定が必要です。
    - [Volume Cloneの概要](https://kubernetes.io/blog/2019/06/21/introducing-volume-cloning-alpha-for-kubernetes/)
- Nodeを削除した際DaemonSetが5分間処理されなくなるというDaemonSetControllerのバグを修正しました。([#76060](https://github.com/kubernetes/kubernetes/pull/76060), [@krzysztof-jastrzebski](https://github.com/krzysztof-jastrzebski))
- StatefulSet Controllerが30秒ごとに強制resyncしていた挙動を修正しました。([#75622](https://github.com/kubernetes/kubernetes/pull/75622), [@jonsabo](https://github.com/jonsabo))
- コントローラの時刻がNodeの時刻より遅れている場合にPodがUnavailableと判断されてしまうDaemonSetの処理を改善しました。([#77208](https://github.com/kubernetes/kubernetes/pull/77208), [@DaiHao](https://github.com/DaiHao))
  - 📝`DaemonSet.spec.minReadySeconds`が0以上の場合にこの処理が有効になるため、時刻ずれが発生しそうな環境では、この値を時刻ずれを許容する最大値に設定する必要があります（デフォルトは0です）
- Podの終了処理がスタックした場合にDaemonSetのローリングアップデートがハングしてしまうバグを修正しました。([#77773](https://github.com/kubernetes/kubernetes/pull/77773), [@DaiHao](https://github.com/DaiHao))
  - 📝NodeがNotReadyになった場合などPodの状態がTerminatingのまま変化しない状態に陥った場合にDaemonSetのローリングアップデートが動かなくなってしまう問題があったようです。https://github.com/kubernetes/kubernetes/issues/63465
- Route ControllerのDelete処理にレートリミットを適用しました。([#78581](https://github.com/kubernetes/kubernetes/pull/78581), [@andrewsykim](https://github.com/andrewsykim))
-  DaemonSetがPodを作るのに失敗した時、余計な数Podを期待してしまう問題を修正しました。([#74856](https://github.com/kubernetes/kubernetes/pull/74856), [@draveness](https://github.com/draveness))
- アルファ機能であるprocMountフィールドのデフォルト値が誤っているために、ワークロードオブジェクトの誤ったロールアウトが起きる問題を修正しました。 ([#78885](https://github.com/kubernetes/kubernetes/pull/78885), [@liggitt](https://github.com/liggitt))

## 以下の項目についてはSIG Appsに関係する変更はありませんでした。

- 1.15 What’s New
- Known Issues
- Deprecations and Removals
- Metrics Changes
- API Changes

## 所感

SIG Appsではドラスティックな機能追加はありませんでしたが、既存の動作のバグの修正がいくつか行われています。特にDaemonSet周りのバグの修正が多く、今までDaemonSetでおかしな挙動を経験したことがある方は変更内容に目を通しておくと良いと感じました。