(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024042878
(43)【公開日】2024-03-29
(54)【発明の名称】コンテナ管理装置、コンテナ管理方法及びプログラム
(51)【国際特許分類】
G06F 9/50 20060101AFI20240322BHJP
【FI】
G06F9/50 150A
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022147797
(22)【出願日】2022-09-16
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【弁理士】
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【弁理士】
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】澤田 聡史
(57)【要約】
【課題】多数のコンテナの配置を変更する場面において、コンテナの配置を変更する順番で最も適した手順を見つけ出すことができるコンテナ管理装置、コンテナ管理方法及びプログラムを提供する。
【解決手段】複数のコンテナそれぞれが実行されるノードを示すコンテナの配置について、効率的な処理が可能となるコンテナのノードへの配置案を導出する配置処理部と、コンテナの配置案が複数の場合に、配置案の配置へのコンテナのノード間の移動時のコンテナの状態に基づいて、配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な配置変更手順案を選択する最適手順処理部と、を備えるコンテナ管理装置。
【選択図】
図6
【特許請求の範囲】
【請求項1】
複数のコンテナそれぞれが実行されるノードを示す前記コンテナの配置について、効率的な処理が可能となる前記コンテナの前記ノードへの配置案を導出する配置処理部と、
前記コンテナの配置案が複数の場合に、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて、前記配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な前記配置変更手順案を選択する最適手順処理部と、
を備えるコンテナ管理装置。
【請求項2】
前記最適手順処理部は、前記ノードに配置される前記コンテナが使用するリソースに関する制約に基づいて前記配置変更手順案を選択する、
請求項1に記載のコンテナ管理装置。
【請求項3】
前記リソースに関する制約は、前記ノードに配置される前記コンテナが使用するリソースに関する制約に基づいての合計が、前記ノードの持つリソースを超えないことである、
請求項2に記載のコンテナ管理装置。
【請求項4】
前記最適手順処理部は、前記配置案の配置への前記コンテナの移動に関する指標に基づいて、複数の前記配置変更手順案の中から最適な配置変更手順案を選択する、
請求項1または請求項2に記載のコンテナ管理装置。
【請求項5】
前記指標は、前記配置案の配置への前記コンテナの移動時における前記ノードで起動する前記コンテナの数に基づく指標、または前記配置案の配置への前記コンテナの移動時における前記ノード間の前記コンテナ間の通信量に基づく指標のうちの1つである、
請求項4に記載のコンテナ管理装置。
【請求項6】
前記配置処理部は、
前記配置を変更する前の配置情報と、前記配置を変更した後の配置情報を比較し、前記コンテナを変更する手順のパターンを列挙し、
前記コンテナの移動に際してダウンタイムを発生させないために、移動先の前記ノードで新しいコンテナを起動し、リクエストが新しい前記コンテナへ流れるように変更し、その後、移動元の前記ノードで前記コンテナを停止する条件で前記コンテナを変更する手順のパターンを列挙する、
請求項1または請求項2に記載のコンテナ管理装置。
【請求項7】
前記ノード間を移動させる前記コンテナの数が複数である、
請求項1または請求項2に記載のコンテナ管理装置。
【請求項8】
前記最適手順処理部は、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて複数の前記配置変更手順案の中から最適な前記配置変更手順案を選択する際、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態が所定の条件を満たしていない配置変更手順案の処理を停止する、
請求項1または請求項2に記載のコンテナ管理装置。
【請求項9】
コンテナ管理装置が、
複数のコンテナそれぞれが実行されるノードを示す前記コンテナの配置について、効率的な処理が可能となる前記コンテナの前記ノードへの配置案を導出し、
前記コンテナの配置案が複数の場合に、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて、前記配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な前記配置変更手順案を選択する、
コンテナ管理方法。
【請求項10】
コンテナ管理装置のコンピュータに、
複数のコンテナそれぞれが実行されるノードを示す前記コンテナの配置について、効率的な処理が可能となる前記コンテナの前記ノードへの配置案を導出させ、
前記コンテナの配置案が複数の場合に、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて、前記配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な前記配置変更手順案を選択させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンテナ管理装置、コンテナ管理方法及びプログラムに関する。
【背景技術】
【0002】
コンテナは、ノード上で実行される。なお、コンテナとは、例えば、コンテナエンジンが、アプリケーションを動かすための前提条件であるOS(Operating System)やミドルウェア・アプリケーションそのものの一部を縦割りにパッケージ化したものである。例えばKubernetesなどのコンテナオーケストレーションツールを用いて、多数のコンテナがそれぞれ、多数のノードのいずれかの上で実行されるという形態が採用されている。このとき、要求される性能や使用するリソースの状況により、コンテナをどのノードで実行するかというコンテナの配置においては、コンテナの現在の配置を、適した配置に変更したい場面がある。
【0003】
あるコンテナの配置をダウンタイムなく変更するには、例えば新しいコンテナを立ち上げ、新しいコンテナへリクエストが振り分けられるようにルーティングを行い、その後に元のコンテナを停止する必要がある。そのため、コンテナの配置変更では、例えばリソースの空いているノードで新しいコンテナを立ち上げ、元のコンテナを停止するという処理を順次行っていくことになる。
【0004】
特許文献1には、このようなコンテナの移動において、移動対象コンテナの決定方法が開示されている。特許文献1では、情報処理装置で動作するコンテナにおけるコンテナ間の呼出関係を示すトポロジー情報を取得し、トポロジー情報に基づいて、2以上のコンテナを呼び出すコンテナによる1つの呼出先のコンテナから他のコンテナを呼び出さないコンテナまでの呼出関係で結ばれるコンテナ群を情報処理装置へ移動する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に記載の技術では、全てのコンテナの配置変更についてどのコンテナからどの順番で変更していくかを人が計画する必要があり、大きな負担となっていた。特に、マイクロサービスという設計思想で小さな単位の多種多数のコンテナが動作する環境においては、計画が難しいという問題があった。
【0007】
そこでこの発明は、上述の課題を解決するコンテナ管理装置、コンテナ管理方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【0008】
本発明の第1の態様によれば、コンテナ管理装置は、複数のコンテナそれぞれが実行されるノードを示す前記コンテナの配置について、効率的な処理が可能となる前記コンテナの前記ノードへの配置案を導出する配置処理部と、前記コンテナの配置案が複数の場合に、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて、前記配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な前記配置変更手順案を選択する最適手順処理部と、を備えるコンテナ管理装置である。
【0009】
本発明の第2の態様によれば、コンテナ管理方法は、コンテナ管理装置が、複数のコンテナそれぞれが実行されるノードを示す前記コンテナの配置について、効率的な処理が可能となる前記コンテナの前記ノードへの配置案を導出し、前記コンテナの配置案が複数の場合に、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて、前記配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な前記配置変更手順案を選択する、コンテナ管理方法である。
【0010】
本発明の第3の態様によれば、プログラムは、コンテナ管理装置のコンピュータに、複数のコンテナそれぞれが実行されるノードを示す前記コンテナの配置について、効率的な処理が可能となる前記コンテナの前記ノードへの配置案を導出させ、前記コンテナの配置案が複数の場合に、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて、前記配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な前記配置変更手順案を選択させる、プログラムである。
【発明の効果】
【0011】
本発明によれば、多数のコンテナの配置を変更する場面において、コンテナの配置を変更する順番で最も適した手順を見つけ出すことができる。
【図面の簡単な説明】
【0012】
【
図1】第1実施形態に係るコンテナ管理システムの構成例を示す図である。
【
図2】第1実施形態に係るコンテナ管理装置の処理のフローチャートである。
【
図3】コンテナの配置の変更前の状態例を示す図である。
【
図4】コンテナの配置の変更後の状態例を示す図である。
【
図5】第1パターンと第2パターンにおける制限と指標について説明するための図である。
【
図6】実施形態に係るコンテナ管理装置の基本構成を示す図である。
【
図7】第2実施形態に係る変更前のコンテナの配置例を示す図である。
【
図8】第2実施形態に係る変更後のコンテナの配置例を示す図である。
【
図9】変更組み合わせ、順番、操作対象、制限、指標および指標平均を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態によるコンテナ管理装置、コンテナ管理方法及びプログラムを、図面を参照して説明する。
【0014】
<第1実施形態>
図1は、本実施形態に係るコンテナ管理システムの構成例を示す図である。
図1のように、コンテナ管理システム1は、例えば、コンテナ管理装置100と、コンテナクラスタ200を備える。
コンテナ管理装置100は、例えば、情報収集処理部101と、配置処理部102と、最適手順処理部103と、実行処理部104を備える。
コンテナクラスタ200は、例えば、コンテナ201と、コンテナ202と、コンテナ203と、ノード204と、ノード205を備える。
【0015】
なお、コンテナ管理装置100とコンテナクラスタ200とは、有線または無線のネットワークを介して接続されている。
【0016】
本実施形態では、コンテナ管理装置100が、コンテナクラスタのコンテナの配置情報を取得し、効率的な処理が可能となるようにコンテナの最適な配置を導出し、コンテナの配置を変更する。
【0017】
情報収集処理部101は、コンテナクラスタ200に関する情報を収集する。収集する情報は、コンテナクラスタ内で動作するコンテナやノードに関する情報である。収集する情報には、少なくともコンテナの数、ノードの数、どのコンテナがどのノードに配置されているかを示す配置情報、コンテナが使用しているリソース量、ノードが持っているリソース量が含まれる。収集する情報には、さらに、コンテナ間の通信量、コンテナが必要するリソースの種類など、コンテナの特性や性能に関する情報が含まれていてもよい。収集する情報には、さらにノード間の通信量や、ノードが持つリソースの種類など、ノードの特性や性能に関する情報が含まれていてもよい。情報収集処理部101は、収集した情報を、配置処理部102と、最適手順処理部103へ引き渡す。
【0018】
配置処理部102は、情報収集処理部101から受信した情報を基にして、現状のコンテナクラスタ、ノード、コンテナにおいて、どのコンテナがどのノードで実行されるかというコンテナの配置について、最適な配置の案を導出する。そして、配置処理部102は、導出した最適な配置の案を、最適手順処理部103へ引き渡す。なお、最適な配置の案を導出する方法としては、ナップサック問題として知られているような数理計画問題として解いて配置案を導出してもよく、他の方法を用いてもよい。
【0019】
最適手順処理部103は、情報収集処理部101から取得した情報と、配置処理部102から取得した情報に基づいて、現状のコンテナの配置から最適な配置案に変更する再配置の最適な手順の案を導出する。そして、最適手順処理部103は、導出した最適な手順の案を、実行処理部104へ引き渡す。最適手順処理部103は、再配置の最適な手順の案を導き出す際に、変更の過程の状態において、例えば、制限のチェックと指標の算出を行い、変更の過程のどの状態においても制限を満たしていて且つ指標の最も良い案を再配置の最適な手順の案として導出する。なお、指標が最も良い案とは、例えば、各状態の指標の平均値でもよいし、各状態の指標で最悪値が最も良いものとしてもよい。制限は、複数あってもよく、ノードに配置されるコンテナの使用するリソースがノードのリソースを超過しないというような予め定められた制限を含んでいてもよく、コンテナ管理装置100の利用者が指定する制限を含んでもよい。また、指標は、予め定められた指標でもよいし、コンテナ管理装置100の利用者が指定する指標でもよいし、複数の指標に重みを付けて加算した数値であってもよい。
【0020】
実行処理部104は、最適手順処理部103から取得した最適な手順の案の情報に基づいて、コンテナクラスタ200のコンテナの配置を変更する。
【0021】
コンテナ201とコンテナ202とコンテナ203それぞれは、その内部でアプリケーションの動作するコンテナであり、コンテナクラスタ200に含まれるノードのいずれかの上で実行される。なお、
図1では、コンテナが3つの例を示しているが、コンテナの数は3つに限定されるものではなく、2つ以下であっても4つ以上であってもよい。なお、コンテナの内部で実行するアプリケーションは、同じものであってもよいし、異なるものであってもよい。コンテナの内部で実行されるアプリケーションは、使用するリソースの種類やリソースの量の違いがあってもよい。コンテナの内部で実行されるアプリケーションは、他のアプリケーションと関係を持ち、他のアプリケーションとの間で通信を行ってもよく、他のアプリケーションとの関係により通信量に違いがあってもよい。
【0022】
ノード204とノード205それぞれは、コンテナを動作させる環境であり、コンテナを動作させるためのCPU(中央演算装置)やメモリなどのリソースを持っているものとする。なお、
図1では、ノードが2つの例を示しているが、ノードの数は2つに限定されるものではなく、3つ以上であってもよい。また、CPUやメモリのリソース量や性能等のノードが持つリソースは、ノード毎に違いがあってもよい。
【0023】
[コンテナ管理装置の処理例]
次に、コンテナ管理装置100の処理例を説明する。
図2は、本実施形態に係るコンテナ管理装置の処理のフローチャートである。なお、
図2に示す処理手順は一例であり、これに限らない。
【0024】
(ステップS101)最適手順処理部103は、情報収集処理部101からコンテナクラスタ200に関する情報を取得する。最適手順処理部103は、配置処理部102から、現状のコンテナの配置を変更する配置案を取得する。
【0025】
なお、現状のコンテナの配置に関する情報は、情報収集処理部101から受信する情報と、配置処理部102から受信する情報の、どちらに含まれていてもよい。情報収集処理部101から受信する情報には、例えば、コンテナクラスタ200に含まれるノードについて、CPUやメモリなどのスペック情報や、現状のCPUやメモリ、通信量などのリソース使用状況が含まれている。また、情報収集処理部101から受信する情報には、例えば、コンテナクラスタ200に含まれるコンテナについて、使用するCPUやメモリ、通信量などリソース情報が含まれている。
【0026】
(ステップS102)最適手順処理部103は、変更前の配置情報と変更後の配置情報を比較し、コンテナを変更する手順のパターンを列挙する。
【0027】
(ステップS103)最適手順処理部103は、列挙したそれぞれのパターンについて変更過程における制限のチェックと指標の算出を行う。
【0028】
(ステップS104)最適手順処理部103は、各手順の過程における制限のチェックを行った結果、制限を満たす手順パターンがあるか否かを確認する。最適手順処理部103は、制限を満たす手順パターンがある場合(ステップS104;YES)、ステップS105の処理に進める。最適手順処理部103は、制限を満たす手順パターンがない場合(ステップS104;NO)、ステップS106の処理に進める。なお、制限を満たすパターンのすべての操作で、その操作の制限が「OK」となっている場合は、そのパターンは制限を満たしていると言える。なお、制限等については後述する。
【0029】
(ステップS105)最適手順処理部103は、各手順の過程における指標の算出を行った結果から、この指標の値を比較して、最も良いパターンを最適な手順として選び出す。
【0030】
(ステップS106)制限を満たすパターンが1つもない場合、最適な手順はないため、最適手順処理部103は、例えばコンテナ管理装置100を使用する担当者へ再配置不可を通知する。
【0031】
[コンテナの配置の変更前後の状態例]
次に、コンテナの配置の変更前後の状態例を説明する。なお、この例では、コンテナの数が5つ(コンテナ303~307)であるとして説明する。
図3は、コンテナの配置の変更前の状態例を示す図である。
図3の例では、変更前、第1のノード301が、コンテナ303、コンテナ304およびコンテナ306を実行する。また、変更前、第2のノード302が、コンテナ305およびコンテナ307を実行する。
【0032】
図4は、コンテナの配置の変更後の状態例を示す図である。
図4の例では、変更後、第1のノード301が、コンテナ303、コンテナ304およびコンテナ305を実行する。また、変更後、第2のノード302が、コンテナ306およびコンテナ307を実行する。
【0033】
図3と
図4の例において、変更するコンテナは、コンテナ305とコンテナ306である。この変更の場合は、「ノード302のコンテナ305をノード301へ移動する」という変更操作と、「ノード301のコンテナ306をノード302へ移動する」という変更操作と、の二つの操作が必要である。
【0034】
そして、これら操作の順番の組合せパターンを列挙すると、操作は以下の2つである。
・第1パターン;「ノード302のコンテナ305をノード301へ移動する」という変更操作を先に行うパターン
・第2パターン;「ノード301のコンテナ306をノード302へ移動する」という変更操作を先に行うパターン
【0035】
なお、「移動する」というコンテナの配置を変更する操作とは、ダウンタイムを発生させないために、移動先のノードで新しいコンテナを起動し、リクエストが新しいコンテナへ流れるように変更し、その後で移動元のノードでコンテナを停止するものとする。このため、「ノード302のコンテナ305をノード301へ移動する」とは、「ノード301でコンテナ305を起動する、リクエストがノード301のコンテナ305へ流れるようにする、ノード302でコンテナ305を停止する」という処理を意味する。
【0036】
[制限と指標]
次に、
図3、
図4の変更前後の例を用いて、制限と指標について説明する。
図5は、第1パターンと第2パターンにおける制限と指標について説明するための図である。
図5のように、第1パターンと第2パターンの2つのパターンがあることが分かる。最適手順処理部103は、ステップS103において、第1パターンと第2パターンそれぞれについて、それぞれの手順の過程で制限のチェックと指標の算出を行う。
【0037】
制限のチェックでは、操作を行った後の状態に対して予め定められた制限を満たしているかのチェックを行う。また、指標の算出では、操作を行った後の状態に対して予め定められた計算方法によって計算して、数値を求める。
なお、制限とは、例えば、ノードに配置されたコンテナの使用するリソースに関する制約(例えばリソースの合計が、ノードの持つリソースを超えないこと)である。また、指標とは、例えば、1つのノードで起動するコンテナの数(少ない方が良いとする)である。
【0038】
例えば、
図3、
図4における各コンテナが使用するリソースが以下であるとする。なお、ノード301とノード302のCPUやメモリは同一とする。また、いずれのノードでもCPUの80%、メモリの80%をコンテナでは使用可能であるとする。
・コンテナ303のリソース使用量は、CPU20%、メモリ20%
・コンテナ304のリソース使用量は、CPU20%、メモリ20%
・コンテナ305のリソース使用量は、CPU30%、メモリ20%
・コンテナ306のリソース使用量は、CPU10%、メモリ20%
・コンテナ307のリソース使用量は、CPU20%、メモリ20%
【0039】
第1パターンの順番1では、「ノード301でコンテナ305を起動する、リクエストがノード301のコンテナ305へ流れるようにする、ノード302でコンテナ305を停止する」という処理が行われる。このため、ノード301では、リソース使用量が増えるが、コンテナ303、コンテナ304、コンテナ305、コンテナ306の合計でCPU、メモリとも80%を超えないため、制限のチェックで制限を満たしている。
【0040】
同様に、第1パターンの順番2、第2パターンの順番1、第2パターンの順番2は、操作を実行後の状態において、制限を満たしている。このため、
図5の「制限」の列はすべて「OK」となる。なお、制限を満たしていない場合は、「NG」となる。
【0041】
次に、指標の算出例を説明する。
図5の第1パターンの順番1では、順番1の操作後、ノード302で起動しているコンテナはコンテナ307のみとなり、ノード302で起動しているコンテナの数は1となる。同様に他の順番の操作後の状態において、ノード302で起動しているコンテナの数は、「指標」の列のようになる。
【0042】
次に、ステップS105で行う指標の比較方法例を説明する。各パターンの指標の比較方法としては、例えばパターンの過程の指標の平均を比較する。なお、各パターンの指標の比較方法としては、指標の平均の比較でなく、指標の最高値の比較や、指標の分散の比較といった別の方法を用いてもよい。
【0043】
図5の例では、指標の最も良いパターンを見つけるために、各順番での指標を算出し、各順番での指標からそのパターンにおける指標の平均を算出し、各パターンの指標平均を比較する。これにより、最適手順処理部103は、最も指標平均が良い(小さい)パターンを、最適な手順として選択する。
【0044】
図5において、「指標平均」は、「指標」の列のパターンごとの平均である。例えば、第1パターンでは、順番1の指標が「1」であり順番2の指標が「2」であるため、指標平均が1.5(=(1+2)/2)である。指標が小さいほうがよいとしているため、最適手順処理部103は、「指標平均」が1.5と最も小さい値である第1パターンを最適な手順として選択する。
【0045】
[コンテナ管理装置の基本構成]
図6は、実施形態に係るコンテナ管理装置の基本構成を示す図である。
図6のように、コンテナ管理装置100Aは、配置処理部102と、最適手順処理部103を備える。
【0046】
配置処理部102は、複数のコンテナそれぞれが実行されるノードを示すコンテナの配置について、効率的な処理が可能となる配置案(コンテナ配置変更後の最後の状態)を導出する。
【0047】
最適手順処理部103は、コンテナの配置案が複数の場合に、配置案の配置へのコンテナの移動時のコンテナの状態(例えば各ノードで起動されているコンテナ数)に基づいて、複数の配置案(含む変更手順)の中から最適な配置変更手順案を選択する。
これにより、選択された手順に従って、コンテナの配置を効率よく変更することができる。
【0048】
以上のように本実施形態では、コンテナの適切な配置を見つけ出し、コンテナの配置を変更する場合に、コンテナの適切な配置案を導出する配置処理部102と、配置案の通りにコンテナの配置を変更する適切な手順(配置変更手順案)を導出する最適手順処理部103と、に処理を分けた。
これにより、本実施形態によれば、多数のコンテナの配置を変更する場面において、コンテナの配置を変更する順番で最も適した手順を見つけ出すことができる。また、本実施形態によれば、再配置の最適な手順を見つけ出す方法を、コンテナの適切な配置案と配置変更手順案を導出する様々な方法と組合せて使用できる。
【0049】
また、本実施形態では、コンテナの配置を変更する場合に、変更後のノードで先に起動して、リクエストが新しいコンテナへ流れるようにしてから、変更前のコンテナを停止するようにした。
これにより、本実施形態によれば、ダウンタイムなくコンテナの配置を変更できる。
【0050】
また、本実施形態では、最適手順処理部103で手順を選出する場合に、各順番で指標を算出し、その平均を比較して最も良いパターンを選出するようにした。
これにより、本実施形態によれば、利用者が望むパターンで自動的に最も良いパターンを選出できる。
【0051】
また、本実施形態では、最適手順処理部103で手順を選出する場合に、各順番で制限をチェックするようにした。
これにより、本実施形態によれば、利用者が望まないパターンが選出されることを防ぐことができる。
【0052】
<変形例>
なお、実施形態では、「ノードに配置されたコンテナの使用するリソース合計が、ノードの持つリソースを超えない」を制限として用いたが、他の情報を制限として用いてもよい。
【0053】
また、実施形態では、制限が1つの例を示したが、制限が2つ以上であってもよい。この場合は、全ての制限を満たした場合に、制限を満たしたと判断するようにしてもよい。
【0054】
また、実施形態では、ノードにおけるコンテナの数が少ないことを指標に用いたが、他の情報を指標としてもよい。指標は、例えば、ノード間の通信量が少ないであってもよい。
【0055】
また、実施形態では、指標が一つの例を説明したが、複数の情報から計算した数値を指標としてもよい。指標は、例えば、次式(1)のように、複数の情報に対して重みを付けて計算した結果であってもよい。
【0056】
[数1](ノードのコンテナ数)×100-(ノード間の通信量) …(1)
【0057】
また、
図2のステップS103で「列挙した各パターンの変更過程について制限のチェックと指標の算出を行う」処理例を説明したが、これに限らない。ステップS103において、最適手順処理部103は、制限を満たしていない過程状態があったときにそのパターンでの計算を停止して、計算量を小さくしてもよい。または、ステップS103において、最適手順処理部103は、指標の値が悪くなりすぎて、計算済みのパターンと比較して、それより指標がよくなることがない場合に、そのパターンでの計算を停止して、計算量を小さくしてもよい。
【0058】
<第2実施形態>
【0059】
第1実施形態では、コンテナの配置の変更にて、1つの操作で1つのコンテナの配置を変更する例を説明した。本実施形態では、1つの操作で複数のコンテナの配置を変更する例を説明する。なお、コンテナ管理装置の構成は、第1実施形態と同様である。
【0060】
例えば、コンテナAをノードXからノードYに変更し、コンテナBをノードYからノードXに変更する場合を例に説明する。この場合、コンテナAとコンテナBを1つの操作で変更するには、ノードYでコンテナAを起動し、ノードXでコンテナBを起動する。そして、コンテナAへのリクエストは、ノードYのコンテナAに流れるようにする。コンテナBへのリクエストは、ノードXのコンテナBに流れるようにする。さらに、ノードXのコンテナAは停止する。ノードYのコンテナBは停止する。
【0061】
図7は、本実施形態に係る変更前のコンテナの配置例を示す図である。
図8は、本実施形態に係る変更後のコンテナの配置例を示す図である。なお、
図7に示す例では、コンテナ(403~407)が5つ、ノード(401、402)が2つの例である。また、
図7の矢印y1~y6、
図8の矢印y11~y16は、コンテナ間の通信量を示している。
【0062】
変更前、コンテナ403とコンテナ406との通信量y1は5MBである。コンテナ403とコンテナ404との通信量y2は30MBである。コンテナ404とコンテナ405との通信量y3は300MBである。コンテナ404とコンテナ406との通信量y4は3MBである。コンテナ404とコンテナ407との通信量y5は2MBである。コンテナ406とコンテナ407との通信量y6は50MBである。
【0063】
変更後、コンテナ403とコンテナ404との通信量y11は30MBである。コンテナ404とコンテナ405との通信量y12は300MBである。コンテナ403とコンテナ406との通信量y13は5MBである。コンテナ404とコンテナ406との通信量y14は3MBである。コンテナ404とコンテナ407との通信量y15は2MBである。コンテナ406とコンテナ407との通信量y16は50MBである。
【0064】
図7のように、変更前は、ノード401でコンテナ403が起動し、ノード402でコンテナ404~407が起動している。
図8のように、変更後は、ノード401でコンテナ403~405が起動し、ノード402でコンテナ406~407が起動している。この例は、ノード402で起動しているコンテナ404とコンテナ405を、ノード401に変更する。
【0065】
この変更する手順を列挙した表が
図9である。
図9は、変更組み合わせ、順番、操作対象、制限、指標および指標平均を示す図である。
図9のように、
図7から
図8への変更パターンは3つ(第1パターン、第2パターン、第3パターン)である。
第1パターンは、コンテナ404の配置を先に変更し、次にコンテナ405の配置を変更する。第2パターンは、コンテナ405の配置を先に変更し、次にコンテナ404の配置を変更する。第3パターンは、コンテナ404とコンテナ405を先に変更する。なお、制限は、第1実施形態と同様にノードに配置されたコンテナの使用するリソース合計が、ノードの持つリソースを超えないことである。指標は、第1実施形態とは異なり、ノード間の通信量とし、少ないほどよいものとした。そして、本実施形態では、各順番の指標の平均を比較して、最も良いパターンを選出する。
【0066】
第1パターンの順番1では、コンテナ404の配置を、ノード402からノード401に変更する。この場合、ノード401とノード402の間の通信量は、コンテナ403とコンテナ406の間(5MB)、コンテナ404とコンテナ406の間(3MB)、コンテナ404とコンテナ407の間(2MB)、コンテナ404とコンテナ405の間(300MB)の合計で、310MBである。このため、第1パターンの順番1の指標は、「310(MB)」である。
【0067】
第1パターンの順番2では、コンテナ405の配置を、ノード402からノード401に変更する。この場合、ノード401とノード402の間の通信量は、コンテナ403とコンテナ406の間(5MB)、コンテナ404とコンテナ406の間(3MB)、コンテナ404とコンテナ407の間(2MB)、の合計で、10MBである。このため、第1パターンの順番2の指標は、「10(MB)」である。
また、第1パターンの指標平均は、160(MB)(=(310+10)÷2)である。
【0068】
他の順番の操作も同様にノード間の通信量を計算すると、指標は、
図9の「指標」の列のようになる。
【0069】
この例では、算出したパターン毎の指標の平均を比較すると、コンテナ404とコンテナ405の配置を1つの操作で変更する第3パターンの指標が、最も良い(最も小さい)。すなわち、第3パターンの手順でコンテナの配置を変更することが、最も効率が良い。実行処理部104は、このようにして、最も効率の良いパターンを選択する。
【0070】
なお、上述した例では、指標としてノード間のコンテナ間の通信量を用いたが、指標はこれに限らない。指標は、第1実施形態で用いたノードで起動するコンテナの数であってもよい。
【0071】
このように、本実施形態では、1つの操作で複数のコンテナの配置を変更するパターンも含めるようにした。
【0072】
このように、本実施形態では、第1実施形態よりさらに効率の良い配置変更手順を見つけることができる。
【0073】
上述のコンテナ管理装置100(または100A)は内部に、コンピュータシステムを有していてもよい。そして、コンテナ管理装置100(または100A)に上述した各処理を行わせるためのプログラムは、当該コンテナ管理装置100(または100A)のコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンテナ管理装置100(または100A)のコンピュータが読み出して実行することによって、上記処理が行われるようにしてもよい。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
また、上記プログラムは、前述した各処理部の機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0074】
コンテナ管理装置100(または100A)のコンピュータシステムは、例えば、CPUと、主記憶装置と、補助記憶装置と、インターフェイスと、不揮発性記録媒体とを備えるようにしてもよい。CPUは、プログラムに従って、コンテナ管理装置100(または100A)が行う処理を行うようにしてもよい。
【0075】
なお、上述した手法は、例えば、多数のコンテナが実行されるような環境、長期間運用される環境、リソースが高価で適切でない配置によるデメリットが大きい環境、などでコンテナの配置を適切な配置に変更する場合にも利用可能である。
【0076】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0077】
(付記1)
複数のコンテナそれぞれが実行されるノードを示す前記コンテナの配置について、効率的な処理が可能となる前記コンテナの前記ノードへの配置案を導出する配置処理部と、
前記コンテナの配置案が複数の場合に、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて、前記配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な前記配置変更手順案を選択する最適手順処理部と、
を備えるコンテナ管理装置。
【0078】
(付記2)
前記最適手順処理部は、前記ノードに配置される前記コンテナが使用するリソースに関する制約に基づいて前記配置変更手順案を選択する、
(付記1)に記載のコンテナ管理装置。
【0079】
(付記3)
前記リソースに関する制約は、前記ノードに配置される前記コンテナが使用するリソースに関する制約に基づいての合計が、前記ノードの持つリソースを超えないことである、
(付記2)に記載のコンテナ管理装置。
【0080】
(付記4)
前記最適手順処理部は、前記配置案の配置への前記コンテナの移動に関する指標に基づいて、複数の前記配置変更手順案の中から最適な配置変更手順案を選択する、
(付記1)から(付記3)のうちのいずれか1つに記載のコンテナ管理装置。
【0081】
(付記5)
前記指標は、前記配置案の配置への前記コンテナの移動時における前記ノードで起動する前記コンテナの数に基づく指標、または前記配置案の配置への前記コンテナの移動時における前記ノード間の前記コンテナ間の通信量に基づく指標のうちの1つである、
(付記4)に記載のコンテナ管理装置。
【0082】
(付記6)
前記配置処理部は、
前記配置を変更する前の配置情報と、前記配置を変更した後の配置情報を比較し、前記コンテナを変更する手順のパターンを列挙し、
前記コンテナの移動に際してダウンタイムを発生させないために、移動先の前記ノードで新しいコンテナを起動し、リクエストが新しい前記コンテナへ流れるように変更し、その後、移動元の前記ノードで前記コンテナを停止する条件で前記コンテナを変更する手順のパターンを列挙する、
(付記1)から(付記5)のうちのいずれか1つに記載のコンテナ管理装置。
【0083】
(付記7)
前記ノード間を移動させる前記コンテナの数が複数である、
(付記1)から(付記6)のうちのいずれか1つに記載のコンテナ管理装置。
【0084】
(付記8)
前記最適手順処理部は、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて複数の前記配置変更手順案の中から最適な前記配置変更手順案を選択する際、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態が所定の条件を満たしていない配置変更手順案の処理を停止する、
(付記1)から(付記7)のうちのいずれか1つに記載のコンテナ管理装置。
【0085】
(付記9)
コンテナ管理装置が、
複数のコンテナそれぞれが実行されるノードを示す前記コンテナの配置について、効率的な処理が可能となる前記コンテナの前記ノードへの配置案を導出し、
前記コンテナの配置案が複数の場合に、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて、前記配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な前記配置変更手順案を選択する、
コンテナ管理方法。
【0086】
(付記10)
コンテナ管理装置のコンピュータに、
複数のコンテナそれぞれが実行されるノードを示す前記コンテナの配置について、効率的な処理が可能となる前記コンテナの前記ノードへの配置案を導出させ、
前記コンテナの配置案が複数の場合に、前記配置案の配置への前記コンテナの前記ノード間の移動時の前記コンテナの状態に基づいて、前記配置案の配置にするための変更手順を含む複数の配置変更手順案の中から最適な前記配置変更手順案を選択させる、
プログラム。
【符号の説明】
【0087】
1…コンテナ管理システム、
100,100A…コンテナ管理装置、
101…情報収集処理部、
102…配置処理部、
103…最適手順処理部、
104…実行処理部、
200…コンテナクラスタ、
201,202,203,303,304,305,306,307…コンテナ、
204,205,301,302…ノード