(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】情報処理システム、情報処理方法及びプログラム
(51)【国際特許分類】
G06F 11/34 20060101AFI20241106BHJP
G06F 11/30 20060101ALI20241106BHJP
【FI】
G06F11/34 176
G06F11/30 155
G06F11/30 140C
(21)【出願番号】P 2020127891
(22)【出願日】2020-07-29
【審査請求日】2023-06-08
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】高雄 悠太
【審査官】西間木 祐紀
(56)【参考文献】
【文献】再公表特許第2017/168484(JP,A1)
【文献】米国特許出願公開第2019/0361626(US,A1)
【文献】白石 崇 ほか,コンテナネットワーク品質のリアルタイム監視システムの開発,電子情報通信学会技術研究報告 Vol.119 No.438,日本,一般社団法人電子情報通信学会,2024年02月24日,43~48頁
【文献】石澤 基 ほか,みんなのDocker/Kubernetes 初版,株式会社技術評論社,2019年,72頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/34
G06F 11/30
(57)【特許請求の範囲】
【請求項1】
コンテナオーケストレーションツールにより管理されるコンテナの内部で使用される情報であるコンテナ情報を抽出するコンテナ情報抽出部と、
前記コンテナ情報抽出部で抽出された前記コンテナ情報を前記コンテナの外に出力するコンテナ情報出力部と、
複数の前記コンテナによって構築されたサービスの情報であるサービス情報を収集するサービス情報収集部であって、前記サービスの名称を含む問い合わせ情報をマスターノードに送信することで前記マスターノードから前記サービスが現在使用している情報である前記サービス情報を収集するサービス情報収集部と、
前記コンテナ情報出力部から出力された前記コンテナ情報を収集するコンテナ情報収集部と、
前記コンテナ情報収集部で収集された前記コンテナ情報と、前記サービス情報収集部で収集された前記サービス情報と、を関連付けてデータ格納部に格納する情報処理部と、
前記サービス情報収集部、前記コンテナ情報収集部及び前記情報処理部を含み、前記コンテナが割り当てられた第1のワーカーノードと、
前記コンテナ情報抽出部及び前記コンテナ情報出力部を含み、前記コンテナが割り当てられた第2のワーカーノードと、
前記第1のワーカーノード及び前記第2のワーカーノードを管理する前記マスターノードと、
を有する情報処理システム。
【請求項2】
前記コンテナ情報抽出部は、前記コンテナで使用されるCPUの情報、メモリの使用状況及びリクエスト流量の情報との少なくともいずれかを前記コンテナ情報として抽出する、
請求項1に記載の情報処理システム。
【請求項3】
前記データ格納部に格納されている前記コンテナ情報を監視するデータ監視部を備え、 前記データ監視部は、前記サービスが予め設定された上限値以上に前記コンテナ情報が使用されているか否かを確認し、前記上限値以上に前記コンテナ情報が使用されている場合には、前記コンテナの集合体であるポッドの数を削減させる、
請求項
1または請求項2に記載の情報処理システム。
【請求項4】
前記コンテナ情報収集部は、前記マスターノードから前記サービスが動作する前記コンテナと前記コンテナの実アドレスとを含むアクセス情報を取得し、前記アクセス情報に基づいて前記第2のワーカーノードにアクセスすることで前記コンテナ情報を収集する、
請求項
1から請求項3の何れか一項に記載の情報処理システム。
【請求項5】
前記サービスの定義及び前記コンテナ情報の上限値を含むサービス展開要求を取得し、前記サービス展開要求に基づいて前記サービスを構築し、前記サービスの名称及び前記上限値を前記第1のワーカーノード内に格納するサービス提供機能部を有する、
請求項
1から請求項3の何れか一項に記載の情報処理システム。
【請求項6】
コンテナが割り当てられた第1のワーカーノードと、前記コンテナが割り当てられた第2のワーカーノードと、前記第1のワーカーノード及び前記第2のワーカーノードを管理するマスターノードと、を有する情報処理システムが実行する情報処理方法であって、
複数の前記コンテナによって構築されたサービスの情報であるサービス情報を収集することであって、前記サービスの名称を含む問い合わせ情報を前記マスターノードに送信することで前記マスターノードから前記サービスが現在使用している情報である前記サービス情報を収集することと、
コンテナオーケストレーションツールにより管理される
前記コンテナの内部で使用される情報であるコンテナ情報を抽出
することと、
抽出された前記コンテナ情報を前記コンテナの外に出力する
ことと、
出力された前記コンテナ情報を収集することと、
収集された前記コンテナ情報と、収集された前記サービス情報と、を関連付けて格納することと、
を含む情報処理方法。
【請求項7】
コンテナが割り当てられた第1のワーカーノードと、前記コンテナが割り当てられた第2のワーカーノードと、前記第1のワーカーノード及び前記第2のワーカーノードを管理するマスターノードと、を有する情報処理システムのコンテナオーケストレーションツールが導入されているコンピュータに、
前記コンテナオーケストレーションツールにより管理されるコンテナの内部で使用される情報であるコンテナ情報を抽出
することと、
抽出された前記コンテナ情報を前記コンテナの外に出力
することと、
複数の前記コンテナによって構築されたサービスの情報であるサービス情報を収集することであって、前記サービスの名称を含む問い合わせ情報を前記マスターノードに送信することで前記マスターノードから前記サービスが現在使用している情報である前記サービス情報を収集することと、
出力された前記コンテナ情報を収集することと、
収集された前記コンテナ情報と、収集された前記サービス情報と、を関連付けて格納することと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
OS(operating System)の仮想化技術では、アプリケーションを動作させるために必要なライブラリやアプリケーションを一つにまとめたコンテナが用いられている(例えば、特許文献1)。コンテナは、Kubernetesなどのコンテナオーケストレーションツールによって統合管理される。
【0003】
コンテナオーケストレーションツールを用いた情報処理システムを構築する際には、コンテナ上にアプリケーションを配備する形で提供されるが、利用者の設定により、アプリケーションのアクセス量が増えた場合や、クラスタ化を行うことを目的にコンテナを多重化することが可能である。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
コンテナオーケストレーションツールを用いてコンテナを統合管理するには、コンテナの内部で使用される情報(コンテナ情報)を監視することが望ましい。しかしながら、特許文献1には、コンテナ情報を監視することについては何ら開示されていない。
【0006】
そこでこの発明は、上述の課題を解決する情報処理システム、情報処理方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【0007】
本実施形態の第一の態様によれば、情報処理システムは、コンテナオーケストレーションツールにより管理されるコンテナの内部で使用される情報であるコンテナ情報を抽出するコンテナ情報抽出部と、前記コンテナ情報抽出部で抽出された前記コンテナ情報を前記コンテナの外に出力するコンテナ情報出力部と、複数の前記コンテナによって構築されたサービスの情報であるサービス情報を収集するサービス情報収集部であって、前記サービスの名称を含む問い合わせ情報をマスターノードに送信することで前記マスターノードから前記サービスが現在使用している情報である前記サービス情報を収集するサービス情報収集部と、前記コンテナ情報出力部から出力された前記コンテナ情報を収集するコンテナ情報収集部と、前記コンテナ情報収集部で収集された前記コンテナ情報と、前記サービス情報収集部で収集された前記サービス情報と、を関連付けてデータ格納部に格納する情報処理部と、前記サービス情報収集部、前記コンテナ情報収集部及び前記情報処理部を含み、前記コンテナが割り当てられた第1のワーカーノードと、前記コンテナ情報抽出部及び前記コンテナ情報出力部を含み、前記コンテナが割り当てられた第2のワーカーノードと、前記第1のワーカーノード及び前記第2のワーカーノードを管理する前記マスターノードと、を有する。
【0008】
本実施形態の第二の態様によれば、情報処理方法は、コンテナが割り当てられた第1のワーカーノードと、前記コンテナが割り当てられた第2のワーカーノードと、前記第1のワーカーノード及び前記第2のワーカーノードを管理するマスターノードと、を有する情報処理システムが実行する情報処理方法であって、複数の前記コンテナによって構築されたサービスの情報であるサービス情報を収集することであって、前記サービスの名称を含む問い合わせ情報を前記マスターノードに送信することで前記マスターノードから前記サービスが現在使用している情報である前記サービス情報を収集することと、コンテナオーケストレーションツールにより管理される前記コンテナの内部で使用される情報であるコンテナ情報を抽出することと、抽出された前記コンテナ情報を前記コンテナの外に出力することと、出力された前記コンテナ情報を収集することと、収集された前記コンテナ情報と、収集された前記サービス情報と、を関連付けて格納することと、を含む。
【0009】
本実施形態の第三の態様によれば、プログラムは、コンテナが割り当てられた第1のワーカーノードと、前記コンテナが割り当てられた第2のワーカーノードと、前記第1のワーカーノード及び前記第2のワーカーノードを管理するマスターノードと、を有する情報処理システムのコンテナオーケストレーションツールが導入されているコンピュータに、前記コンテナオーケストレーションツールにより管理されるコンテナの内部で使用される情報であるコンテナ情報を抽出することと、抽出された前記コンテナ情報を前記コンテナの外に出力することと、複数の前記コンテナによって構築されたサービスの情報であるサービス情報を収集することであって、前記サービスの名称を含む問い合わせ情報を前記マスターノードに送信することで前記マスターノードから前記サービスが現在使用している情報である前記サービス情報を収集することと、出力された前記コンテナ情報を収集することと、収集された前記コンテナ情報と、収集された前記サービス情報と、を関連付けて格納することと、を実行させる。
【発明の効果】
【0010】
本発明によれば、コンテナ情報を監視することができる。
【図面の簡単な説明】
【0011】
【
図1】第1の実施形態の情報処理システムの構成の一例を示す図である。
【
図2】第1の実施形態のデータ格納部に格納される関連情報の一例を示す図である。
【
図3】第1の実施形態のサービスを構築するまでの情報処理システムのシーケンス図である。
【
図4】第1の実施形態のサービスを構築した後の情報処理システムのシーケンス図である。
【
図5】第1の実施形態のデータ監視部の動作の流れを示すフロー図である。
【
図6】第2の実施形態の情報処理システムの構成の一例を示す図である。
【
図7】Kubernetes上でシステムを構築した場合の課題を示す図である。
【
図8】Kubernetes上でシステムを構築した場合の課題を示す図である。
【
図9】Kubernetes上でシステムを構築した場合の課題を示す図である。
【
図10】実施形態による報処理システムの最小構成を示す図である。
【発明を実施するための形態】
【0012】
以下、実施形態の情報処理システムを、図面を参照して説明する。
【0013】
(第1の実施形態)
図1は、第1の実施形態に係る情報処理システム1の構成の一例を示す図である。情報処理システム1は、Kubernetesに代表されるコンテナオーケストレーションツールを利用して複数のコンテナを統合管理する。以下に示す情報処理システム1は、Kubernetesを利用して複数のコンテナを統合管理する。Kubernetesは、コンテナ化されたアプリケーションのデプロイ、スケーリングなどの管理を行うオープンソースフレームワークである。コンテナとは、アプリケーションを動作させるために必要なライブラリやアプリケーションを一つにまとめたものである。
【0014】
本実施形態の情報処理システム1では、下記の環境を想定する。
(1)サービスは複数のコンテナ上により構築される。
(2)サービスはKubernetes Operatorを利用して構築される。
(3)コンテナの操作はオーケストレーションツール(Kubernetes)により実行され、オーケストレーションツールではそのコンテナが動作するノードを特定するための情報、及びコンテナ上で動作するサービスにアクセスするための情報が定義されている。
(4)サービスの実行に対しアプリケーション部とフレームワーク部で分離可能なアーキテクチャを持つクライアントサーバモデルのWebサーバまたはアプリケーションサーバである。
【0015】
以下において、情報処理システム1の構成の一例を説明する。
【0016】
図1に示すように、情報処理システム1は、マスターノード100、第1のワーカーノード200及び第2のワーカーノード300を有する。情報処理システム1の構成は、いわゆるKubernetesクラスタに相当する。
【0017】
マスターノード100は、一台の物理サーバであってもよいし、仮想マシンであってもよい。マスターノード100は、Kubernetesのマスタ機能のソフトウェアがインストールされたコンピュータであってもよい。マスターノード100は、第1のワーカーノード200及び第2のワーカーノード300を管理する。すなわち、マスターノード100は、Kubernetesの運用・管理を担うコンポーネント群であって、Kubernetesクラスタの全体を管理する。マスターノード100の構成は、公知であるため詳細については説明を省略するが、API Serverやscheduler、controller Manager 、データストア(etcd)などのコンポーネントを有している。
【0018】
第1のワーカーノード200は、1つまたは複数のコンテナが割り当てられており、コンテナを動作させてサービスを提供する。すなわち、第1のワーカーノード200は、コンテナ化されたアプリケーションを実行する。
【0019】
第2のワーカーノード300は、1つまたは複数のコンテナが割り当てられており、コンテナを動作させてサービスを提供する。すなわち、第2のワーカーノード300は、コンテナ化されたアプリケーションを実行する。
【0020】
以下において、第1のワーカーノード200の構成について説明する。第1のワーカーノード200は、コンテナ110、格納部120及びコンテナ130を有する。第1のワーカーノード200には、Kubernetes Operator(ソフトウェア)がインストールされており、Kubernetes Operatorがコンテナ110、格納部120及びコンテナ130を保持する。
【0021】
コンテナ110は、サービス提供機能部111を有している。
【0022】
サービス提供機能部111は、サービスの定義(コンテナイメージ)、サービスの制限値及びコンテナ内部で使用される内部リソースの情報(以下、「コンテナ情報」という。)の上限値を含むサービス展開要求を外部から取得する。サービス提供機能部111は、サービス展開要求のち、サービスの定義に基づき、サービスをKubernetes上に構築する。また、サービス提供機能部111は、格納部120に対して、そのサービスの名称と、そのサービスの制限値を登録する。また、サービス提供機能部111は、サービス展開要求のち、コンテナ情報の上限値をコンテナ130に格納する。
【0023】
ここで、コンテナ情報とは、コンテナのリソースの使用状況を示す情報であり、例えばコンテナで使用されるCPUの情報、メモリの使用状況及びリクエスト流量の情報との少なくともいずれかを含む。例えば、コンテナ情報がCPUの情報、メモリの使用状況及びリクエスト流量の情報のすべての情報を含む場合には、コンテナ情報の上限値とは、CPUの情報の上限値、メモリの使用量の上限値及び利リクエスト数の上限値とを含む。
【0024】
格納部120は、例えば共有ディレクトリである。格納部120には、そのサービスの名称と、そのサービスの制限値とが格納される。
【0025】
コンテナ130は、情報収集部131、情報管理部132及び内部リソース制限部133及び情報出力部134を保持する。ここで、第1のワーカーノード200には、エージェント(Agent)という機能(例えば、kubelet)を有している。このエージェントの中において、情報収集部131、情報管理部132及び内部リソース制限部133及び情報出力部134が保持される。
【0026】
情報収集部131は、サービス情報収集部400、コンテナ情報収集部410及び情報処理部420を有する。
【0027】
サービス情報収集部400は、マスターノード100に対して問い合わせを行い、対象であるサービス(以下、「対象サービス」という。)の情報であるサービス情報をマスターノード100から収集する。このサービス情報は、対象サービスが現在使用しているリソースの情報(例えばCPU及びメモリの情報)である。
【0028】
コンテナ情報収集部410は、マスターノード100から、対象サービスが動作するコンテナとそのコンテナの実アドレスと、を含むアクセス情報を取得する。そして、コンテナ情報収集部410は、アクセス情報に基づいて第2のワーカーノード300にアクセスすることで、第2のワーカーノード300における1つ以上のコンテナのコンテナ情報を収集する。このコンテナ情報は、例えば、1つのコンテナのリソース情報を示すものである。したがって、コンテナ情報収集部410は、第2のワーカーノード300において複数のコンテナがある場合には、そのコンテナごとにコンテナ情報を収集する。
【0029】
情報処理部420は、コンテナ情報収集部410で収集されたコンテナ情報と、サービス情報収集部400で収集されたサービス情報と、を関連付けて情報管理部132に格納する。
【0030】
情報管理部132は、情報を格納するデータ格納部430を有する。データ格納部430には、情報処理部420によってコンテナ情報とサービス情報とが関連付けられた関連情報が格納される。
図2は、データ格納部430に格納される関連情報の一例を示す図である。
【0031】
一例として、データ格納部430には、
図2に示すように関連情報がテーブル形式で格納される。データ格納部430には、関連情報が格納される関連情報テーブルが設けられている。
【0032】
関連情報テーブルには、第1カテゴリ情報と、第2カテゴリ情報と、第3カテゴリ情報と、が階層的に関連付けられている。
【0033】
第1カテゴリ情報は、サービス関する情報かコンテナに関する情報かを特定するための情報が格納される。
【0034】
第2カテゴリ情報とは、第1カテゴリ情報において、リソースの種類を特定する情報である。例えば、リソースとは、CPUの情報、メモリの情報(メモリの使用量)、リクエスト流量の情報などのである。第2カテゴリ情報は、第1カテゴリ情報として格納されているサービスに関する情報と、第1カテゴリ情報として格納されているコンテナに関する情報と、のそれぞれに関連付けられている。
【0035】
第3カテゴリ情報は、第2カテゴリ情報をさらに特定する情報である。例えば、CPUの情報においては、コア数と、CPU時間のそれぞれが第3カテゴリ情報として格納される。例えばサービス情報においては、メモリの情報は、1つのメモリの使用量である。例えばコンテナに関する情報(コンテナ情報)としては、メモリの情報を特定する情報として、ヒープメモリ使用量と、非ヒープメモリ使用量のそれぞれが第3カテゴリ情報として格納される。コンテナに関する情報(コンテナ情報)としては、例えば、リクエスト流量の情報を特定する情報として、各URLに対応するリクエスト数が第3カテゴリ情報として格納される。
【0036】
これにより、コンテナ情報とサービス情報とが関連付けられ、コンテナ情報とサービス情報とのそれぞれに含まれている情報を識別可能である。
【0037】
内部リソース制限部133は、上限値格納部440及びデータ監視部450を有する。
【0038】
上限値格納部440には、コンテナ情報の上限値が格納される。
【0039】
データ監視部450は、データ格納部430に格納されている関連情報を監視する。データ監視部450は、対象サービスが予め設定された上限値、すなわち上限値格納部440に格納されている上限値以上にコンテナ情報が使用されているか否かを確認する。データ監視部450は、確認の結果、上限値以上にコンテナ情報が使用されている場合には、コンテナの集合体であるポッドの数をサービス提供機能部111に削減させる。
【0040】
情報出力部134は、データ格納部430に格納されている関連情報を読み取り、利用者に出力可能である。
【0041】
以下において、第2のワーカーノード300の構成について説明する。第2のワーカーノード300は、コンテナ310を有している。すなわち、第2のワーカーノード300は、マスターノード100が展開したコンテナ310を動作させるサーバである。コンテナ310は、特定のサービスを提供する。コンテナ310は、アプリケーション部500とフレームワーク部510とを含む。
【0042】
アプリケーション部500は、特定のサービスを提供する実体である。
【0043】
フレームワーク部510は、アプリケーションを動作させるためのフレームワークである。
【0044】
フレームワーク部510は、フレームワーク部510で提供するMetrics機能を有している。フレームワーク部510は、コンテナ情報抽出部600及びコンテナ情報出力部610を有する。例えば、コンテナ情報抽出部600及びコンテナ情報出力部610は、Metrics機能が拡張されることによってフレームワーク部510内に実装される。
【0045】
コンテナ情報抽出部600は、コンテナ310の内部で使用される情報であるコンテナ情報を抽出する。一例として、コンテナ情報抽出部600が抽出するコンテナ情報は、コンテナ310で使用するCPU情報(コア数・時間)、メモリの使用状況(ヒープ・非ヒープ)、リクエスト流量の情報である。
【0046】
コンテナ情報出力部610は、コンテナ情報抽出部600で抽出されたコンテナ情報をコンテナ310の外に出力する。
【0047】
フレームワーク部510は、設定反映機能を有している。設定反映機能は、フレームワークの一機能として提供されてもよい。
【0048】
(サービスを構築するまでの動作)
以下において、サービスを構築するまでの情報処理システム1の動作を、
図3を用いて説明する。
図3は、サービスを構築するまでの情報処理システム1のシーケンス図である。
【0049】
利用者は、Kubernetes Operatorに対して、サービスの展開要求を行う(ステップS101)。一例として、利用者は、Kubernetes Operatorに対して、ルール定義した上でサービスの展開要求を行う。
【0050】
Kubernetes Operatorは、利用者からの対象サービスの展開要求に基づいてサービスを展開する(ステップS102)。具体的には、Kubernetes Operatorが保持しているサービス提供機能部111は、サービスの展開要求に含まれている利用者が指定したサービスの定義に基づき、対象サービスをKubernetes上に構築し、エージェント内の上限値格納部440に対してコンテナ情報の上限値を格納する。(ステップS103)。サービス提供機能部111は、格納部120に対して、Kubernetes OperatorがステップS102で格納した対象サービスの名称と、その対象サービスに設定された設定値・制限値と、を登録する。(ステップS104)。これにより、対象サービスの構築が完了する。
【0051】
(サービスを構築した後の動作)
以下において、サービスを構築した後の情報処理システム1の動作を、
図4を用いて説明する。
図4は、サービスを構築した後の情報処理システム1のシーケンス図である。
【0052】
エージェントの情報収集部131は、格納部120に格納された対象サービスの名称と、その対象サービスに設定された設定値及び制限値と、を格納部120から読み取る(ステップS201)。
【0053】
サービス情報収集部400は、ステップS201で読み取った対象サービスの名称をキーにマスターノード100に対して問い合わせを実施し、対象の対象サービスが現在使用しているリソースの使用情報であるサービス情報をマスターノード100から収集する(ステップS202)。
【0054】
コンテナ情報収集部410は、マスターノード100に対して問い合わせを行い、対象サービスが動作するコンテナ310を示す情報とそのコンテナ310の実アドレスと、を取得する。そして、コンテナ情報収集部410は、取得したコンテナ310を示す情報とそのコンテナ310の実アドレスとの情報に基づいて、フレームワーク部510のコンテナ情報出力部610にアクセスする (ステップS203) 。
【0055】
コンテナ情報抽出部600は、コンテナ情報収集部410からのアクセスがあると、このコンテナ310で使用するCPU情報(コア数・時間)、メモリの使用状況(ヒープ・非ヒープ)及びリクエスト流量の情報を含むコンテナ情報を抽出する(ステップS204)。そして、コンテナ情報出力部610は、コンテナ情報抽出部600が抽出したコンテナ情報をコンテナ情報収集部410に出力する(ステップS205)。
【0056】
コンテナ情報収集部410がコンテナ情報出力部610からのコンテナ情報を受信すると、例えば情報収集部131は、コンテナ情報に対してそのコンテナ情報を得るために要した収集時間(例えばUTC)を付与する(ステップS206)。そして、情報収集部131は、収集時間が付与されたコンテナ情報に対して、サービス情報収集部400が収集したサービス情報を関連付け(ステップS207)、関連付けた関連情報をデータ格納部430に格納する(ステップS208)。
【0057】
なお、
図4に示す処理は、エージェントが存在する限り定期的に繰り返される。
【0058】
利用者は、情報出力部134にアクセスすることが可能である。利用者は、情報出力部134にアクセスすることで、データ格納部430に登録された情報を確認することが可能となる。
【0059】
また、
図5に示すように、エージェントではデータ監視部450は、上限設定が存在されているかどうかを確認した後(ステップS301)、存在しているのであれば、定義されている上限値以上に対象サービスがコンテナの内部リソースを使用しているかどうか確認を行う(ステップS302)。その後、データ監視部450は、対象サービスが上限値以上にコンテナの内部リソースを使用しているのであれば、サービス提供機能部111に対して、Pod(ポッド)の数を削減するよう要求を行う(ステップS303)。ここで、Podとは、コンテナの集合体である。
【0060】
(第2の実施形態)
図6は、第2の実施形態に係る情報処理システム1Aの構成の一例を示す図である。情報処理システム1Aは、情報処理システム1と同様に、Kubernetesに代表されるコンテナオーケストレーションツールを利用して複数のコンテナを統合管理する。情報処理システム1Aは、第1の実施形態と比較してKubernetes Operator及びサービス提供機能部111がない点で相違する。
【0061】
第2の実施形態に係る情報処理システム1Aでは、第1の実施形態と同様に、上記(1)~上記(4)の環境を想定する。
【0062】
図6に示すように、情報処理システム1Aは、マスターノード100、第1のワーカーノード200A、第2のワーカーノード300及び第3のワーカーノード700を有する。情報処理システム1Aの構成は、いわゆるKubernetesクラスタに相当する。なお、以下の各実施形態において、第1の実施形態で説明した内容と同様の内容については、同様の符号を付すとともに、適宜説明を省略する。
【0063】
第1のワーカーノード200Aは、1つまたは複数のコンテナが割り当てられており、コンテナを動作させてサービス#2を提供する。
【0064】
第2のワーカーノード300は、1つまたは複数のコンテナが割り当てられており、コンテナを動作させてサービス#1を提供する。
【0065】
第3のワーカーノード700は、1つまたは複数のコンテナが割り当てられており、コンテナを動作させてサービス#3を提供する。すなわち、第2のワーカーノード300は、コンテナ化されたアプリケーションを実行する。
【0066】
第3のワーカーノード700は、1つまたは複数のコンテナが割り当てられており、コンテナを動作させてサービス#3を提供する。すなわち、第3のワーカーノード700は、コンテナ化されたアプリケーションを実行する。
【0067】
以下において、第3のワーカーノード700の構成について説明する。第3のワーカーノード700は、コンテナ710を有している。すなわち、第3のワーカーノード700は、マスターノード100が展開したコンテナ710を動作させる。コンテナ710は、特定のサービス#3を提供する。コンテナ710は、アプリケーション部720を含む。
【0068】
アプリケーション部720は、特定のサービス#3を提供する実体である。
【0069】
以下において、第1のワーカーノード200Aの構成について説明する。第1のワーカーノード200Aは、コンテナ130を有する。なお、第1のワーカーノード200Aには、Kubernetes Operatorは導入されていない。すなわち、特定のサービスではなく全サービスを対象に、サービス情報及びコンテナ情報を取得するのであればKubernetes Operatorを介さずにそれらの情報を収集することが可能となる。
【0070】
サービス情報収集部400は、Kubernetes上に登録されているサービス情報をマスターノード100に対して要求し、そのサービス情報を元にその後、全サービスの情報を収集する。
【0071】
コンテナ情報収集部410は、サービス情報収集部400で収集したサービス情報を元に、各フレームワーク部にアクセスを試みる。ここで、コンテナ情報収集部410は、フレームワーク部を有さないサービス(
図6に示すサービス#3)が存在する場合には、コンテナ情報の収集を断念し、収集可能なコンテナのワークフレーム部からのみ、コンテナ情報を収集する。
【0072】
以下に、Kubernetes上でシステムを構築した場合の課題を
図7~
図9を用いて説明する。例えば、
図7に示す例では、ユーザが用意したアプリケーションは複数のコンテナにより構成され、そのサービス単位にアクセス可能な仮想アドレスを持つ。この状況下で監視が行われる場合、サービス情報に対する監視となり、個々のコンテナ内のリソースの使用状況、すなわちコンテナ情報を監視することができない。そこで、コンテナ情報の監視を行うためには、このサービス情報を解析するための監視フレームワークが必要となってしまう。
【0073】
Kubernetesでは、サービスレベル・コンテナレベルでのリソースの可視化や制御などを行っているが、コンテナ内部に複数プロセスが存在する場合に、それらの情報に基づいたサービスの制御を実行することが出来ないという状況にあり、コンテナ情報の監視が望まれている。
【0074】
コンテナ情報の監視を行うためには、個々のコンテナでコンテナ情報を採取する独自採取処理を組み込んでもよい。この場合において、
図8のようにサービス情報とコンテナ情報はそれぞれ、別のデータとして発生し、この二つの要素に関連があると判断することができない。したがって、コンテナ情報とサービス情報との紐づけができない。
【0075】
Kubernetesにおけるリソースの制限は、
図9に示すように、マスターノードにより、サービス単位に実行されてもよい。Kubernetesによるリソースの制限は、サービスやコンテナの単位で実行することが可能であるが、
図9のような、コンテナ内部に複数のプロセスが存在しているような環境においては、アプリケーションが動作するプロセスAに特定した制限を行うことができない。
【0076】
上記各実施形態では、アプリケーションを実行するためのフレームワークに存在する、Metrics機能を拡張し、コンテナ情報を抽出して出力する機能を有する。これにより、コンテナ情報を監視することができる。
【0077】
上記各実施形態では、Kubernetes上にアプリケーションを含むコンテナイメージを構築するためのKubernetes Operatorを有し、Kubernetes Operator内部に下記の機能を実装する。
・Kubernetes Operatorが保持する、サービス展開機能の拡張。
・Agent機能による、サービス情報とコンテナ情報とを収集する機能。
・Agent機能による、コンテナ情報を制限する機能。
【0078】
Kubernetes Operatorを利用することにより、サービス情報とコンテナ情報を関連づけることが可能となる。さらに、コンテナ情報を制限する機能を用いることで、コンテナ内部のリソースの使用状況(コンテナ情報)を監視し、それ以上のリソースを使用することを抑制することが可能となる。
【0079】
実施形態の情報処理システム1,1Aの最小構成の実施形態について、
図10を参照して説明する。本実施形態に係る情報処理システム1,1Aは、コンテナ情報抽出部600及びコンテナ情報出力部610を有する。コンテナ情報抽出部600は、コンテナオーケストレーションツールにより管理されるコンテナの内部で使用される情報であるコンテナ情報を抽出する。コンテナ情報出力部610は、コンテナ情報抽出部600で抽出されたコンテナ情報をコンテナの外に出力する。これにより、情報処理システム1,1Aは、コンテナ情報を監視することができる。
【0080】
なお、上述した情報処理システム1,1Aの全部または一部をコンピュータで実現するようにしてもよい。この場合、上記コンピュータは、CPU、GPUなどのプロセッサ及びコンピュータ読み取り可能な記録媒体を備えてもよい。そして、上記情報処理システム1,1Aの全部または一部の機能をコンピュータで実現するためのプログラムを上記コンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムを上記プロセッサに読み込ませ、実行することによって実現してもよい。ここで、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、FPGA等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【0081】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0082】
明細書の全体において、ある部分がある構成要素を「含む」や「有する」とする時、これは、特に反対の記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含むことができるということを意味する。
【0083】
明細書に記載の「…部」の用語は、少なくとも1つの機能や動作を処理する単位を意味し、これは、ハードウェアまたはソフトウェアとして具現されてもよいし、ハードウェアとソフトウェアとの組み合わせで具現されてもよい。
【符号の説明】
【0084】
1,1A 情報処理システム
100 マスターノード
131 情報収集部
200 第1のワーカーノード
300 第2のワーカーノード
400 サービス情報収集部
410 コンテナ情報収集部
420 情報処理部
700 第3のワーカーノード
110,130,310,710 コンテナ