Kubernetes v1.8: Deprecations

このエントリは、[Kubernetes v1.8 CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.8.md#v180) から Deprecations の内容をまとめています。その他の項目は下記リンク先を参照してください。

- [Kubernetes v1.8: 主な変更点 (Major Themes)](https://qiita.com/superbrothers/items/5a6a34c5eb919ce872aa)
- [Kubernetes v1.8: Before Upgrading](https://qiita.com/tkusumi/items/0962220a0700cb1f6eb3)
- [Kubernetes v1.8: 既知の問題 (Known Issues)](https://qiita.com/superbrothers/items/fe1e878cc1eb6d9faa96)
- [Kubernetes v1.8: Deprecations](https://qiita.com/tkusumi/items/43fd62c1da931443943a)

---

### Apps

- `extensions/v1beta1` の Deployment の `.spec.rollbackTo` フィールドが deprecated になりました
- `kubernetes.io/created-by` アノテーションが deprecated になり 1.9 で削除されます。どの Controller がオブジェクトを持っているか知りたい場合は [ControllerRef](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/controller-ref.md) を利用してください。
- `batch/v2alpha1.CronJob` が deprecated になりました。[`batch/v1beta1.CronJob`](https://kubernetes.io/docs/api-reference/v1.8/#cronjob-v1beta1-batch) を利用してください。
- `batch/v2alpha1.ScheduledJob` が削除されました。[`batch/v1beta1.CronJob`](https://kubernetes.io/docs/api-reference/v1.8/#cronjob-v1beta1-batch) を利用してください。

### Auth
- RBAC が `v1` になり `v1alpha1` のものは deprecated になりました。
  - https://kubernetes.io/docs/admin/authorization/rbac/
- `--experimental-bootstrap-token-auth` が deprecated になり、1.9 で削除されます。`--enable-bootstrap-token-auth`を利用してください。

### Autoscaling
- resource metrics API からメトリクスを取る方式ができたため、Heapster から直接メトリクスを取る方式が deprecated になりました。
  - v 1.8 では `--horizontal-pod-autoscaler-use-rest-clients` フラグを `true` に設定することでこの挙動有効にできます
  - v 1.9 ではこの挙動がデフォルトになり、`--horizontal-pod-autoscaler-use-rest-clients` フラグを `false` に設定することで無効にできるようになります

### Cluster Lifecycle
- kubelet の `--cloud-provider` フラグの `auto-detect` (自動検出) は deprecated になりました。
  - v1.8 の `--cloud-provider` の値は `auto-detect` になっています。GCE, AWS, Azure でしか動作しないので注意してください。
  - v1.9 では `""` (空) がデフォルトになり、どの Cloud Provider 拡張もデフォルトでは有効になりません。
  - どちらのバージョンでも、外部の Cloud Provider プラグインを使う場合は `--cloud-provider=external` を指定します。
  - 詳細は  [PR #51312](https://github.com/kubernetes/kubernetes/pull/51312)、[アナウンス](https://groups.google.com/forum/#!topic/kubernetes-dev/UAxwa2inbTA) をご覧ください。
- Admission Controller の `PersistentVolumeLabel` が deprecated になりました。
  - 代わりに Cloud Provider ごとの controller-manager(`cloud-controller-manage`) 内で `PersistentVolumeLabel` を設定します。
  - kubernetes ツリー内の GCE, AWS の Cloud Provider に依存していない限りは、`PersistentVolumeLabel` の Admission Controller は使用しないでください。

### OpenStack
- `kube-up` の `openstack-heat` プロバイダが deprecated になり将来削除されます。詳しくは [phase out cluster/ directory #49213](https://github.com/kubernetes/kubernetes/issues/49213) を参照してください。

### Scheduling
- Opaque Integer Resources (OIRs) が deprecated になり v1.9 で削除される予定です。代わりに [Extended Resources (ERs)](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#extended-resources) を利用してください。ドメイン名は `kubernetes.io/` のプレフィクス以外を自由に設定することができます。

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: myimage
    resources:
      requests:
        cpu: 2
        # この部分が extended resource
        example.com/foo: 1
```