Kubernetes 1.11: 主な変更点 (Major Themes) Part.1

## はじめに
このエントリは、[Kubernetes 1.11 の CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md) からKubernetes 1.11: 主な変更点 (Major Themes) の一部についてまとめています。翻訳に合わせて補足を追記しています。その他の内容は次のリンク先を参照してください。

- Kubernetes 1.11: 主な変更点 (Major Themes) Part.1
- [Kubernetes 1.11: 主な変更点 (Major Themes) Part.2](https://qiita.com/yuanying/items/a19541b402d5f24a1c20)
- [Kubernetes 1.11: Urgent Upgrade Notes と 既知の問題 (Known Issues)](https://qiita.com/shmurata/items/cffbcde7ec38c07e7d74)
- [Kubernetes 1.11: Before Upgrading](https://qiita.com/shmurata/items/a65e083cd91d42b241e7)
- [Kubernetes 1.11: 廃止予定の機能 (Deprecations) と 新機能 (New alpha features)](https://qiita.com/takuhiro/items/02dece392971d8cad158)

## SIG API Machinery
このリリースのSIG API Machineryは、主にCustomResourcesにフォーカスしています。

- CustomResourcesのSubresourcesがbetaとなり、デフォルトで有効になりました。
これにより`/status`サブリソースで更新できるフィールドは`.status`のみとなりました。
- `/status`サブリソースが有効な場合、CRD OpenAPIのバリデーションスキームのルートで`required`と`description`が使用できるようになりました。

    - :memo: CRDのValidationに[ついて](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#validation)

- 複数バージョンのCRDを作成できるようになりましたが、自動的に変換はされません。
- `spec.additionalPrinterColumns`フィールドを使用して、CRDの`kubectl get`で出力される内容を追加できるようになりました。

## SIG Auth
このリリースではユーザーが理解しやすいセキュリティ機能を提供することにフォーカスしています。

- RBACの[cluster role aggregation](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles) がstableになりました。
- client-goの[credential plugins](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins)は外部プラグインからTLSクレデンシャルを取得するサポートが追加され、betaになりました。

- 監査イベントにAPIリクエストの処理方法に関する情報が追加され、内容の確認が簡単になりました。
    - Authorizationでは、認可結果（"allow"か"forbid"）とその理由が、`authorization.k8s.io/decision`と`authorization.k8s.io/reason`アノテーションに記録されるようになりました。
    - PodSecurityPolicyアドミッションでは、ポリシー名が`podsecuritypolicy.admission.k8s.io/admit-policy`と`podsecuritypolicy.admission.k8s.io/validate-policy`アノテーションに記録されるようになりました。
- PodSecurityPolicyにはhostPathのボリュームマウントを、読み取り専用にする機能が追加されました。
- NodeRestrictionが有効な場合、kubeletはNodeオブジェクトの`taint`を編集する権限を持たないようなったため、使用するべきノードが把握しやすくなりました。

## SIG CLI
SIG CLIではkubectlコマンドの可読性、テスタビリティを向上するためにリファクタリングを行いました。
このリファクタリングにより次のリリースで、kubectlプラグインの開発がより簡単になります。

## SIG Instrumentation

- 新しいKubernetesの監視モデルに移行するための継続的な取り組みの一環として、Heapsterが非推奨になりました。
    - :memo: Heapsterはv1.13で[削除される予定](https://github.com/kubernetes/heapster/blob/master/docs/deprecation.md#summary)です。

- オートスケールのためにHeapsterを使用している場合、`Metrics Server`と`Custom Metrics API`に移行する必要があります。
詳細については、[新たに廃止予定となった機能（New Deprecations）](https://qiita.com/takuhiro/items/02dece392971d8cad158#%E6%96%B0%E3%81%9F%E3%81%AB%E5%BB%83%E6%AD%A2%E4%BA%88%E5%AE%9A%E3%81%A8%E3%81%AA%E3%81%A3%E3%81%9F%E6%A9%9F%E8%83%BDnew-deprecations)を参照してください。

## SIG Scheduling
- `Pod Priority`と`Preemption`はbetaになり、デフォルトで有効になりました。オペレーターにとって大きな変更になるため注意が必要です。
    - :memo: 詳細については、[Before Upgrading](https://qiita.com/shmurata/items/a65e083cd91d42b241e7#before-upgrading)を参照してください。
- スケジューラーのパフォーマンスと信頼性の向上に取り組みました。

## SIG Windows
- このリリースでは、Windows上で動作するPodとコンテナ用のKubernetes APIが多くサポートされました。

    - Pod、コンテナ、ログファイルシステムのメトリクス
    - `runAsUser`セキュリティコンテキスト
    - Azure diskの`Local persistent volumes`と`fstype`

- Windows Serverバージョン1803の改善により、次のような新しいストレージ機能が追加されました。

    - `ConfigMap`と`Secret`のボリュームマウント
    - SMBおよびiSCSIストレージ用のFlexvolumeプラグインが、[K8s Storage Plugins](https://github.com/Microsoft/K8s-Storage-Plugins) から利用可