LoginSignup
3
0

More than 3 years have passed since last update.

Kubernetes 1.15: SIG-Storageの変更内容

Last updated at Posted at 2019-07-01

はじめに

本ドキュメントでは、Kubernetes 1.15.0のCHANGELOGをベースにSIG Storageに関する機能について紹介します。
:pencil: がついた文章は、CHANGELOGの公式内容ではなく筆者の補足です。

新着情報 (What's New)

CSIの継続的改善

Kubernetes v1.15において、SIG Storageは in-tree volume pluginsをContainer Storage Interface(CSI)への移行作業を継続しました。
SIG Storageはリサイジング、inline volumeなどの機能をCSIへ取り込みました。さらに、Kubernetesのstorage機能で存在していないvolume cloningのような新しいaplha機能をCSIに導入しました。
Volume cloningでは新しいボリュームのプロビジョニングを行うときに、別のPVCを"DataSource"として指定することができます。これにより、ストレージ装置が、ボリュームのクローニングをサポートし、CSIドライバで"CLONE_VOLUME"機能を実装している場合、新しいボリュームはソースボリュームのクローンになります。
これらの変更は、以下のKubernetesの機能に関連しています。
(#625)

:pencil: CSIにてVolume Cloningがサポートされました。使い方はこちらを参照。
KubernetesではAlpha機能のため、APIServerに--feature-gates=VolumePVCDataSource=trueの指定が必要になります。
ただし、残念ながら2019/7時点ではCSI Driverのサポートページの情報ではサポートしているCSIは不明な状況です。

既知の問題点 (Known Issues)

Storageに関するものはなし

アップグレード前に絶対に確認が必要な変更点 (Urgent Upgrade Notes)

  • CSI VolumeではNode.Status.Volumes.Attached.DevicePathフィールドの設定がなくなりました。このフィールドに依存する外部コントローラは修正が必要です。 (#75799, @msau42)
  • CSIに関するaplha版のCRDsが削除されました。(#75747, @msau42)
  • StorageObjectInUseProtection admission plugin がデフォルトで有効になりました。これにより、デフォルトで有効になっているadmission pluginは NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,StorageObjectInUseProtectionです。 以前に--admission-controlフラグを設定していなかった場合、クラスタの動作が標準的な動作に変わるかもしれませんので気をつけてください。(#74610, @oomichi)

非推奨or廃止される機能 (Deprecations and Removals)

  • 次の機能がGAになりました。これに関連するFeature gatesがDeprecationになりv1.17で削除される予定です。
    • GCERegionalPersistentDisk

メトリックスの変更 (Metrics Changes)

追加されたメトリックス (Added metrics )

  • CSI volumeの状態がkubelet volumeメトリックス経由で取得できるようになりました。 (#76188, @humblec)
  • kube-controller-managerとkubeletに、成功とエラーのステータスをカウントする新しいメトリックstorage_operation_status_countが追加されました。 (#75750, @msau42)

非推奨/変更されたメトリックス (Deprecated/changed metrics)

  • Volume 割当/解除のEnd to End のレイテンシーのためのvolume_operation_total_secondsメトリックの新しいセマンティックを紹介します。 従来のstorage_operation_duration_secondsメトリックは変更されませんが、以下のような潜在的な問題がありました。
    1. 外部のprovisioner/deleterを使ってボリュームの割当/削除を行なった際、storage_operation_duration_secondsでは、外部の操作の完了を待たずにレイテンシーのメトリックスを返します(実際には0に近い値となります)。これはvolume_operation_total_secondsを代わりに使うことで解決します。
    2. ボリュームの割当/削除中に一時的なエラーが発生した場合(例えば、ボリュームが deleteVolumeの呼び出し中にまだ使用中の場合)、オリジナルのstorage_operation_duration_secondsは、ボリュームが最終的に削除されるまで待たないため、間違ったレイテンシーのメトリックをレポートします。しかしながら、新しい実装のvolume_operation_total_secondsは、ボリュームの割当/削除が完全に実行されるのを待ちます。

潜在的なインパクト: SLO/alertがvolume_operaion_total_secondsをベースに定義されている場合、 より正確なメトリックとなったため以前のレポートの値よりも大きな値となるため、違反扱いになるかもしれません。このメトリックをヒストグラムとして定義していた場合、新しい値は分布を変えます。 (#78061, @yuxiangqian)

注目機能 (Notable Features)

Beta

  • オンラインボリュームの拡張(ExpandInUsePersistentVolumes)がベータになりました。これはデフォルトで有効に設定されています。 (#77755, @gnufied)

Alpha

  • kubeletはエフェメラルストレージ(一時利用のためのストレージ)のストレージ消費量を監視するため、(XFSおよび適切に構築されているext4ファイルシステムの)XFS quotaが利用できるようになりました。現在、emptyDirボリュームのみ利用可能なこの消費量のモニタリング方法は、従来のファイルシステムのツリーをなめる方法よりも早くて正確です。注釈として、これはQuotaの容量制限を強制するのではなく、単に消費量を監視するだけです。この機能を利用するにはfeature gateにLocalStorageCapacityIsolationFSQuotaMonitoring=trueを設定します。 ext4ファイルシステムの場合、mkfs.ext4 -O project <block_device>でファイルシステムを作成し、tune2fs -Q prjquota <block_device>を実行します。XFS ファイルシステムでは追加の準備作業は不要です。なお、このファイルシステムは/etc/fstab内でprojectオプションでマウント設定しておく必要があります。また、プライマリパーティションがrootファイルシステムである場合、GRUBのconfigファイルにrootflags=pquotaを追加してください。(#66928, @RobertKrawitz)

:pencil: 原文ではext4fs filesystemsと記載されていますが、ext4ファイルシステムの呼び名が一般的なため、上記はext4ファイルシステムと訳しています。

  • アルファ機能のCSIINlineVolumeが有効になっている場合、Inline CSI ephemeral volumeがPodSecurityPolicyでコントロールできるようになりました。 (#76915, @vladimirvivien)

Staging Repositories

  • Azure File pluginのサポートにcsi-translation-lib (CSIMigrationAzureFile)が追加されました。 (#78356, @andyzhangx)
  • Azure Disk pluginのサポートにcsi-translation-lib (CSIMigrationAzureDisk)が追加されました。 (#78330, @andyzhangx)

その他注目すべき変更 (Other notable changes)

  • AWSで無効なデバイスパスを待っているkubeletの問題を修正しました。(#78595, @gnufied)
  • StorageOSのボリュームは、StorageOSの管理用CLIとUIに正しい情報(ノードとマウント時間)を表示するようになりました。(#78522, @croomes)
  • Portworxのボリュームドライバーにてコントローラマネージャがクラッシュする問題を修正しました。 (#76341, @harsh-px)
  • 空の通常ファイルの場合、stat --printf %Fの実行結果がregular fileの代わりにregular empty fileを表示するようになりました。(#62159, @dixudx)
  • 異なるストレージオペレーションに異なるオペレーション名をつけることができるようになりました。これは、同じボリュームに2つのオペレーションが発生することを抑止しますが、もしオペレーションが変更された場合、指数関数的にリセットされます。(#75213, @gnufied)
  • AttachVolumeのストレージオペレーションのイベントのスパムを削減しました。(#75986, @mucahitkurt)
  • このリリースまで、iSCSI pluginはデバイスリスト内にパスが現れるまで10秒間待っていました。しかしながら、このタイムアウトは短い過ぎるか、もしくは多くのシステムのデバイス検出の時間よりも短いため、特定のデバイスを検出出来ませんでした。そこで、タイムアウトの時間を30秒に引き上げられました。これにより、デバイス検出によるマウントの問題を回避します。 (#78475, @humblec)
  • CSIのボリューム拡張にsecretを保持するフィールドを追加しました。(#77516, @gnufied)
  • Blockボリューム拡張のバグを修正しました。(#77317, @gnufied)

:pencil: ボリューム拡張の際、PVCのVolumeModeがfilesystemであるかをチェックするようになりました。

  • 接続制限に向け、BoundされていないPVCをカウントするようになりました。 (#73863, @gnufied)
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0