はじめに
本ドキュメントでは、Kubernetes 1.14.0のCHANGELOGをベースにStorageに関する機能について紹介します。
What's New (新着情報)
- 永続ボリュームのひとつであるLocal VolumeがGAになりました (#121)
- これにより、ユーザは安価で性能改善されたローカルストレージ(a.k.a, サーバ内蔵のSSD, HDD)を利用できます。
Known Issues (既知の問題)
- flexvolumeでマウントされたPVCに多数のディレクトリが存在する場合やディスクが一杯の場合、KubeletがRestartに失敗することがあります。(#75019)
Urgent Upgrade Notes (緊急アップグレードノート)
なし
Deprecations (廃止予定)
- 以下の機能がGAとなったため、関連するfeature gatesがdeprecateになりました。v1.15で削除予定です。
- CustomPodDNS
- HugePages
- MountPropagation
- PersistentLocalVolumes
Removed and deprecated metrics (削除と廃止予定のメトリックス)
なし
Notable Features (注目すべき機能)
-
Dynamic Volume provisioningされたVolumeのIn-treeからCSIへの移行のフレームワークをサポートし始めました。(#73653)
-
In-TreeのStorageClassのパラメータをCSIプライグインのパラメータに変換するTranslateInTreeStorageClassParametersToCSIが実装されました。
v1.14ではPoCとしてAWS,GCEがテストされています。詳しくは"In-tree Storage Plugin to CSI Migration Design Doc"を参照ください。
-
In-TreeのStorageClassのパラメータをCSIプライグインのパラメータに変換するTranslateInTreeStorageClassParametersToCSIが実装されました。
-
Nodeに接続できるCinder volumeの数の制限を指定できるようになりました。 (#72980)
-
Nodeに接続できるCinder volumeの数の制限をNode上のopenstack.confでも指定できるようになりました。 (#74542)
-
Addon managerにてCSINodeInfoとCSIDriverのCRDをインストールできるようになりました。(#72584)
-
Podから直接参照できるEphemeral CSI inline volumesをアルファ機能としてサポートしました。(#74086)
-
Kubernetes 1.13にてCSIがGAとなり、Storage関連がIn-treeからCSIへ移行させようという動きが活発化しています。
Secretなどの情報をPodからVolumeMountsで利用する場合、従来のCSIでは外部ストレージにVolumeを作り利用する必要がありました。
このEphemeral Inline CSI Volumeは、Podから直接参照できるEphemeralなVolumeを提供します。
詳細は、"Ephemeral Inline CSI Volume"を参照ください。
-
Kubernetes 1.13にてCSIがGAとなり、Storage関連がIn-treeからCSIへ移行させようという動きが活発化しています。
API Changes (API変更)
なし
Detailed Bug Fixes And Changes (詳細なバグ修正と変更)
-
ボリュームが接続中にiSCSI target(ストレージ側のiSCSI)が停止した場合、正常なパスがあっても全てエラーとなっていたバグを修正しました。 (#74306)
-
従来は、 マルチパス構成でiSCSIのVolumeが設定されていても、1つのパスでエラーが発生すると、全パスでエラーとなっていました。
そのため、新しいPodで正常なパスを使いVolumeを割り当てようとした場合、WaitForAttach()で待ち続けていました。
本修正により、マルチパスで設定されたパスを順次接続を試みるようになり、正常なパスがあれば接続できるようになります。
-
従来は、 マルチパス構成でiSCSIのVolumeが設定されていても、1つのパスでエラーが発生すると、全パスでエラーとなっていました。
-
StorageOS volume pluginがアップデート。これにより StorageOSのAPIが失敗した場合でもボリュームマウントが成功する問題を修正しました。 (#69782)
-
本バグはStorageOS CSI driverでは発生しません。
このバグにより、PVC/PVにより作成されたVolumeがKubernetes外からマウントされても、Podにマウントできてしまいました。場合によっては格納されたデータが壊れる状況です。
-
本バグはStorageOS CSI driverでは発生しません。
-
fsGroupを指定した場合に、ディレクトリのパーミッションに
group-executable
が付与されるように修正しました。(#73533) -
CSIのバージョンが1.1にアップデートされました。 (#75391)
-
vsphere cloud provider(VCP)にて、
allowedTopologies
で指定されたZoneに正しくVolumeがプロビジョニングされるように修正しました。(#72731) -
subPathExpr
がアルファ機能としてサポートされました。 (#71351)-
従来のsubPathに加え、環境変数をsubPathに展開可能なsubPathExprをアルファ機能としてサポートされました。
従来は、同じホスト上で複数のPodが同じVolume・同じファイル名のファイルに同時に書き込みを行うとファイルが壊れる可能性がありました。
アプリケーションのログファイルなどファイル名が変更できない場合などが該当します。
これを回避するには、mountPathでsubPathを指定するのが一つの解決方法でしたが、subPathはハードコーディングの指定しか出来ませんでした。
今回追加されたsubPathExpr
により、以下のように環境変数を直接指定できるようになりました。
-
従来のsubPathに加え、環境変数をsubPathに展開可能なsubPathExprをアルファ機能としてサポートされました。
volumeMounts:
- name: workdir1
mountPath: /logs
subPathExpr: $(POD_NAME)
- Dynamic Provisioningで作成されたPersistentVolumeがQuobyteのバックエンドで削除されないことがあったバグを修正しました。 (#68925)
External Dependencies (外部の依存関係)
なし