Kubernetes 1.12: SIG-Storage Updates

# はじめに
本ドキュメントでは、Kubernetes 1.12.0のCHANGELOGからStorageに関連する機能について紹介します。

# 主な変更点
- [Kubernetes volume topology feature](https://github.com/kubernetes/features/issues/490) (Beta)  
 これにより、KubernetesはVolumeがプロビジョニングされている"zone"や"rack"を意識した操作ができるようになりました。
- [Dynamic maximum volume count](https://github.com/kubernetes/features/issues/554) (Beta)  
 これにより、ノード当たりのvolume typeの最大数を指定できるようになりました。(例えば、大きなノードには大きい数、小さなノードには小さな数の指定が可能となります)
- [Container Storage Interface(CSI](https://github.com/kubernetes/features/issues/178) (Bate) 
 次期KubernetesのリリースでBetaからGAへの昇格することを見越して次のサポートを行っています。
  - "mount namespace propagation"機能はGAに卒業
  - kubelet plugin registration mechanism をbetaに移動
  - トポロジー向けにCSI DriverをAphaサポートに追加
  - CSIを使った"local ephemeral volumes"(tokenやsecretのような情報を含むVolume)をAlphaサポートに追加
  
- [Volume snapshotting](https://github.com/kubernetes/features/issues/177) (Alpha)
 volume snapshotのcreate/deleteがCSI volumeでAlphaサポートとなりました。

# その他の変更点
- StorageClassのAllowedTopoligiesが追加され、setとmapについて検証されるようになりました。([#66843](https://github.com/kubernetes/kubernetes/pull/66843))
- PersistentVolumeが外部のPV binder(kube-schedulerなど)によってbound されている場合、負荷が高いと、対応するPVCがControllerのローカルキャッシュに同期されていないことがありました。そこで、Kubernetesでは、Volumeが間違って再利用されることを防ぐために、PVCをダブルチェックするようにしました。 ([#67062](https://github.com/kubernetes/kubernetes/pull/67062))
- Unmount パスにてEIOを無視します。XFSはターゲットがダウンしている時にFileSystemをダウンさせる且つUnmountパスに対してEIOを返します。 ([#67097](https://github.com/kubernetes/kubernetes/pull/67097))
- Podの起動時間が極端に長くなるのを防ぐため、PodのPVCがboundされた際、すぐにattachdetachコントローラが即時に接続するように変更されました。 ([#66863](https://github.com/kubernetes/kubernetes/pull/66863))
- Dynamic Provisioning にてiSCSIのPVをマルチパス構成で作成できるようになりました。2つ以上のマルチパス構成ではマルチデバイス構成(/dev/dm-XX)となりますがマルチデバイスが準備できるまで、kubeletにて10秒以上待つようになりました。1つだけの場合は、以前と同様即時に割り当てます。 ([#67140](https://github.com/kubernetes/kubernetes/pull/67140))
-  予め手動で/dev/disk/by-idのパスを作成しなくても、ScaleIOのVolumeを割り当てることができるようになりました。 ([#66174](https://github.com/kubernetes/kubernetes/pull/66174))
- downward API files によって付与されたマルチラインのAnnotationがソーティングされなくなりました。 ([#65992](https://github.com/kubernetes/kubernetes/pull/65992))
- CSI pluginのVolumeの仕様に volume modeのフィールドが追加されました。 ([#65456](https://github.com/kubernetes/kubernetes/pull/65456))
- PluginとNode名をdimensionsとして使用中のPVCの数のレポートに追加しました。これにより、attach/detachに関するトラブルシューティングに役に立ちます。 ([#64527](https://github.com/kubernetes/kubernetes/pull/64527))
- volume snapshot のデータソースからvolumeをrestoreする機能を追加しました。 ([#67087](https://github.com/kubernetes/kubernetes/pull/67087))
- iSCSI volumeをattachした際、対象のLUNのみScanするようにします。detach時も同様です。これにより、kernel logの random I/O errors/timeouts、Blockデバイスの操作遅延、稀に発生していたデータ破損の原因となっていた存在しないLUNへの参照を防ぎます。 ([#63176](https://github.com/kubernetes/kubernetes/pull/63176))
- directory とblock deviceがlocal volume pluginのFileSystem VolumeModeでサポートされました。 ([#63011](https://github.com/kubernetes/kubernetes/pull/63011))
- CSI のNodePublish call に、CSI volumeの要求のあったPodの情報を加えることができるようになりました。 ([#67945](https://github.com/kubernetes/kubernetes/pull/67945))
- CSI volumeにアタッチ制限(EBSm GCEPD, AzureDiskのアタッチの最大数制限など)が追加されました。 ([#67731](https://github.com/kubernetes/kubernetes/pull/67731))

# 参考情報
- [CHANGELOG#sig-storage](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md#sig-storage) 
- [Other Notable Changes#sig-storage](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md#sig-storage-1)