(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-12
(54)【発明の名称】コンテナオーケストレーションシステムにおけるファイルシステムへの機能の拡張
(51)【国際特許分類】
G06F 9/50 20060101AFI20240905BHJP
【FI】
G06F9/50 120Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024515092
(86)(22)【出願日】2022-08-29
(85)【翻訳文提出日】2024-04-12
(86)【国際出願番号】 US2022041789
(87)【国際公開番号】W WO2023038817
(87)【国際公開日】2023-03-16
(32)【優先日】2021-09-08
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】524075272
【氏名又は名称】タレス ディアイエス シーピーエル ユーエスエー インク.
(74)【代理人】
【識別番号】100086368
【氏名又は名称】萩原 誠
(72)【発明者】
【氏名】ホセ アール,サントス
(72)【発明者】
【氏名】パーサ サラティ,ベサガラハリー ラクシュマイアー
(72)【発明者】
【氏名】スティーヴン プラット
(72)【発明者】
【氏名】マヘッシュ モハン
(57)【要約】
拡張ストレージクラスを機能拡張と関連付けることにより、コンテナオーケストレーションシステムにおけるファイルシステムの機能的能力を拡張し、拡張ストレージクラスに属するデータストレージボリュームへのアクセスを拡張ファイルシステムによって処理する。拡張ストレージクラスに属する拡張ボリュームの定義を含むアプリケーションポッド構成の展開に応答して、拡張ボリュームをマウントすることを要求し、元のデータストレージボリュームをマウントするためのステージングポッドを作成し、コンテナオーケストレーションシステムにステージングポッドを展開させる。アプリケーションポッド内のコンテナによる拡張ボリュームに格納されているデータへのアクセスは、拡張ファイルシステムによって処理される。
【選択図】
図4
【特許請求の範囲】
【請求項1】
コンテナオーケストレーションシステムにおけるファイルシステムの能力を、前記コンテナオーケストレーションシステムの実行時環境に変更を加えることなく拡張する方法であって、ファイルシステム拡張が、それ以外の場合は前記コンテナオーケストレーションシステムの前記ファイルシステムにより提供されない機能を提供し、前記方法が、
-拡張ストレージクラスを、前記拡張ストレージクラスに属するデータストレージボリュームへのアクセスを拡張ファイルシステムによって処理する拡張と関連付けること、
-元のボリュームを前記拡張ストレージクラス以外のストレージクラスと関連付けること、
-前記拡張ストレージクラスに属する拡張ボリュームの定義を含むように構成されたアプリケーションポッドの展開に応答して、
・前記拡張ボリュームをマウントすることを要求すること、
・前記拡張ファイルシステムによって、前記元のデータストレージボリュームをマウントするためのステージングポッドを作成し、前記コンテナオーケストレーションシステムに前記ステージングポッドを展開させること、
・前記ステージングポッドによって、前記元のデータストレージボリュームをマウントすること、
・前記元のデータストレージボリュームのマウントを特定するパスを決定すること、
・前記元のデータストレージボリュームの前記マウントを特定する前記パスを使用し、前記元のデータストレージボリュームをデータソースとして使用して前記拡張ストレージクラスに属する前記拡張ボリュームをマウントすること、
・前記拡張ボリュームのマウントを前記アプリケーションポッドのコンテナに公開すること、及び
・前記アプリケーションポッドを実行フェーズに入れ、前記アプリケーションポッド内の前記コンテナによる前記拡張ボリュームに格納されているデータへのアクセスを前記拡張ファイルシステムによって処理すること
を含む方法。
【請求項2】
拡張される前記能力がファイルシステム階層化である、請求項1のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項3】
拡張される前記能力が、第1のボリュームを第2のボリュームに重ねて、前記第1のボリューム及び前記第2のボリュームを含む結合ボリュームを提供することである、請求項1又は2のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項4】
前記コンテナオーケストレーションシステムがKubernetesである、請求項1乃至3のいずれか一項のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項5】
前記元のボリュームを永続ボリューム及び対応する永続ボリューム要求として作成するステップを含む、請求項1のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項6】
前記拡張ボリュームを永続ボリューム及び対応する永続ボリューム要求として作成するステップを含む、請求項4又は5のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項7】
前記元のボリュームを一時ボリューム及び対応する一時ボリューム要求として作成するステップを含む、請求項4乃至6のいずれか一項のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項8】
前記拡張ボリュームを一時ボリューム及び対応する一時ボリューム要求として作成するステップを含む、請求項4乃至7のいずれか一項のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項9】
-前記拡張ボリュームにアプリケーションコンテナによってアクセスすること、
-前記拡張ボリュームへのアクセスを、前記拡張ストレージクラスと関連付けられたドライバを使用して前記アプリケーションコンテナによって整理すること
を更に含む、請求項1乃至8のいずれか一項のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項10】
前記拡張ストレージクラスと関連付けられた前記ドライバが、前記拡張ボリュームに格納されているデータに対する暗号化サービスを提供する、請求項1のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項11】
前記拡張ストレージクラスと関連付けられた前記ドライバが、前記拡張ボリュームに格納されているデータに対してアクセス制御ポリシーを実施する、請求項9又は10のコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法。
【請求項12】
コンテナオーケストレーションシステムであって、前記コンテナオーケストレーションシステムの実行時環境に変更を加えることなく、前記コンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによって、ファイルシステムの能力を拡張する能力を備え、ファイルシステム拡張が、それ以外の場合は前記コンテナオーケストレーションシステムの前記ファイルシステムにより提供されない機能を提供し、
-プロセッサ及びメモリを有する少なくとも1つのノードであって、前記メモリが前記プロセッサに
・拡張ストレージクラスと、前記拡張ストレージクラスに属するデータストレージボリュームへのアクセスが前記ファイルシステム拡張の階層化ファイルシステムドライバにより処理されるファイルシステム拡張との関連付けを受け入れること、
・前記拡張ストレージクラス以外のストレージクラスと元のボリュームとの関連付けを受け入れること
を行わせる命令を格納する少なくとも1つのノードを備え、
-前記メモリが更に、前記拡張ストレージクラスと関連付けられたエージェントであって、前記プロセッサに
・前記拡張ボリュームのマウント要求を受信すること、
・前記元のデータストレージボリュームをマウントするためのステージングポッドを作成し、前記コンテナオーケストレーションシステムに前記ステージングポッドを展開させること、
・前記元のデータストレージボリュームのマウントを特定するパスを決定すること、
・前記元のデータストレージボリュームの前記マウントを特定する前記パスを使用し、前記元のデータストレージボリュームをデータソースとして使用して前記拡張ストレージクラスに属する前記拡張ボリュームをマウントすること、
・前記拡張ボリュームのマウントを前記アプリケーションポッドのコンテナに公開すること
を行わせるエージェントを格納し、
-前記メモリが更に、前記ステージングポッドを含む命令であって、前記プロセッサに
・前記元のデータストレージボリュームをマウントすること
を行わせる命令を格納し、
-前記メモリが更に、前記プロセッサに、前記アプリケーションが前記拡張ボリュームの前記マウントの公開通知を受信したことに応答して、前記アプリケーションポッドを実行フェーズに入れさせる命令を格納し、前記アプリケーションポッド内の前記コンテナによる前記拡張ボリュームに格納されているデータへのアクセスを前記拡張ファイルシステムのドライバによって処理する
コンテナオーケストレーションシステム。
【請求項13】
前記機能拡張がファイルシステム階層化である、請求項12のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【請求項14】
前記機能拡張が第1のボリュームを第2のボリュームに重ねて、前記第1のボリューム及び前記第2のボリュームを含む結合ボリュームを提供することである、請求項12又は13のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【請求項15】
前記コンテナオーケストレーションシステムがKubernetesである、請求項12乃至14のいずれか一項のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【請求項16】
前記元のボリュームが永続ボリューム及び対応する永続ボリューム要求である、請求項12のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【請求項17】
前記拡張ボリュームが永続ボリューム及び対応する永続ボリューム要求である、請求項15又は16のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【請求項18】
前記元のボリュームが一時ボリューム及び対応する一時ボリューム要求である、請求項15乃至17のいずれか一項のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【請求項19】
前記拡張ボリュームが一時ボリューム及び対応する一時ボリューム要求である、請求項15乃至18のいずれか一項のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【請求項20】
前記拡張ボリュームへのアプリケーションコンテナによるアクセスを、前記拡張ストレージクラスと関連付けられたドライバによって整理するように構成された、請求項12乃至19のいずれか一項のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【請求項21】
前記拡張ストレージクラスと関連付けられた前記ドライバが、前記拡張ボリュームに格納されているデータに対する暗号化サービスを提供する、請求項12のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【請求項22】
前記拡張ストレージクラスと関連付けられた前記ドライバが、前記拡張ボリュームに格納されているデータに対する暗号化サービスを提供する、請求項20又は21のコンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによってファイルシステムの能力を拡張する能力を備えたコンテナオーケストレーションシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概してコンテナオーケストレーションシステムに係り、より具体的には、コンテナオーケストレーション実行時環境の変更を必要とせずに、コンテナオーケストレーションシステムにおけるファイルシステムの機能を拡張することに関する。
【背景技術】
【0002】
コンテナオーケストレーションシステムは、コンテナ化されたワークロード及びサービスを管理することによって分散アプリケーションの展開、保守、及びスケーリングを自動化し、宣言的構成と自動化の両方を促進する。コンテナ化されたシステムでは、カーネルにより、例えば、よく知られているコンテナオーケストレーションシステムKubernetesで使用される、コンテナと呼ばれることもある複数の分離されたユーザ空間インスタンスが可能になる。Kubernetesについては、参照により本明細書に組み込まれるhttps://kubernetes.ioで説明されている。また、多くの参考文献が存在し、例えば、B.Burns、J.Beda、及びK.Hightower、Kubernetes Up & Running、O’Reilly(2019年)が参照により本明細書に組み込まれる。
【0003】
ただし、Kubernetesなどのコンテナオーケストレーションシステムは、アプリケーション展開の状態を混乱させる拡張が制限されている。例えば、Kubernetesはファイルシステム階層化をサポートしていないため、暗号化及びアクセス制御ポリシーなどのサードパーティファイルシステム保護を、コンテナオーケストレーションシステムを通じて展開されたアプリケーションに追加するメカニズムを提供しない。
【0004】
上記のことから、コンテナオーケストレーションシステムにおいてファイルシステム階層化を提供すること、それによって暗号化及びアクセス制御ポリシーなどのファイルシステム保護をコンテナオーケストレーションシステムを通じて展開されたアプリケーションに提供するためのメカニズムを提供することを含む、公開後の拡張をコンテナオーケストレーションシステムを通じて展開されたアプリケーションに提供する改善された方法が必要であることは明らかである。
【発明の概要】
【0005】
本発明は、請求項1に記載の、コンテナオーケストレーションシステムの実行時環境に変更を加えることなく、コンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法、及び請求項12に記載のコンテナオーケストレーションシステムによる前述の問題の解決策を提供する。従属請求項では、本発明の好ましい実施形態が定義される。
【0006】
第1の発明の態様では、本発明は、コンテナオーケストレーションシステムの実行時環境に変更を加えることなく、コンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張する方法であって、ファイルシステム拡張が、それ以外の場合はコンテナオーケストレーションシステムのファイルシステムにより提供されない機能を提供し、方法が、
-拡張ストレージクラスを、拡張ストレージクラスに属するデータストレージボリュームへのアクセスを拡張ファイルシステムによって処理する拡張と関連付けること、
-元のボリュームを拡張ストレージクラス以外のストレージクラスと関連付けること、
-拡張ストレージクラスに属する拡張ボリュームの定義を含むように構成されたアプリケーションポッドの展開に応答して、
・拡張ボリュームをマウントすることを要求すること、
・拡張ファイルシステムによって、元のデータストレージボリュームをマウントするためのステージングポッドを作成し、コンテナオーケストレーションシステムにステージングポッドを展開させること、
・ステージングポッドによって、元のデータストレージボリュームをマウントすること、
・元のデータストレージボリュームのマウントを特定するパスを決定すること、
・元のデータストレージボリュームのマウントを特定するパスを使用し、元のデータストレージボリュームをデータソースとして使用して拡張ストレージクラスに属する拡張ボリュームをマウントすること、
・拡張ボリュームのマウントをアプリケーションポッドのコンテナに公開すること、及び
・アプリケーションポッドを実行フェーズに入れ、アプリケーションポッド内のコンテナによる拡張ボリュームに格納されているデータへのアクセスを、拡張ファイルシステムによって処理すること
を含む方法を提供する。
【0007】
コンテナオーケストレーションシステムにおけるファイルシステム機能を拡張することは、困難であることがわかっている。コンテナオーケストレーションシステム、例えばKubernetesは状態マシンとして動作する。このパラダイムは、コンテナ化されたアプリケーションの公開後に追加され得る変更を制限する。その結果、依然としてコンテナオーケストレーションを状態マシンとして動作させるパラダイム内で動作しながら、コンテナオーケストレーションファイルシステムの機能拡張を実現し得るメカニズムを提供することが望ましい。
【0008】
本発明のある実施形態は、コンテナオーケストレーションシステムの実行時環境に変更を加えることなく、Kubernetesなどのコンテナオーケストレーションシステムにおけるファイルシステムの能力を拡張し、ファイルシステム拡張が、それ以外の場合はコンテナオーケストレーションシステムのファイルシステムにより提供されない機能を提供する。
【0009】
この機能拡張は、拡張ストレージクラスを、拡張ストレージクラスに属するデータストレージボリュームへのアクセスを拡張ファイルシステムによって処理する拡張と関連付けること、元のボリュームを拡張ストレージクラス以外のストレージクラスと関連付けること、拡張ストレージクラスに属する拡張ボリュームの定義を含むように構成されたアプリケーションポッドの展開に応答して、拡張ボリュームをマウントすることを要求すること、拡張ファイルシステムによって、元のデータストレージボリュームをマウントするためのステージングポッドを作成し、コンテナオーケストレーションシステムにステージングポッドを展開させること、ステージングポッドによって、元のデータストレージボリュームをマウントすること、
元のデータストレージボリュームのマウントを特定するパスを決定すること、元のデータストレージボリュームのマウントを特定するパスを使用し、元のデータストレージボリュームをデータソースとして使用して拡張ストレージクラスに属する拡張ボリュームをマウントすること、拡張ボリュームのマウントをアプリケーションポッドのコンテナに公開すること、及びアプリケーションポッドを実行フェーズに入れ、アプリケーションポッド内のコンテナによる拡張ボリュームに格納されているデータへのアクセスを拡張ファイルシステムによって処理することによって達成される。
【0010】
ある実施形態において、コンテナオーケストレーションシステムにおけるファイルシステムの能力の拡張では、拡張能力がファイルシステム階層化であり、別の態様では、拡張能力は、第1のボリュームを第2のボリュームに重ねて、第1のボリューム及び第2のボリュームを含む結合ボリュームを提供することである。
【0011】
ある実施形態では、元のボリュームは、永続ボリューム及び対応する永続ボリューム要求として作成される。代替例では、元のボリュームは、一時ボリューム及び対応する一時ボリューム要求として作成される。
【0012】
ある実施形態では、拡張ボリュームは、永続ボリューム及び対応する永続ボリューム要求として作成される。代替例では、拡張ボリュームは、一時ボリューム及び対応する一時ボリューム要求である。
【0013】
ある実施形態では、拡張ボリュームはアプリケーションコンテナによってアクセスされ、そのアクセスは、拡張ストレージクラスと関連付けられたドライバによって整理され、拡張ストレージクラスと関連付けられたドライバは、例えば、拡張ボリュームに格納されているデータに対する暗号化サービスを提供したり、拡張ボリュームに格納されているデータに対してアクセス制御ポリシーを実施したりする。
【0014】
第2の発明の態様では、本発明は、コンテナオーケストレーションシステムであって、コンテナオーケストレーションシステムの実行時環境に変更を加えることなく、コンテナオーケストレーションシステムにより提供される元のデータストレージボリュームに機能拡張を提供することによって、ファイルシステムの能力を拡張する能力を備え、ファイルシステム拡張が、それ以外の場合はコンテナオーケストレーションシステムのファイルシステムにより提供されない機能を提供し、
-プロセッサ及びメモリを有する少なくとも1つのノードであって、メモリがプロセッサに
・拡張ストレージクラスと、拡張ストレージクラスに属するデータストレージボリュームへのアクセスがファイルシステム拡張の階層化ファイルシステムドライバにより処理されるファイルシステム拡張との関連付けを受け入れること、
・拡張ストレージクラス以外のストレージクラスと元のボリュームとの関連付けを受け入れること
を行わせる命令を格納する少なくとも1つのノードを備え、
-メモリが更に、拡張ストレージクラスと関連付けられたエージェントであって、プロセッサに
・拡張ボリュームのマウント要求を受信すること、
・元のデータストレージボリュームをマウントするためのステージングポッドを作成し、コンテナオーケストレーションシステムにステージングポッドを展開させること、
・元のデータストレージボリュームのマウントを特定するパスを決定すること、
・元のデータストレージボリュームのマウントを特定するパスを使用し、元のデータストレージボリュームをデータソースとして使用して拡張ストレージクラスに属する拡張ボリュームをマウントすること、
・拡張ボリュームのマウントをアプリケーションポッドのコンテナに公開すること
を行わせるエージェントを格納し、
-メモリが更に、ステージングポッドを含む命令であって、プロセッサに
・元のデータストレージボリュームをマウントすること
を行わせる命令を格納し、
-メモリが更に、プロセッサに、アプリケーションが拡張ボリュームのマウントの公開通知を受信したことに応答して、アプリケーションポッドを実行フェーズに入れさせる命令を格納し、アプリケーションポッド内のコンテナによる拡張ボリュームに格納されているデータへのアクセスが、拡張ファイルシステムのドライバによって処理される
コンテナオーケストレーションシステムを提供する。
【0015】
この明細書(特許請求の範囲、説明及び図面を含む)に記載される全ての特徴及び/又は記載される方法の全てのステップは、そのような相互に排他的な特徴及び/又はステップの組み合わせを除いて、任意の組み合わせで組み合わせることができる。
【図面の簡単な説明】
【0016】
本発明のこれら及び他の特徴及び利点は、図面を参照し、単なる例として示され、それに限定されるものではない本発明の好ましい実施形態から明らかとなる本発明の詳細な説明を考慮して明確に理解されることになる。
【0017】
【
図1】コンテナオーケストレーションシステムを使用して管理されるクラスタのブロック図。
【
図2】ストレージ、具体的には永続ストレージの作成及び消費に関するKubernetesクラスタの典型的なフローを示すフロー図。
【
図3】例示的な構成ファイルの実行から得られる例示的なクラスタを示す高レベルブロック図。
【
図4】コンテナオーケストレーションシステムにおけるファイルシステム機能の拡張をサポートするある実施形態を示す高レベルアーキテクチャ図。
【
図5】a、b、及びcは、コンテナオーケストレーションシステム内のアプリケーションポッドに拡張機能を提供するためのプロセスステップを示すタイミングシーケンス図。
【
図5a】コンテナオーケストレーションシステム内のアプリケーションポッドに拡張機能を提供するためのプロセスステップを示すタイミングシーケンス図。
【
図5b】コンテナオーケストレーションシステム内のアプリケーションポッドに拡張機能を提供するためのプロセスステップを示すタイミングシーケンス図。
【
図5c】コンテナオーケストレーションシステム内のアプリケーションポッドに拡張機能を提供するためのプロセスステップを示すタイミングシーケンス図。
【
図6】
図3に対応する一方、
図5のフローの結果を示すブロック図。
【発明を実施するための形態】
【0018】
当業者には理解されるように、本発明の態様は、身分証明書、電子デバイスベースのモジュール、又は電子デバイスの取り込まれた画像の品質を決定する方法として具現化されることがある。
【0019】
以下の詳細な説明では、本発明が実施され得る特定の実施形態を例示として示す添付図面を参照する。これらの実施形態は、当業者が本発明を実施できるように十分に詳細に説明されている。本発明の様々な実施形態が、異なっていても、必ずしも相互に排他的ではないことを理解されたい。例えば、一実施形態に関連して本明細書に記載される特定の特徴、構造、又は特性は、本発明の趣旨及び範囲から逸脱することなく、他の実施形態内で実装されることがある。また、開示された各実施形態内の個々の要素の位置又は配置が、本発明の趣旨及び範囲から逸脱することなく変更され得ることを理解されたい。したがって、以下の詳細な説明は限定的な意味に解釈されるべきではなく、本発明の範囲は、特許請求の範囲が権利を有する均等物の全範囲とともに、適切に解釈される添付の特許請求の範囲によってのみ定義される。図面において、同様の数字は、いくつかの図を通して同じ又は同様の機能を指す。
【0020】
以下の説明には、集積回路チップのプロセッサにより実行される様々な方法への言及が含まれる。当分野では一般的であるように、本明細書には、これらの方法又は方法ステップがソフトウェア命令又はソフトウェアモジュールによって実行されることを示す語句が存在する場合がある。当業者が知っているように、そのような説明は、プロセッサが実際に方法、ソフトウェア命令、及びソフトウェアモジュールを実行し、そのようなソフトウェア命令及びモジュールが命令メモリに格納されることを意味すると解釈されるべきである。
【0021】
本明細書で説明するテクノロジーは、コンテナオーケストレーションシステムにファイルシステム階層化を提供することを含む、コンテナオーケストレーションシステムを通じて展開されたアプリケーションに公開後の拡張を提供するためのメカニズムを提供し、それによって、アプリケーション自体の変更を必要とすることなく、コンテナオーケストレーションシステムを通じて展開されたアプリケーションへのファイルシステム暗号化及びアクセス制御ポリシーの追加を可能にする。これらのファイルシステム拡張は、コンテナオーケストレーションシステムにより提供される実行時環境の変更を必要とすることなく、コンテナ化されたアプリケーションに提供される。
【0022】
定義
クラスタとは、クラスタ管理者により集合的に管理される関連するマシンの集合である。例えば、クラスタ管理者は、Kubernetesの例では、kubectlとして知られているコマンドラインツールを通じてクラスタを管理することがある。
【0023】
クラスタを構成するマシンはノードと呼ばれる。ノードは仮想マシン又は物理マシンのいずれかである場合がある。ただし、仮想マシンは最終的には1つ以上の物理マシン上で実行されるため、ノードのクラスタの機能が向上すると、物理マシンの機能が向上する。
【0024】
クラスタには2種類のノード、すなわち、少なくともワーカノード及びマスタノードが存在する。コンテナ化されたアプリケーションがワーカノードにある。Kubernetesサービスは通常、マスタノードでホストされる。
【0025】
コンテナ、すなわちコンテナ化されたアプリケーションが実行される環境は、与えられたコンテナ内で実行されるコンテナ化されたアプリケーションに利用できる定義されたリソースのセットを提供する。コンテナには、コンテナ化されたアプリケーションが実行する必要がある全ての定義、すなわちランタイム、ライブラリ、ストレージ定義が含まれている。したがって、コンテナ化されたアプリケーションの開発者が、コンテナ化アプリケーションがどのマシンに展開されるかに関係なくコンテナ定義が同じままであるため、どこで実行されても正しく実行されることを期待することができる。
【0026】
Kubernetesは、コンテナをポッド内に配置することによってアプリケーションを実行する。ポッドは、Kubernetesにおける展開可能な最小単位である。したがって、ポッドにコンテナが1つだけ含まれている場合でも、そのコンテナはポッド内にある、すなわち、ポッドはコンテナの周囲にシェルを提供する。ポッド定義、又はポッド構成(ポッド構成ファイル)は、ポッドのストレージ要件を宣言する。
【0027】
図1は、例として上記の概念のいくつかを示している。この場合、クラスタ101はワーカノード103及びマスタノード105から構成される。ワーカノード103は3つのポッド107a~107cを含む。そしてこれらには、コンテナ109aから109gがそれぞれ含まれる。
【0028】
Kubernetesシステムの機能は、ワーカノード103及びマスタノード105にあるサービスを通じて提供される。したがって、ワーカノード103には、Kubernetesワーカノード(WN)システム110と呼ばれるポッドが含まれる。同様に、マスタノード105には、Kubernetesマスタノード(MN)システム112と呼ばれるポッドが含まれる。本開示に関連するこれらの詳細を以下に説明する。
【0029】
ワーカノード103で実行されるアプリケーションにサービスを提供するマスタノード105は、Kubernetesマスタノードシステム112にあるKubernetesシステムサービスを含むいくつかのコンポーネントを含む。これらには、ワーカノード103内のアプリケーションがクラスタとの通信に使用するアプリケーションインターフェイスサーバ(API)111が含まれる。更に、APIサーバ111は、コマンドラインツールkubectlに入力されたコマンドをサービスする。
【0030】
マスタノード105は、例えばKubernetesマスタノードシステム112内にコンテナストレージインターフェイス(CSI)サーバ113も含む。CSIサーバ113の役割は、コンテナ化されたアプリケーションにより使用されるサードパーティストレージプラグインを管理することである。これらの機能については、以下で詳細に説明する。
【0031】
マスタノード105は、例えば、Kubernetesマスタノードシステム112内にスケジューラ115も含む。スケジューラ115は、クラスタ101上で実行される様々なポッドの要件、及びノードの、例えば与えられたノードで利用可能なストレージの観点の能力に応じて、クラスタ内の特定のノードにポッドを割り当てる。
【0032】
マスタノード105には追加のコンポーネントが含まれる。ただし、これらのコンポーネントはこの考察には必要がない。
【0033】
Kubernetesは、ポッドを所望の状態に移行させようとするという意味で状態マシンである。ポッドライフサイクルは、いくつかのフェーズ、すなわち保留、実行、成功、及び失敗で構成される。Kubernetesは、ポッドを保留から終了フェーズの1つ、成功又は失敗に移行させようとする。当然のことながら、多くのポッドにとって、実行は意図的にシャットダウンするか、何らかのエラー状態によって終了しない限り、ポッドが維持されることが期待されるフェーズである場合がある。一般に、Kubernetesはエラーにより終了したポッドを再起動しようとし、クラスタを所望の状態に向けて移行させる。
【0034】
保留フェーズでは、ポッドがKubernetesクラスタに受け入れられている。ただし、少なくとも1つのコンテナには、例えばストレージの割り当てを含む、何らかの形式のセットアップが依然として必要である。
【0035】
実行フェーズでは、ポッドがノードに割り当てられており、ポッドの全てのコンテナが作成されている。少なくとも1つのコンテナが実行されているか又は起動されている。
【0036】
ポッド内の全てのコンテナがエラーなく正常に終了すると、ポッドは成功フェーズにある。成功フェーズにあるポッドは再起動されない。逆に、ポッドの全てのコンテナが終了し、少なくとも1つのポッドが異常終了した場合、ポッドは失敗フェーズにある。ポッド定義によって、失敗フェーズにある場合にポッドは自動的に再起動されることがある。
【0037】
ポッドが様々なフェーズの1つに存在する場合、コンテナはそれぞれ状態と関連付けられる。これらには、待機、実行、終了が含まれる。待機状態にあるコンテナが、起動を完了するのに必要な操作を実行している。実行コンテナとは、実行しているコンテナである。完了又は失敗したコンテナが終了状態にある。
【0038】
Kubernetesにおけるストレージは、一時的なものか永続的なものである可能性がある。一時ストレージは、ストレージを使用するポッドが実行されていないときに期限切れになる。ただし、永続ストレージは、それを使用するポッドが終了するときに期限切れにならない。
【0039】
図2は、ストレージ、具体的には永続ストレージの作成と消費に関するKubernetesクラスタの典型的なフローを示している。ここで考察する例では永続ボリュームを使用するが、説明する技術が一時ボリュームにも同様に適用できることに留意されたい。
【0040】
第1のステップは、クラスタ管理者が、例えばコマンドラインツールkubectlを用いて永続ボリュームを作成することである(ステップ201)。表1は、永続ボリュームの作成用の例示的なYAMLファイルである(YAMLは、YAML Ain’t a Markup Langageの再帰的頭字語である)(nfs-pv.yaml)。
【0041】
1 apiバージョン:v1
2 種類:永続ボリューム
3 メタデータ:
4 名前:nfs-francisco
5 スペック:
6 容量:
7 ストレージ:5Gi
8 アクセスモード:
9 -複数のノードから読み書き可
10 ストレージクラス名:nfs
11 マウントオプション:
12 -ハード
13 -nfsvers=3.0
14 nfs:
15 パス:/home/francisco
16 サーバ:10.10.10.10
17 永続ボリューム再要求ポリシー:保持する
表1:nfs-pv.yaml
【0042】
ファイルnfs-pv.yamlは、nfs-francisco(行4)という名前の新しい永続ボリューム(行2)を作成する。これは、ストレージ容量が5Gi(行7)のネットワークファイルストレージ(nfs)ボリューム(ストレージクラス名(行10)で定義される)である。永続ボリューム作成は、ボリュームの場所、この場合は10.10.10.10という名前のサーバ(行16)上、及びその上のパス/home/francisco(行15)を指定する。
【0043】
永続ボリュームを使用するために、名前空間マネージャが、例えば、永続ボリューム又はその一部分を要求する(ステップ203)。これは、コマンドラインツールkubectlを使用して行われることがある。そのような要求は、永続ボリューム要求(PVC)と呼ばれる。表2は、永続ボリューム要求(PVC)を作成するための例示的なYAMLファイルである。
【0044】
1 apiバージョン:v1
2 種類:永続ボリューム要求
3 メタデータ:
4 名前:nfs-test-claim
5 スペック:
6 ストレージクラス名:nfs
7 アクセスモード:
8 -複数のノードから読み書き可
9 リソース:
10 リクエスト:
11 ストレージ:1Gi
表2:nfs-claim.yaml
【0045】
nfs-claim.yamlファイルは、1Gi(行11)の永続(行2)nfs(行6)ストレージを要求する。その永続ボリューム要求には、nfs-test-claimという名前が付けられる(行4)。スケジューラ115は、その永続ボリューム要求を、要求されたストレージを満たし得る任意の永続ボリューム、例えばステップ201で作成された永続ボリューム、すなわち表1の例におけるnfs-franciscoに割り当てることがある。
【0046】
次に永続ボリューム要求(PVC)がアプリケーションポッド構成、すなわちポッドを定義する構成ファイルに追加される(ステップ205)。ポッド構成ファイルは、そのポッド内のコンテナのディレクトリ構造を定義する。表3は、PVC nfs-test-claimを使用する例示的なポッド構成YAMLファイルである。
【0047】
1 apiバージョン:v1
2 種類:ポッド
3 メタデータ:
4 名前:nfs-demo
5 スペック:
6 ボリューム:
7 -名前:test-vol
8 永続ボリューム要求:
9 要求名:nfs-test-claim
10 コンテナ:
11 -名前:ubuntu
12 イメージ:ubuntu
13 ボリュームマウント:
14 -マウントパス:“/データ”
15 名前:test-vol
16 コマンド:
17 -“スリープ”
18 -“604800”
19 イメージプルポリシー:IfNotPresent
20 再起動ポリシー:常時
表3:demo-pod.yaml
【0048】
このファイルは、nfs-demoと呼ばれるポッドを構成する(
図3ではNfs-demoポッド305として示されている)。これには、ポッドの名前空間においてtest-vol(行15)と呼ばれる永続ボリューム要求nfs-test-claim(行9)の使用が含まれる。また、ubuntuと呼ばれるコンテナの使用も宣言し(行10~19)、ボリュームtest-volを/データ(行14)と呼ばれるマウントパスにマウントする必要がある(行13~15)。
【0049】
したがって、クラスタ内のポッドは、クラスタ内に独自の名前空間を有する可能性があるため、アプリケーションの機能グループをクラスタ内で分割することができる。
【0050】
次にアプリケーションポッドがKubernetesクラスタによって展開される(ステップ207)。アプリケーションポッドの展開の詳細はこの文献の範囲外である。
【0051】
ポッドを保留から実行に移行させるための起動動作中に、ポッドが必要とするリソースが設定される。そのプロセスにおいて、ポッドに1つ以上のボリューム要求が定義されていることをKubernetesが検出した場合、Kubernetesはそれらのボリューム要求をマウントする(ステップ209)。ボリューム要求に対応する永続ボリュームをマウントするためのメカニズムは、そのボリュームをサポートするドライバによって定義される。例えば、永続ボリュームがホストパスの場合、ホスト内のディレクトリがマウントされるが、永続ボリュームがネットワークストレージの場合、永続ボリューム定義にはサーバアドレスや認証トークンなどの他の多くのパラメータが含まれることがある。言い換えれば、永続ボリュームがどのようにマウントされるかは、その永続ボリュームに固有の属性である。
【0052】
永続ボリュームがマウントされると、これらのマウントはポッド内の全てのコンテナに公開される(ステップ211)。Kubernetesは各ポッドの定義された状態を維持しようとする状態マシンであるため、ポッドにより定義された全ての永続ボリュームが公開されると、それ以上永続ボリューム要求がポッドに追加されることがない。
【0053】
最後に、ポッド構成により定義された全ての永続ボリュームがマウントされた状態で、ポッドは実行フェーズに移行する(ステップ213)。
【0054】
図3は、表1、2、及び3の例の構成ファイルを実行した結果であり得る、クラスタ301を示す高レベルブロック図である。
【0055】
クラスタ301は、クラスタ管理者によって、例えばコマンドラインツールkubectlを使用して作成され、表1、2、及び3の構成ファイルを通じて構成されている。
【0056】
そのクラスタ301には、ポッドnfs-demo305のインスタンスが作成されたワーカノード303が含まれる。ポッドnfs-demo305は、マウント309(/データ)を含むコンテナubuntu307を含む。当然のことながら、クラスタ301は、より多くのノード及びより多くのポッドを含むことがあり、ポッド305は追加のコンテナを含むことがある。
【0057】
マウント309は、Kubernetes内部パス表現311を指し、これにより、マウント309が永続ボリューム要求313nfs-test-claim、ひいては永続ボリューム315nfs-fransiscoにリンクされ、最終的にネットワークファイルストレージ317にリンクされる。
【0058】
図4~
図6に示される実施形態では、上記のメカニズムは、展開及び公開されたポッドにより要求されるファイルシステムにより提供される機能に対する追加の機能を可能にするために拡張される。例えば、追加される機能は、暗号化サービスやアクセス制御サービスなどの機能を提供するファイルシステム階層化である場合がある。ファイルシステムに格納されているデータを消費することを目的としたアプリケーションが、ファイルシステムの暗号化又はアクセス制御メカニズムを必要とするシナリオを考える。そうするために、本明細書で以下に説明する実施形態は、そのような暗号化サービス又はアクセス制御メカニズムを提供するファイルシステム層を追加する。
【0059】
図4は、ファイルシステム機能の拡張、例えば、Kubernetesにおけるファイルシステム階層化をサポートし、具体的にはKubernetesクラスタに展開されるコンテナ化されたアプリケーションに暗号化サービスを含むファイルアクセス制御メカニズムを提供するための実施形態を示す高レベルアーキテクチャ図である。ファイルシステム階層化が
図4に示され、
図4と関連させて以下で説明されるが、この技術は、複数のファイルが1つとしてアクセスされ得る他のファイルシステム拡張、例えばファイルシステムオーバーレイをコンテナオーケストレーションシステムに提供するのに用いられることがある。
【0060】
図1のマスタノード105に対応するマスタノード405に位置するAPIサーバ111、CSIサーバ113、及びスケジューラ115(まとめてKubernetesマスタノード(MN)システム411)などの通常のKubernetesサービスは変わらない。
【0061】
マスタノード405は更に、拡張CSIドライバ417を備える。以下で考察するように、拡張CSIドライバ417は、例えば暗号化サービス及びアクセス制御サービスを格納されているデータに提供するために階層化ファイルシステムが提供される永続ボリュームを提供する。
【0062】
図1のワーカノード103に対応する、クラスタ401のワーカノード403は、それぞれが1つ以上のコンテナ409を有するアプリケーションポッド407を含む。アプリケーションポッド407は1つだけ示されているが、ワーカノード403に含まれ得るポッドの数に理論的な制限がないことを理解されたい。
【0063】
ワーカノード403は更に、拡張CSIドライバ417に対応する拡張CSIエージェント423を含む。これらはまとめて拡張CSIシステムである。拡張CSI(EXT CSI)エージェント423の役割は、拡張CSIドライバ417からのサービスを必要とするアプリケーションポッドを認識することである。更に、拡張CSIドライバ417は、ファイル暗号化、復号化、鍵管理、及びデジタル署名などの暗号化サービス419を提供することがある。更に、拡張CSIドライバ417は、アクセス制御ポリシーサービス421を提供することがある(又は代替的に提供することがある)。
【0064】
ワーカノード403は更に、Kubernetesワーカノード(WN)システムポッド410内にKubernetesシステムのワーカノード部分を含む。
【0065】
図5は、拡張CSI(EXT CSI)サービスをアプリケーションポッド407に提供するためのプロセスステップを示すタイミングシーケンス図である。ステップの多くは、
図2のステップに直接対応する。これらのステップには一重引用符の付いた参照番号が付けられている。すなわち
図5のステップ201'は、
図2のステップ201に対応する。
【0066】
最初の2つのステップは、
図2のステップに類似している。ステップ203'の結果は、ステップ203と同様に、与えられた名前の永続ボリューム要求であることに留意されたい。この永続ボリューム要求は後のステップで参照され、ファイルシステム層をその永続ボリューム要求にリンクさせる。PVの作成(ステップ201’)及びPVCの作成(ステップ203')に応答して、Kubernetesマスタノードシステム411は、PV(ステップ501)及びPVC(ステップ503)をそれぞれ登録する。
【0067】
以下に、ステップ201'で作成された永続ボリューム要求の上にファイルシステム層を追加するためのメカニズムを説明する。その永続ボリューム要求は、元の永続ボリューム要求と呼ばれる。一実施形態では、元の永続ボリューム要求に追加されるファイルシステム層は、元の永続ボリュームを保護するために暗号化サービスを追加する。その意味で、元の永続ボリュームは、ファイルシステム層がその保護されていないボリュームを保護し、保護されたボリュームが生成されるまで、保護されていないボリュームとみなされることがある。
【0068】
通常、ステップ201'は、コマンドラインツールkubectlを使用してクラスタ管理者601によって実行される。代替的に、永続ボリュームが自動的に作成される。同様に、ステップ203'におけるPVCの作成は、特定のアプリケーションポッド407を担当する名前空間管理者603によって、又は自動化されたステップで実行されることがある。
【0069】
予備的な事項として、拡張CSIに対応する永続ボリュームのストレージクラスが、名前空間管理者603によって定義される(ステップ505)。表4は、拡張CSIのストレージクラスを宣言するための例示的なYAMLコードを示す。
【0070】
1 apiバージョン:storage.k8s.io/v1
2 種類:ストレージクラス
3 メタデータ:
4 名前:csi-test-sc
5 プロビジョナ:ext.csi
6 再要求ポリシー:保持する
7 ボリュームバインディングモード:即時
8 ボリューム拡張許可:真
9 パラメータ:
10 cmaddr:192.168.70.1
11 テスト_パラメータ:これはテストである
表4:extended-storage.yaml
【0071】
extended-storage.yamlファイルは、表4の例の場合、ストレージクラスの名前csi-test-sc(行4)を含む拡張永続ボリューム要求の属性を提供する。拡張CSIドライバ417及び拡張CSIエージェント423は、それぞれが異なる特性を有する複数のタイプのストレージクラスをサポートすることがある。
【0072】
extended-storage.yamlファイルはまた、ストレージクラスのプロビジョナが拡張CSIドライバ417及び拡張CSIエージェント423へのリンクであるext.csi(行5)であることを指定する。言い換えると、拡張CSIドライバ417及び拡張CSIエージェント423に対応するプロビジョナを有する永続ストレージ要求へのデータアクセスは、拡張CSIドライバ417及び拡張CSIエージェント423、まとめて拡張CSIシステムに向けられる。
【0073】
ストレージクラスファイルはまた、ストレージクラスと関連付けられたパラメータの一部の属性を定義する(行9~11)。ストレージクラスで提供されるこれらのパラメータは、ストレージクラスを使用してボリューム構成パラメータを提供するボリュームによって使用される。これらの構成パラメータは、鍵マネージャアドレス、セキュリティポリシー定義、暗号化鍵、認証トークンなどのいくつもの物である可能性がある。
【0074】
KubernetesMNシステム411が、プロビジョナが拡張CSI(EXT CSI)のプロバイダであるストレージクラスの宣言を受信するとき、KubernetesMNシステム411は、EXT CSIストレージクラスを登録する(ステップ507)。
【0075】
次に、名前空間管理者603は、以前に宣言された永続ボリューム要求に対して拡張永続ボリューム要求(E-PVC)を作成する(ステップ509)。この要求は、コマンドラインツールkubectlでYAMLファイルを実行することによって作成されることもある。表5は、ext csiシステムにより提供されるファイル階層化を、ステップ201'で定義された永続ボリュームに対してステップ203'で宣言された永続ボリューム要求のファイルシステム上に配置させる拡張永続ボリューム要求を作成するための例示的なYAMLファイルである。
【0076】
1 apiバージョン:v1
2 種類:永続ボリューム要求
3 メタデータ:
4 名前:extCSI-claim1
5 注釈:
6 extポリシー:ポリシー_1
7 スペック:
8 ストレージクラス名:csi-test-sc
9 アクセスモード:
10 -複数のノードから読み書き可
11 リソース:
12 リクエスト:
13 ストレージ:1Gi
14 データソース:
15 種類:永続ボリューム要求
16 名前:nfs-test-claim
表5: ext-csi-claim.yaml
【0077】
例えばアプリケーションポッド407の名前空間管理者603がコマンドラインツールkubectlを介して実行するこのyamlファイルは、EXT CSIシステムのサービスを利用し、ステップ505でext-csiストレージクラスとして設定されたストレージクラスcsi-test-sc(行8)を使用して永続ボリューム要求を作成し、ひいてはcsi-test-scストレージクラスのストレージ定義で与えられた規定を通じてEXT CSIシステムと関連付けられる。ストレージクラス名仕様は、(ストレージクラス宣言(ステップ501)で定義される)プロビジョナが永続ボリューム要求をEXT CSIシステムの範囲内に置くストレージクラスの名前に対応する名前を有する。
【0078】
作成された永続ボリューム要求は、名前(行4)、この例ではextCSI-claim1が与えられ、注釈(extポリシー)を使用して、作成された永続ボリューム要求と関連付けられることになるセキュリティポリシー、この例ではポリシー_1を定義する(行6)。セキュリティポリシーには、暗号化、デジタル署名、アクセス制御、認証などが含まれることがある。セキュリティポリシーを指定するために注釈を使用することが、ある実施形態において、セキュリティポリシーを階層化ファイルシステムにどのように追加できるかの一例として提供されることに留意されたい。
【0079】
EXT CSI永続ボリューム要求を作成するyamlファイルはまた、EXT CSI永続ボリューム要求に対応するデータソースを定義する。ある意味で、既存の永続ボリューム要求に対してEXT CSI永続ボリューム要求を作成する。本例では、これはデータソースフィールドを通じて定義され、この例では、データソースは、nfs-test-claimという名前の永続ボリューム要求(行16)である。注:これは、表2の永続ボリューム要求の名前である(ステップ203')。したがって、EXT CSI永続ボリューム要求である新しい永続ボリューム要求は、以前に作成された永続ボリューム要求をそのデータソースとして使用する。
【0080】
EXT CSIシステムに属するように定義されたストレージクラスの1つである(すなわち、ストレージクラスのプロビジョナはEXT CSIである(表4の行5))ストレージクラスを有する永続ボリューム要求を受信することに応答して、KubernetesMNシステム411は、EXT CSI永続ボリューム要求が作成されたこと及びその定義をEXT CSIドライバ417に通知する(ステップ511)。あらゆる永続ボリューム要求は永続ボリュームを必要とする。したがって、EXT CSIドライバ417は、受信した永続ボリューム要求のストレージクラス(この例では、csi-test-sc)を定義する構成ファイルと、EXT CSI永続ボリューム要求が最終的に戻って参照する基礎となる永続ボリューム、すなわち、この例ではnfs-franciscoという名前のステップ201’で定義された永続ボリュームとに基づいて、受信したEXT CSI永続ボリューム要求に対応する新しい仮想永続ボリュームを提供する(ステップ513)。
【0081】
拡張永続ボリューム要求を使用するために、EXT CSIシステムの拡張サービスを利用することになっているアプリケーションポッド407の名前空間管理者603は、EXT CSI永続ボリューム要求をアプリケーションポッド407の構成ファイルに追加する(ステップ515)。
【0082】
表6は、名前空間管理者603がどのようにしてEXT CSI永続ボリューム要求をポッド構成に追加し得るかを示すYAMLファイルである。
【0083】
1 apiバージョン:v1
2 種類:ポッド
3 メタデータ:
4 名前:ext-csi-demo
5 スペック:
6 ボリューム:
7 -名前:test-vol
10 永続ボリューム要求:
11 要求名:ext-claim1
12 コンテナ:
13 -名前:ubuntu
14 イメージ:ubuntu
15 ボリュームマウント:
16 -マウントパス:“/データ”
17 名前:test-vol
18 コマンド:
19 -“スリープ”
20 -“604800”
21 イメージプルポリシー:IfNotPresent
22 再起動ポリシー:常時
表6:ext-csi-demo-pod.yaml
【0084】
例えば、名前空間管理者603が作成するこのYAMLファイル(ext-csi-demo-pod.yaml)は、EXT CSIシステムのサービスを利用することになるアプリケーションポッド407を構成する(ステップ515)。ポッド構成ファイル、例えばext-csi-demo-pod.yamlでは、ポッドにはext-csi-demoなどの名前が与えられる。
【0085】
構成ファイルは、要求名ext-claim1(表6の行11)を有する永続ボリューム要求として使用するボリュームを定義する。ext-claim1永続ボリューム要求はステップ509で拡張CSI永続ボリューム要求であると定義されているため、ポッドが展開されるとEXT CSIシステムが呼び出される。最終的に、これにより、ステップ501で定義された永続ボリュームの使用だけでなく、拡張CSI永続ボリューム要求に対して定義されたセキュリティポリシー(ポリシー_1(表5の行6))が適用される。
【0086】
したがって、要求名定義(行11)は、ポッド407、EXT CSIストレージ要求、元の永続ボリューム要求、及び元の永続ボリュームを結び付ける。
【0087】
拡張永続ボリューム要求を追加した後、名前空間管理者603は、コマンドラインツールkubectlを介して、アプリケーションポッド407を展開するように要求し(ステップ517)、KubernetesMNシステム411は、Kubernetesワーカノードシステム410にメッセージを送ることによってKubernetesワーカノード403によるポッド展開をスケジュールする(ステップ518)。次いでKubernetesWNシステム410は、アプリケーションを展開するのに必要なアクションを開始する(ステップ519)。
【0088】
ポッド構成ファイルは、マウントする必要があるボリュームを定義する(行15~17)。したがって、Kubernetesワーカノードシステム410は、ストレージクラスのオリジネータを決定し、そのストレージクラスと関連付けられたドライバにポッド構成内の任意のボリュームをマウントするように要求する(ステップ521)。ストレージクラスのドライバは
図5に示されていない。
【0089】
ボリュームをマウントするメカニズムは、ボリュームのオリジネータの権限内にある。したがって、マウントが(表6の例のように)EXT CSIボリュームのものである場合、KubernetesWNシステム410は、EXT CSIエージェント423を呼び出してボリュームをマウントする。したがって、EXT CSIエージェント423は、EXT CSIシステムがファイルサービス、例えば、暗号化又はアクセス制御を提供するボリュームの1つへのマウント要求を受信する。
【0090】
表3のYAMLファイルdemo-pod.yamlを表5のYAMLファイルext-csi-demo-pod.yamlと対比する。前者では、ポッドはnfsファイルストレージに直接アクセスする。後者では、nfsファイルストレージはEXT CSIシステム経由でアクセスされるため、ポッドは、EXT CSIシステムがEXT永続ボリューム要求のポリシー宣言を通じてボリュームと関連付けるセキュリティポリシーを利用する。
【0091】
EXT CSIシステムと関連付けられたストレージクラスの1つに属するボリュームへのマウント要求を受信することに応答して、EXT CSIエージェント423はステージングポッドを作成する。すなわち、Kubernetesシステム内部構成ファイルをKubernetesマスタノードシステム411に送信することによって、新しいポッドである拡張CSI永続ボリューム要求に対応するステージングポッド613(ステージングポッド613は、ステップ523より前には存在しないため破線で示されている)のポッド定義を作成し(ステップ523)、次いでKubernetesマスタノードシステム411は、ステージングポッド613の作成要求をKubernetesワーカノードシステム410に通知する。Kubernetesワーカノードシステム410は、Ext CSIエージェント423により提供される構成に従ってステージングポッド613を展開する。
【0092】
EXT CSIエージェント423は、ステージングポッド613が実行フェーズに入るのを待つ(ステップ524)。
【0093】
一方、システム内部構成ファイルであるステージングポッド613の構成ファイルは、ポッド構成ファイルと同様の構造を有し、検査のためにYAMLファイルにエクスポートされる可能性がある。表7は、ステージングポッド613の構成ファイルの内容を示すために提供されるエクスポートファイルの例である。
【0094】
1 種類:ポッド
2 apiバージョン:v1
3 メタデータ:
4 名前:ext-staging-podh6bj9
5 名前生成:ext-staging-pod
6 名前空間:デフォルト
7 uid:8ab1ef8a-d85f-4f03-b547
-48add37b046c
8 ラベル:
9 ext-csi:ext-staging-pod
10 ext-volume-1:b1807209-c932-11eb
-b4a1-72f29583c971
11 セルフリンク:/api/v1/namespaces/default/
pods/ext-staging-podh6bj9
12 スペック:
13 ボリューム:
14 -名前:ext-staging-volume-1
15 永続ボリューム要求:
16 要求名:nfs-test-claim
17 -名前:default-token-dxh2d
18 シークレット:
19 シークレット名:default-token-dxh2d
20 デフォルトモード:420
21 コンテナ:
22 -名前:ビジーボックス
23 イメージ:ビジーボックス
24 コマンド:
25 -テール
26 -‘-f’
27 -/dev/null
28 リソース:{}
29 ボリュームマウント:
30 -名前:ext-staging-volume-1
31 -マウントパス:/ext-staging-volume-1
32 -名前:default-token-dxh2d
33 読み取り専用:真
34 マウントパス:/var/run/secrets/
kubernetes.io/serviceaccount
35 イメージプルポリシー:IfNotPresent
36 再起動ポリシー:常時
37 終了猶予時間(秒):30
38 ノード名:ub20-work1
表7:ステージングポッド
【0095】
図6は、
図5のフローの結果を示す、
図3に対応するブロック図である。ext-csi-demoポッドの展開要求は、ポッド407のインスタンス化を引き起こしている。ポッド407は、マウント709(/データ)を含むコンテナ707を有する。Kubernetesシステムは、マウントが拡張CSI永続ストレージのものであると認識したため、EXT CSIエージェント423にメッセージを送って、ストレージクラスが関連付けられたボリュームのマウントを後者に警告した。Ext CSIエージェント423は、新しいポッドであるステージングポッド613を作成させた。
【0096】
ステージングポッドの永続ボリューム要求は、拡張永続ボリューム要求がリンクされている元の永続ボリューム要求(この例では、nfs-test-claim)を指す(行16)。
【0097】
全てのポッドと同様に、ステージングポッド613にはコンテナ、ここではステップ203'からの元の永続ボリューム要求を指すマウントパス(/ext-staging-volume-1)有するステージングコンテナ713が含まれる。
【0098】
図6に示すような実施形態では、クラスタが多くのノードを有する可能性があるが、ステージングポッド613は、EXT CSIエージェント423によってアプリケーションポッド407と同じワーカノード303に割り当てられる。
【0099】
ステージングポッドには、元の永続ボリューム要求に対するボリューム定義が含まれている。この例では、行14~16で、ボリューム名ext-staging-volume-1が永続ボリューム要求nfs-test-claim、すなわちEXT CSIシステムによって保護されることが求められる元の永続ボリューム要求上のボリュームであると定義される。
【0100】
ステージングポッドには、ボリュームext-staging-volume-1上にボリュームマウントを有するコンテナ(この例では、ビジーボックス(行22)と呼ばれる)も含まれている。したがって、ステージングポッドは、そのボリュームのドライバ、すなわち、この例ではnfsドライバに、元のボリュームをマウントするように要求する(ステップ525)。
【0101】
ステージングポッド613が必要とする永続ボリュームがマウントされると、ステージングポッド613は実行フェーズに入り(ステップ535)、実行フェーズに入ったことをKubernetesシステム411及び410に通知する。
【0102】
ステージングポッド613が実行されると、Kubernetesシステム(411及び410)は、ステージングポッドが実行されていることをExt CSIエージェント423に通知する(ステップ526)。
【0103】
EXT CSIエージェント423は、元の永続ボリューム要求のマウントを求めてノードを検索する(ステップ527)。ステージングポッド613が作成されると、EXT CSIエージェント423は、クラスタ内に元のデータがホスト上のどこにあるかを示すパスを構築するのに十分なメタデータを有する。
【0104】
その取り組みにおいて、EXT CSIエージェント423は、自由に利用できるいくつかの既知の静的情報を有している。
・Kubernetesノードポッドステージングディレクトリ(/var/lib/kubelet/pods/)
・クラスタから取得したメ
タデータフィールド:
・ポッドノード(例:ub20-work1)
・ポッドUID(例:8ab1ef8a-d85f-4f03-b547-48add37b046c)
・永続ボリューム名(例:nfs-francisco)
【0105】
まず、EXT CSIエージェント423は初期検索パス、すなわち
・(Kubernetesノードポッドステージング)+“/”+(ポッドUID)“/volumes”
・例:/var/lib/kubelet/pods/8ab1ef8a-d85f-4f03-b547-48add37b046c/volumes
を生成する。
【0106】
ステージングポッド613が作成されるノード上で、EXT CSIエージェント423は検索パス上で永続ボリューム名(nfs-francisco)を検索する。この例では、検索結果は
/var/lib/kubelet/pods/8ab1ef8a-d85f-4f03-b547-48add37b046c/volumes/kubernetes.io~nfs/nfs-francisco
となる。
【0107】
このパスには、元の永続ボリューム要求に対応し、EXT CSIシステムのファイルシステム階層化が適用されるマウントされたボリュームが含まれている。EXT CSIエージェント423が実行する検索の結果、元の永続ボリューム要求のボリュームパスが得られ、EXT CSIエージェント423は、そのパスを、EXT CSIシステムのサービスがその上に階層化されるデータソースとして保存する。
【0108】
元のデータへのパスを用いて、EXT CSIエージェント423は、元のPVCマウントをデータソースとして使用して階層化ファイルシステムをマウントする(ステップ529)。層が、ファイルシステムに何らかの追加機能、例えば暗号化サービスを追加する。
【0109】
ステップ527で決定され、ステップ529でマウントされた拡張永続ボリューム要求と関連付けられたマウントは、EXT CSIエージェント423によってアプリケーションポッドのコンテナに公開される(ステップ531)。
【0110】
図5のフローのこの時点で、ステージングポッド613とアプリケーションポッド407は両方とも実行中である(ステップ533)。
【0111】
上記の説明から、ファイルシステム能力の透過的な拡張、例えば、ファイルシステム階層化を、コンテナオーケストレーションシステム、例えば、Kubernetesと連携して提供するための効率的かつ安全なメカニズムが提供されることが明らかとなる。
【0112】
Kubernetesへの言及は一例である。本明細書で説明する技術は、変更すべきところは変更して、他のコンテナオーケストレーションシステムに適用可能である。
【0113】
本発明の特定の実施形態について説明及び図示したが、本発明は、そのように説明及び図示された部品の特定の形態又は配置に限定されるものではない。本発明は特許請求の範囲によってのみ限定される。
【国際調査報告】