JP2023057535A - コンピュータ実装方法、システムおよびコンピュータプログラム(ワークロード実行のための動的スケーリング) - Google Patents
コンピュータ実装方法、システムおよびコンピュータプログラム(ワークロード実行のための動的スケーリング) Download PDFInfo
- Publication number
- JP2023057535A JP2023057535A JP2022159379A JP2022159379A JP2023057535A JP 2023057535 A JP2023057535 A JP 2023057535A JP 2022159379 A JP2022159379 A JP 2022159379A JP 2022159379 A JP2022159379 A JP 2022159379A JP 2023057535 A JP2023057535 A JP 2023057535A
- Authority
- JP
- Japan
- Prior art keywords
- pod
- containers
- container
- workload
- ephemeral
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/504—Resource capping
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】無制限/無計画のクラウド拡張の結果から例えば、管理コスト、チャージバック、容量およびリソースなどの考慮事項について懸念しているIT管理者にとって大きな脅威が生じている。【解決手段】本発明の態様は、1または複数のタスクを有するワークロードをコントローラによって受信する段階と、第1のサイドカーコンテナを有する第1のポッドを生成する段階と、ワークロードとポッドに関する1または複数のリソース割り当てメトリックとに基づいて、第1のポッドのための1または複数の一時的コンテナを生成する段階と、1または複数の一時的コンテナ内で1または複数のタスクを実行する段階と、ポッドに関する1または複数のリソース割り当てメトリックをモニタリングする段階と、ポッドに関する1または複数のリソース割り当てメトリックとワークロードとに基づいて、第1のポッド内に少なくとも1つの新たな一時的コンテナを生成する段階とを含む。【選択図】図11
Description
本発明は、概して、データ管理に関し、より詳細には、クラウド環境におけるワークロード実行の動的スケーリングに関する。
クラウドコンピューティングとは、情報コンピューティングサービス(すなわち、クラウドサービス)を供給するために、ローカルサーバ上で行うのではなく、パブリックネットワーク(例えば、インターネット)上にホストされているリモートサーバのネットワークを使用する行為を指す。これらのクラウドサービスをサービス利用者(すなわち、クラウドサービス利用者)に提供するネットワークアーキテクチャ(例えば、ハードウェアおよびソフトウェアを備える仮想化情報処理環境)は「クラウド」と称され、パブリッククラウド(例えば、クラウドサービス利用者にパブリックに提供されるクラウドサービス)もしくはプライベートクラウド(例えば、企業内のクラウドサービス利用者の特定のグループのみにクラウドサービスを供給するプライベートネットワークまたはデータセンタ)、またはコミュニティクラウド(例えば、限られた一組のクラウドサービス利用者、例えば、特定のステート/リージョンまたはステート/リージョンのセットをもつ機関にパブリックに提供されるクラウドサービスのセット)、専用の/ホストされるプライベートクラウド、または他の新進のクラウドサービス供給モデルであり得る。クラウドコンピューティングの根底にある意図は、コンピューティングリソースおよび情報技術(IT)サービスへの簡単でスケーラブルなアクセスをクラウドサービス利用者に提供することである。
クラウドサービスは、大きく4つのカテゴリ:インフラストラクチャアズアサービス(IaaS)、プラットフォームアズアサービス(PaaS)、ソフトウェアアズアサービス(SaaS)、およびマネージドサービスに分けることができる。インフラストラクチャアズアサービスとは、仮想化コンピューティングインフラストラクチャを指し、これを通じて、クラウドサービス(例えば、仮想サーバ空間、ネットワーク接続、帯域幅、IPアドレス、ロードバランサなど)が提供される。クラウドにおけるプラットフォームアズアサービスとは、開発者(すなわち、クラウドサービス利用者の一種)がクラウドを使用してアプリケーションおよびサービスを構築することを可能にするようにクラウド上にホストされているソフトウェアおよびプロダクト開発ツールのセットを指す。ソフトウェアアズアサービスとは、クラウドによってホストされ、クラウドサービス利用者がオンデマンドで利用可能なアプリケーションを指す。マネージドサービスとは、任意のクラウドサービスのために管理されたサービスプロバイダが可能にする、バックアップ管理、リモートシステム管理、アプリケーション管理、セキュリティサービスなどのようなサービスを指す。
一般に、クラウドサービスは、3つの明確な特性を有し、それらにより、従来どおりホストされるサービスから区別される。こうした明確な特性の1つめは、それがサービス利用者にオンデマンドで(例えば、分または時間単位で)販売されることである。こうした明確な特性の2つめは、それが動的である(例えば、サービス利用者は、いかなる時点でも望むだけのサービスを受けることができる)ことである。こうした明確な特性の3つめは、プライベートクラウドまたはハイブリッドクラウドではなく特にパブリッククラウドに該当するものであるが、サービスがクラウドサービスプロバイダによって完全に管理されている(例えば、サービス利用者は、好適に装備されたクライアントデバイスおよびネットワーク接続のみを必要とする)ことである。この第3の機能は、具体的にはパブリッククラウドに関連する。しかしながら、プライベートクラウドは内部IT部門またはITO(ITアウトソーシング)契約によって管理されてもよい。これらの例では、I&O(インフラストラクチャ&動作)管理者がクラウドプロバイダとして機能し、したがって、この第3の機能は同様の関連性をもつことになる。
クラウドは、組織の効果を高めてコストを節約する方途として、ビジネスおよびITユーザにより急速に採用されている。この機会と共に、企業には対処すべきいくつかの新たな難題および大きなリスクが生じる。例えば、ビジネスユーザは、ビジネスニーズを満たす独自のクラウド機能(例えば、IaaS、PaaS、およびSaaS)に急速に投資しており、アプリケーション開発者は、ツールおよび環境をプロビジョニングするのにITを関与させることなく迅速に動くことを望んでいる。
こうした動きにより、無制限/無計画のクラウド拡張の結果から、例えば、管理コスト、チャージバック、容量およびリソースなどの考慮事項について懸念しているIT管理者にとって、大きな脅威が生じている。
本発明の実施形態は、クラウド環境におけるワークロード実行の動的スケーリングを対象とする。コンピュータ実装方法の非限定的な例は、コントローラにより、1または複数のタスクを有するワークロードを受信する段階と、第1のサイドカーコンテナを有する第1のポッドを生成する段階と、ワークロードとポッドに関する1または複数のリソース割り当てメトリックとに基づいて、第1のポッドのための1または複数の一時的コンテナを生成する段階と、1または複数の一時的コンテナ内で1または複数のタスクを実行する段階と、ポッドに関する1または複数のリソース割り当てメトリックをモニタリングする段階と、ポッドに関する1または複数のリソース割り当てメトリックとワークロードとに基づいて、第1のポッド内に少なくとも1つの新たな一時的コンテナを生成する段階とを含む。
本発明の他の実施形態は、上記方法の特徴を、コンピュータシステムおよびコンピュータプログラム製品に実装する。
さらなる技術的特徴および利益が本発明の技術によって実現される。本発明の実施形態および態様が本明細書において詳細に説明され、特許請求される主題の一部とみなされる。より良好な理解のためには、詳細な説明および図面を参照されたい。
本明細書で説明される排他的権利の詳細は、明細書末尾の特許請求の範囲において具体的に示され、明確に特許請求される。本発明の実施形態の前述および他の特徴および利点は、添付図面と併せて読まれる以下の詳細な説明から明らかである。
ここで示される図は例示的である。本発明の趣旨から逸脱することなく、図または図中で説明される動作に多くの変更を行うことができる。例えば、アクションを異なる順序において実行することもできるし、アクションを追加、削除または修正することもできる。また、「結合される(coupled)」という用語およびその変形は、2つの要素間に通信経路があることを表し、それらの間に介在する要素/接続のない要素間の直接接続を暗示するものではない。これらの変形の全てが本明細書の一部とみなされる。
本発明の1または複数の実施形態は、クラウド環境におけるワークロード実行を動的にスケーリングするためのシステムおよび方法を提供する。クラウド環境は、コンテナ化されたワークロードおよびサービスを管理するプラットフォーム、例えば、Kubernetesなどであり得る。Kubernetesは、ユーザワークロードに代わって、コンピューティング、ネットワーキング、およびストレージインフラストラクチャを調整する。本発明の態様は、Kubernetesプラットフォームでの実行環境(ポッド)をスケーリングするためのシステムおよびプロセスを提供する。ポッドは、Kubernetesの基本ビルディングブロック、すなわち、作成され展開されるKubernetesオブジェクトモデルにおいて最も小さく最も単純なユニットである。ポッドは、分散型コンピューティング環境、例えば、コンピュータクラスタにおける実行過程を表す。ポッドは、アプリケーションコンテナ(または場合によっては複数のコンテナ)をカプセル化し、ストレージリソースと、ユニークなネットワークIPと、コンテナがどのように実行すべきかを統制するオプションとを含む。ポッドは、展開のユニット、すなわち、単一のコンテナ、または密に結合されリソースを共有する少数のコンテナのいずれかから成り得る、Kubernetesにおけるアプリケーションの単一のインスタンスを表す。本発明のさらなる態様は、あるポッドにおいて、そのポッドについてモニタリングされるリソース割り当てメトリックに基づいて複数のコンテナを作成することを可能にする。これらの複数のコンテナは、タスク毎に新たなポッドもしくはコンテナまたはその組み合わせを絶えず生成する必要なしに、タスクを並行して実行することを可能にする。さらに、より大きなワークロードのために、複数のタスクを並行して実行するように、ポッドマネージャおよびコントローラによって管理される、これらの複数のコンテナを含む追加のポッドを生成することができる。利用可能なリソースが変化した場合、ポッドもしくはコンテナまたはその組み合わせの作成もしくは終了またはその両方を行うことができる。これにより、タスクを並行して実行するようにポッドおよびコンテナをスケーリングしてタスク実行を最大化することが可能になる。
新進の情報技術(IT)供給モデルはクラウドコンピューティングであり、これにより、共有リソース、ソフトウェア、および情報がインターネットを介してコンピュータおよび他のデバイスにオンデマンドで提供される。クラウドコンピューティングは、ITコストおよび複雑性を著しく低減させると共に、ワークロード最適化およびサービス供給を改善することができる。このアプローチでは、HTTPを介して従来のWebブラウザによってアクセス可能なインターネットベースのリソースから、アプリケーションインスタンスをホストし、利用可能にすることができる。例示的なアプリケーションは、電子メール、カレンダ、連絡先管理、およびインスタントメッセージなどのメッセージ機能の一般的なセットを提供するものであり得る。次にユーザがインターネット上でサービスに直接アクセスする。このサービスを使用することで、企業は、その電子メール、カレンダ、もしくはコラボレーションインフラストラクチャ、またはその組み合わせをクラウド内に置き、エンドユーザは、適切なクライアントを使用して、各自の電子メールにアクセスしたり、カレンダ動作を実行したりする。
クラウドコンピュートリソースは、通常、仮想サーバか、またはデータセンタ施設内の物理サーバ上にマッピングされるいわゆる「仮想マシン」(VM)の中でアプリケーションを実行する仮想化アーキテクチャを使用して、1または複数のネットワークアプリケーションを実行する大きなサーバファームに収容されるのが一般的である。仮想マシンは通常、物理リソースを仮想マシンに割り当てる制御プログラムであるハイパーバイザの上で実行する。近代のハイパーバイザは、主にホストCPUから仮想化専用ハードウェア機能を使用することによって効率的かつ完全な仮想化を行うハードウェア支援仮想化を使用することが多い。
オペレーティングシステム(OS)レベル仮想化は、仮想化のための別のアプローチである。OSレベル仮想化は、コンテナと通常呼ばれる複数の隔離されたユーザ空間インスタンスについて、オペレーティングシステムカーネルのサポートを介してコンピュータのリソースをパーティション化することを可能にする。したがって、この仮想化アプローチは、コンテナベースの仮想化と称されることが多い。コンテナは、エンドユーザには、別個のマシンと区別がつかない場合がある。コンテナベースの仮想化は、クラウド環境において広く使用されている。例えば、現在のデータセンタの多くにおいて、ワークロードはコンテナ内で実行される。コンテナは、ワークロードからの変化する需要に対するより良好な俊敏性およびオーケストレーションを提供することができる。コンテナベースの仮想化には、多くの技術が使用されている。これらの技術には、例えば、後述する名前空間およびcgroupが含まれる。
代表的なコンテナクラウドコンピュータ環境では、ホストがLinux(登録商標)カーネルなどのオペレーティングシステムを実行する。上記のように、「コンテナ」という用語は、単一のオペレーティングシステムカーネルを使用して制御ホスト上で隔離されたコンピューティングワークロード(コンテナ)を実行するためのOSレベル仮想化メカニズムを指す。このアプローチは、単一のオペレーティングシステムによって管理されているリソースを、隔離されたグループへと効果的にパーティション化して、隔離されたグループ間のリソース使用量の相反する需要のバランスを良くする。他のタイプの仮想化とは対照的に、命令レベルのエミュレーションとジャストインタイムコンパイルのどちらも必要ない。加えて、コンテナは、特別な解釈のメカニズムなしにコアCPUにネイティブな命令を実行できる。オペレーティングシステムは、コンテナを作成してコンテナに入る方途を提供することにより、アプリケーションに、基礎となるリソースの多くを共有すると同時に別個のマシンで実行しているような錯覚を与える。
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載される教示の実装形態はクラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているかまたは今後に開発される任意の他のタイプのコンピューティング環境と併せて実装することが可能である。
クラウドコンピューティングは、管理労力またはサービスプロバイダとのインタラクションを最小限に抑えながら迅速にプロビジョニングおよびリリースできる構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールに対する簡便なオンデマンドネットワークアクセスを可能にするための、サービス供給モデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの展開モデルを含み得る。
特性は以下のとおりである。
オンデマンドセルフサービス:クラウド利用者は、サービスプロバイダとのヒューマンインタラクションを必要とすることなく、必要に応じて自動的に、サーバタイムおよびネットワークストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
幅広いネットワークアクセス:複数の機能が、ネットワークを通じて利用可能であり、異なる種類のシンクライアントプラットフォームまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムによってアクセスされる。
リソースプーリング:プロバイダのコンピューティングリソースが、マルチテナントモデルを使用して複数の利用者にサービス提供するようにプールされ、異なる物理リソースおよび仮想リソースが、需要に従って動的に割り当てられ、また再割り当てされる。利用者は概して、提供されたリソースの正確な位置に対する制御権も知識も有しないが、より高い抽象化レベル(例えば、国、州、またはデータセンタ)において位置を指定することが可能であり得るという点で、位置の独立性がある。
迅速な順応性:複数の機能を迅速かつ柔軟に、場合によっては自動的にプロビジョニングし、即座にスケールアウトし、迅速にリリースして即座にスケールインすることができる。利用者にとっては、多くの場合、プロビジョニングに利用可能な機能が無制限にあるように見え、いつでも任意の量で購入可能である。
測定されたサービス:クラウドシステムは、ある程度の抽象化レベルでサービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブユーザアカウント)に適切な計測機能を活用することにより、リソース使用を自動的に制御し最適化する。リソース使用量をモニタリングし、制御し、レポートすることで、利用されるサービスのプロバイダおよび利用者の両方に透明性を提供することができる。
サービスとしてのインフラストラクチャ(IaaS):利用者に提供される機能は、処理、ストレージ、ネットワーク、および他の基礎的なコンピューティングリソースをプロビジョニングすることであり、利用者は、オペレーティングシステムおよびアプリケーションを含み得る任意のソフトウェアを展開して実行することが可能である。利用者は、基礎となるクラウドインフラストラクチャを管理することも制御することもないが、オペレーティングシステム、ストレージ、展開したアプリケーションに対する制御権を有し、場合によっては、選択されたネットワーキングコンポーネント(例えば、ホストファイアウォール)の限定的な制御権を有する。
展開モデルは以下のとおりである。
プライベートクラウド:クラウドインフラストラクチャは、ある組織のためだけに運用される。プライベートクラウドは、その組織またはサードパーティによって管理されてもよいし、オンプレミスまたはオフプレミスで存在してもよい。
コミュニティクラウド:クラウドインフラストラクチャは、幾つかの組織で共有されており、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンスに関わる考慮事項)を有する特定のコミュニティをサポートする。コミュニティクラウドは、これらの組織またはサードパーティによって管理されてもよいし、オンプレミスまたはオフプレミスで存在してもよい。
パブリッククラウド:クラウドインフラストラクチャは、一般大衆または大規模な業界団体に利用可能にされ、クラウドサービスを販売する組織により所有されている。
ハイブリッドクラウド:クラウドインフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)からなる構成物であり、各クラウドは独自のエンティティのままであるが、データおよびアプリケーションの移植性(例えば、クラウド間で負荷分散するためのクラウドバースト)を可能にする標準化技術または独自技術によって共に結びつけられている。
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味相互運用性を重視したサービス指向型である。クラウドコンピューティングの中心には、相互接続されたノードからなるネットワークを含むインフラストラクチャが存在する。
ここで図1を参照すると、例示的なクラウドコンピューティング環境50が示されている。図示のように、クラウドコンピューティング環境50は、1または複数のクラウドコンピューティングノード10を備え、これと、クラウド利用者が使用するローカルコンピューティングデバイス、例えばパーソナルデジタルアシスタント(PDA)もしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54N、またはその組み合わせなどが通信し得る。ノード10は、互いに通信し得る。これらは、上記で説明したようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、もしくはハイブリッドクラウド、またはこれらの組み合わせなどの、1または複数のネットワーク内で物理的にまたは仮想的にグループ化されていてもよい(図示せず)。これにより、クラウドコンピューティング環境50が、サービスとしてのインフラストラクチャ、プラットフォーム、もしくはソフトウェア、またはその組み合わせを提供することが可能になり、こうしたもののために、クラウド利用者がローカルコンピューティングデバイス上にリソースを維持する必要はない。図1に示されるコンピューティングデバイス54A~Nのタイプが例示のみを意図していること、また、コンピューティングノード10およびクラウドコンピューティング環境50が、任意のタイプのネットワークもしくはネットワークアドレス可能な接続(例えば、webブラウザを使用する)またはその両方を介して、任意のタイプのコンピュータ化デバイスと通信し得ることは理解されよう。
ここで図2を参照すると、クラウドコンピューティング環境50(図1)によって提供される機能抽象化層のセットが示されている。図2に示されたコンポーネント、層、および機能が、例示のみを意図するものであり、本発明の実施形態がこれに限定されるものではないことを、予め理解されたい。図示のように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60には、ハードウェアコンポーネントおよびソフトウェアコンポーネントが含まれている。ハードウェアコンポーネントの例には、メインフレーム61、RISC(縮小命令セットコンピュータ)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、ストレージデバイス65、ならびにネットワークおよびネットワーキングコンポーネント66が含まれる。いくつかの実施形態では、ソフトウェアコンポーネントには、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68が含まれる。
仮想化層70は、抽象化層を提供し、ここから、以下の仮想エンティティの例:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75が提供され得る。
一例において、管理層80は、以下で説明される機能を提供し得る。リソースプロビジョニング81では、クラウドコンピューティング環境内でタスクを実行するのに利用されるコンピューティングリソースおよび他のリソースの動的調達を行う。計測および価格設定82では、クラウドコンピューティング環境内でリソースが利用されるときのコストの追跡を行い、これらのリソースの消費に対して課金または請求を行う。一例において、これらのリソースは、アプリケーションソフトウェアライセンスを備え得る。セキュリティでは、クラウド利用者およびタスクの同一性確認、ならびにデータおよび他のリソースの保護を行う。ユーザポータル83では、利用者およびシステム管理者のためにクラウドコンピューティング環境へのアクセスを行う。サービスレベル管理84では、必要なサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を行う。サービスレベルアグリーメント(SLA)計画および履行85は、将来の要件がSLAに従って予期されるクラウドコンピューティングリソースの事前の取り決めおよび調達を行う。
ワークロード層90は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の供給93、データ解析処理94、トランザクション処理95、およびワークロード実行のための動的スケーリング96が含まれる。
図3を参照すると、本明細書の教示を実施するための処理システム300の一実施形態が示されている。処理システム300は、コンピューティングノード10として実装することができる。さらに、システム300の要素の機能の一部または全部をクラウド50のノード10(図1および2に示す)として実装してもよい。クラウドコンピューティングノード10は、好適なクラウドコンピューティングノードの一例に過ぎず、本明細書で説明する発明の実施形態の使用または機能の範囲に関する何らかの制限を示唆することを意図するものではない。この実施形態では、システム300は、1または複数の中央処理装置(プロセッサ)21a、21b、21cなど(プロセッサ21と総称または汎称される)を有する。1または複数の実施形態において、各プロセッサ21は、縮小命令セットコンピュータ(RISC)マイクロプロセッサを含み得る。プロセッサ21は、システムバス33を介してシステムメモリ34および様々な他のコンポーネントに結合されている。リードオンリメモリ(ROM)22は、システムバス33に結合されており、システム300の特定の基本機能を制御する基本入力/出力システム(BIOS)を含んでいてもよい。
図3はさらに、システムバス33に結合された入力/出力(I/O)アダプタ27およびネットワークアダプタ26を示す。I/Oアダプタ27は、ハードディスク23もしくはテープストレージドライブ25またはその両方、または他の任意の同様のコンポーネントと通信するスモールコンピュータシステムインタフェース(SCSI)アダプタであり得る。I/Oアダプタ27、ハードディスク23、およびテープストレージデバイス25は、本明細書ではマスストレージ24と総称される。処理システム300上で実行されるオペレーティングシステム40は、マスストレージ24に格納され得る。ネットワークアダプタ26は、バス33を外部ネットワーク36に相互接続し、データ処理システム300が他のそのようなシステムと通信することを可能にする。グラフィックス集約的なアプリケーションの性能を改善するグラフィックスアダプタおよびビデオコントローラを含み得るディスプレイアダプタ32により、システムバス33にスクリーン(例えば、ディスプレイモニタ)35が接続される。一実施形態では、アダプタ27、26、および32は、中間バスブリッジ(図示せず)を介してシステムバス33に接続される1または複数のI/Oバスに接続されてもよい。ハードディスクコントローラ、ネットワークアダプタ、およびグラフィックスアダプタなどの周辺デバイスを接続するための好適なI/Oバスは、通常、ペリフェラルコンポーネントインターコネクト(PCI)などの共通プロトコルを含む。追加の入力/出力デバイスが、ユーザインタフェースアダプタ28およびディスプレイアダプタ32を介してシステムバス33に接続されるものとして示されている。キーボード29、マウス30、およびスピーカ31は全て、例えば複数のデバイスアダプタを単一の集積回路に統合するスーパーI/Oチップを含み得るユーザインタフェースアダプタ28を介してバス33に相互接続されている。
例示的な実施形態において、処理システム300は、グラフィックス処理ユニット41を含む。グラフィックス処理ユニット41は、ディスプレイに出力するように意図されたフレームバッファ内での画像の作成を加速するためにメモリを操作および変更するように設計された専用電子回路である。一般に、グラフィックス処理ユニット41は、コンピュータグラフィックスの操作および画像処理において非常に効率的であり、高度に並列な構造を有するので、大きなブロックのデータの処理が並行して行われるアルゴリズムの場合に汎用CPUよりも効果的である。
したがって、図3のように構成されている場合、システム300には、プロセッサ21の形態の処理機能、システムメモリ34およびマスストレージ24を含むストレージ機能、キーボード29およびマウス30などの入力手段、ならびにスピーカ31およびディスプレイ35を含む出力機能が含まれる。一実施形態では、システムメモリ34およびマスストレージ24の一部は、集合的にオペレーティングシステムを格納し、図3に示される様々なコンポーネントの機能を連係させる。
図4および5は、完全仮想化およびOSレベル仮想化を使用するコンピュートノード400および500をそれぞれ示す。本発明のいくつかの実施形態は、これらのタイプのコンピュートノードのいずれかを用い、また、単一または複数のコンピュートノードでこれらのコンピュートノードが組み合わせられたハイブリッド環境において使用され得る。
図4に示されるように、コンピュートノード400の各々には、ハードウェア406が含まれ、これには、プロセッサ(またはCPU)407、メモリ408、ネットワークインタフェースカード(NIC)409、およびディスクドライブ410が含まれ得る。ディスクドライブ410は、ソリッドステートドライブもしくはハードディスクドライブ、またはこれら2つの何らかの組み合わせを含み得る。コンピュートノード400は、ハードウェア上でホストオペレーティングシステム405を実行する。コンピュートノード400には、ハードウェア406を共有し管理するためのハイパーバイザ404も含まれ、互いから隔離された複数の異なる環境401が同じ物理マシン400上で実行されることが可能になっている。ハイパーバイザ404は、主にホストCPU 407から仮想化専用ハードウェア機能を使用することによって効率的かつ完全な仮想化を行うハードウェア支援仮想化を使用し得る。各コンピュートノード400には、1または複数の仮想マシン401が含まれ、その各々が、ゲストオペレーティングシステム403と、ゲストオペレーティングシステム403上で実行する1または複数のアプリケーションプログラム(またはアプリケーション)402とを含む。
同様に、図5に示されるように、コンピュートノード500の各々には、ハードウェア506が含まれ、これには、プロセッサ(またはCPU)507、メモリ508、ネットワークインタフェースカード(NIC)509、およびディスクドライブ510が含まれ得る。ディスクドライブ510は、ソリッドステートドライブもしくはハードディスクドライブ、またはこれら2つの何らかの組み合わせを含み得る。コンピュートノード500は、ハードウェア上でホストオペレーティングシステム505を実行する。各コンピュートノード500には、1または複数のコンテナ501が含まれ、その各々が、1または複数のアプリケーション502を含む。
いくつかの実施形態によると、コンピュートノード500には、1または複数のポッド503が含まれていてもよく、その各々には、1または複数のコンテナ501が含まれ、その各々には、1または複数のアプリケーション502が含まれる。例えば、Kubernetesにおいて、コンテナはポッド内で実行される。
「Kubernetes」は、コンテナ化されたワークロードおよびサービスを管理するための、ポータブルで拡張可能なオープンソースプラットフォームである。これは、宣言的構成と自動化の両方を容易にする。Kubernetesは、ユーザワークロードに代わって、コンピューティング、ネットワーキング、およびストレージインフラストラクチャを調整する。Kubernetesはオーケストレーションフレームワークの一例である。複数のコンピュートノードにおけるコンテナ化されたワークロードが、コンテナオーケストレーションマネージャ(COM)によって管理され得る。コンテナオーケストレーションマネージャ(COM)の一例は、Kubernetes Masterである。幾つかのバイナリコンポーネント(例えば、マスタコンポーネント、ノードコンポーネント、およびアドオン)が、機能的なKubernetesクラスタを供給するために利用される。マスタコンポーネントは、Kubernetesクラスタの制御プレーン(「Kubernetes制御プレーン」とも称される)を提供する。マスタコンポーネントは、kube-apiserver、etcd、kube-scheduler、kube-controller-manager、およびcloud-controller-managerを含み得るが、これらに限定されない。マスタコンポーネントは、Kubernetesクラスタについての包括的な決断を下す。例えば、マスタコンポーネントは、スケジュールを扱う。加えて、マスタコンポーネントは、クラスタイベントの検出およびクラスタイベントへの応答において利用される。例えば、マスタコンポーネントは、複製コントローラの「レプリカ」フィールドが満たされていない場合に、新たなポッドの起動を担当する。マスタコンポーネントは、クラスタ内の任意のマシンで実行可能である。とはいえ、セットアップスクリプトは通常、全てのマスタコンポーネントを同じマシン上で開始させ、ユーザコンテナをそのマシンで実行することはない。
ノードコンポーネントは、Kubernetesクラスタ内のあらゆるコンピュートノード上で実行する。ノードコンポーネントは、実行しているポッドの維持およびKubernetesランタイム環境の提供を担当する。ノードコンポーネントは、kubelet、kube-proxy、およびコンテナランタイムを含み得るが、これらに限定されない。kubeletは、コンテナがポッド内で実行していることを確認するエージェントである。kubeletは、様々なメカニズムを介して提供されたPodSpecのセットにおいて指定されたコンテナが実行中で健全であることを保証する。kube-proxyはネットワークプロキシである。kube-proxyは、コンピュートノードに対するネットワークルールを維持し、接続転送を実行することにより、Kubernetesサービス抽象化を可能にする。
コンテナランタイムは、コンテナの実行を担当するソフトウェアである。より具体的に言えば、コンテナランタイムは、コンテナのライフサイクルを扱うノードコンポーネントである。コンテナランタイムは、コンテナワークロードの作成、開始、停止、および除去などの基本概念を実装する。Kubernetesは、Docker、containerd、CRI-O、およびrktletを含むがこれらに限定されない幾つかのランタイムをサポートする。
より一般的に言えば、Kubernetesは、Kubernetesにより提供されるコンテナランタイムインタフェース(CRI)のあらゆる実装をサポートする。CRIは、様々なコンテナランタイムの容易なプラグインを可能にする。CRIがKubernetes 1.5に導入される前には、デフォルトのDockerイメージレポジトリ、およびそのデフォルトのOCI準拠ランタイムであるrunCのみが使用されていた。オープンコンテナイニシアティブ(OCI)により、OCI準拠コンテナランタイムのAPIを詳細に示すランタイム仕様が作成された。runC、runV、およびIntelのClear Containers(「cc-runtime」としても知られる)は、OCI準拠コンテナランタイムの例である。runCは、コンテナのチェックポイントおよびリストアを行うために、CRIU、すなわち、以下で説明するユーザ空間におけるチェックポイント/リストアのためのビルトインサポートを有する。runVは、OCI用のハイパーバイザベースのDockerランタイムである。runVは、「Hyper runV」とも称される。
CRIランタイムは、より高い抽象化レベルにあり、OCI準拠ランタイムと混同してはならない。CRIランタイムは、「CRIシム」とも称される。CRIシムは、cri-containerd、CRI-O、dockershim、およびfraktiを含む。いくつかのCRIシム(例えば、cri-containerd、CRI-O、およびdockershim)は、OCI準拠ランタイムを呼び出すが、その他(例えば、frakti)は、モノリシックなソリューションである。
少なくともいくつかのCRIシムは、単一のコンピュートノード上で実行する複数のランタイムをサポートする。例えば、CRI-Oは、信頼できるサンドボックスおよび信頼できないサンドボックスの概念をサポートする。Kubernetesでは、1または複数のVMベースのポッドと、1または複数のcgroup/名前空間ベースのポッドとを合わせたものを、ポッドアノテーションおよびデフォルトCRI-O構成に基づいて、単一のコンピュートノード上で実行できる。runCによって行われるのと同様に、名前空間およびcgroupを介して、VMベースのポッド内で実行しているコンテナが隔離および管理され得る。
アドオンは、クラスタ機能の実装を担当するポッドおよびサービスである。アドオンは、クラスタDNS(すなわち、KubernetesサービスのためのDNSレコードを提供するDNSサーバ)、ダッシュボード(すなわち、クラスタ内で実行しているアプリケーションならびにクラスタ自体の管理およびトラブルシュートをユーザが行うことを可能にするKubernetesクラスタ用webベースUI)、コンテナリソースモニタリング(すなわち、中央データベース内のコンテナについての一般的な時系列メトリックの記録、ならびにそのデータベースに記録されたデータをブラウズするためのUIの提供を担当する)、およびクラスタレベルロギング(すなわち、検索/ブラウズインタフェースを備えた中央ログストアへのコンテナログの保存を担当する)を含むが、これらに限定されない。
ここで、本発明の態様により具体的に関連する技術の概要を参照すると、コンテナ化されたワークロードおよびサービスを管理するKubernetesプラットフォームは、1または複数のコンテナを含むポッドを立ち上げるための起動プロセスを必要とする。このポッド起動プロセスは、3段階を要する。第1の段階は、初期化/準備段階である。第2の段階は、コンテナランタイムインタフェース(CRI)によるサンドボックスコンテナの作成である。最後(第3)の段階は、実際のコンテナの作成である。第1および第2の段階は、かなりの期間(例えば、2~3秒)を要する場合がある。Kubernetesポッドは、タスク毎にこのプロセスを端から端まで通過しなければならず、短いワークロードを実行するのにかなりの時間を要する場合がある。この期間が問題を生じさせ得る例示的なケースは、例えば2つある。第1のケースは、各ユーザ論理に対してKubernetesクラスタ内で1または複数のポッドを開始する必要がある場合に、クラウド環境内の瞬時スループットが高いときである。これは、多数の同様のポッドを開始させる。これらの同様のポッドは、APIの呼び出しのような同様の短いワークロードのためのものであり得る。ポッドを開始するのに2~3秒またはそれ以上かかるので、ワークロード全体の大部分が占められる。第2のケースは、パイプラインがあり、1つの段階が複数のタスクを含む可能性があり、同様のKubernetesがタスク毎にポッドを開始する必要があるときである。パイプラインにおけるタスクの数が大きければ、ハードウェアの限界のために、全てのポッドを開始することはできない。
本発明の1または複数の実施形態は、クラウド環境におけるワークロード実行を動的にスケーリングするためのシステムおよびプロセスを提供することにより、従来技術の上記欠点に対処する。複数の態様は、Kubernetesクラスタのポッドにおいてワークロードを実行するように複数のコンテナを動的に開始することを含む。これらのポッドおよびコンテナにおけるワークロードの実行のために割り当てられたリソースについて、リソースメトリックおよび統計が収集され得る。ワークロードキューに基づき、Kubernetesクラスタ内の他のノードに対して、ポッドのスケールアップもしくはスケールダウンまたはその両方を行うことができる。そして、コンテナをワークロードに関連付けて、ワークロードの実行中にモニタリングすることができる。
図6は、本発明の1または複数の実施形態によるKubernetesポッドのブロック図を示す。Kubernetesポッドは、分散型コンピューティング環境、例えば、コンピュータクラスタにおける実行過程を表す。ポッドは、アプリケーションコンテナ(または場合によっては複数のコンテナ)をカプセル化し、ストレージリソースと、ユニークなネットワークIPと、コンテナがどのように実行すべきかを統制するオプションとを含む。典型的な構成において、Kubernetesポッド602は、上記で説明した3段階の作成プロセスに従わなければならないメインコンテナ604を動作させる。ここでのメインコンテナ604は、ワークロードのタスクを実行するために利用される。また、上記で言及したように、コンテナの作成が2~3秒を要することで、タスクの実行、特に実行に長い時間を必要としないタスクの実行に遅延が生じ得る。本発明の1または複数の実施形態では、ワークロードを実行するために作成されるKubernetesポッド606が提案される。この場合、メインコンテナは、サイドカーコンテナ608として動作する。サイドカーコンテナ608は、例えば軽量のループを実行することにより、ポッド606が終了して結果を伝送することを防ぐ。さらに、一時的コンテナ610のうちの1または複数(複数)が、ポッド606において生成される。ワークロードおよび関連付けられたタスクは、これらの一時的コンテナ610で実行でき、サイドカーコンテナ608は、ポッドが終了することを防ぐ。サイドカーコンテナ608を使用すると、タスク毎に新たなコンテナを初期化してサンドボックス化する必要が回避され、ワークロードの実行時間が低減する。
本発明の1または複数の実施形態では、一時的コンテナに対するリソースメトリックを追跡するポッド管理モジュールにより、Kubernetesポッド606を管理することができる。現在、一時的コンテナにリソースを設定することは禁止されている。しかしながら、1または複数の実施形態では、ポッドマネージャがリソース制限をかけることにより動的に一時的コンテナを作成して、特定のコンテナがポッドリソースの限界を超えてリソースを奪うことを回避することができる。図7は、本発明の1または複数の実施形態によるポッドのリソース管理を行うポッドマネージャのブロック図を示す。1または複数の実施形態では、ポッドマネージャ702は、リソースメトリックAPI 730からのリソース利用メトリックの取得もしくは受信またはその両方を行うことができる。ポッドマネージャ702は、開始可能なコンテナの数を計算することができ、この数は、ワークロードもしくはユーザ定義済みのメトリックまたはその組み合わせに関する利用可能なリソースの分析に基づき得る。ポッドマネージャ702は次に、リソースが割り当てられているCgroup 710を有するコンテナを作成し、終了させる。これらの段階は、ワークロードの実行に必要なだけ繰り返すことができる。ポッドマネージャ702は、コンテナランタイムインタフェース(CRI)704およびコンテナランタイムエンジン705とインタラクトして、動的にコンテナ720を作成し、終了させる。サイドカーコンテナ718は、以前に言及したように、例えば、軽量のループを実行して、ポッド706が実行することを防ぐ。コンテナ720は、ポッド内の名前空間708を使用して構築できる。Linux(登録商標)カーネルは、「名前空間」と称される機能を有する。Linux(登録商標)カーネル名前空間は、Linux(登録商標)コンテナの主要なビルディングブロックであり、ネットワーク、プロセス、ユーザ、およびファイルシステムなどの異なる「ユーザ空間」内にアプリケーションを隔離する。名前空間は、プロセス集合体のためにシステムリソースを隔離し、仮想化する。仮想化できるリソースのいくつかの例は、プロセスID、ホスト名、ユーザIDなどを含む。名前空間は通常、名前空間タイプを指し、また、これらのタイプの特定のインスタンスを指すこともある。Linux(登録商標)オペレーティングシステムは、各名前空間タイプの単一のインスタンスで初期化される。初期化後、追加の名前空間が作成または結合されてもよい。また、Linux(登録商標)カーネルは、コントロールグループと呼ばれる機能も提供し、コントロールグループは、「cgroup」としても知られ、リソース(CPU、メモリ、ブロックI/O、ネットワークなど)の制限および優先順位付けを可能にする。cgroup機能は、CPUカウントおよび使用量、ディスク性能、メモリ、ならびに他のプロセス限界など、様々なホストリソースを制限する。
本発明の1または複数の実施形態では、リソース割り当てもしくはワークロードまたはその組み合わせに基づいて、ポッド内に一時的コンテナを作成し、終了させることができる。また、本発明の1または複数の実施形態では、ポッドのスケールアップもしくはスケールダウンまたはその両方を行うことができる。ポッド内の一時的コンテナの数が増加するにつれ、ポッドリソースは、ポッド内に一時的コンテナをそれ以上作成できなくなる限界に近づく。この場合、水平ポッドオートスケーラ(HPA)を利用して、ポッドのスケールアップもしくはスケールダウンまたはその両方を行うことができる。図8は、本発明の1または複数の実施形態によるポッドマネージャおよび水平ポッドオートスケーラのブロック図を示す。ポッドマネージャ802は、ワークロード850を再び受信し、リソースメトリックAPI 830から収集されたリソースメトリック情報を利用して、サイドカーコンテナ814と1または複数の一時的コンテナ812とを有するポッド810を作成することができる。ポッドマネージャ802は、リソースもしくはワークロードキューまたはその組み合わせに基づいて、カスタムメトリックAPI 804および構成を更新することによってポッドをスケールアップまたはスケールダウンするようHPA 806をトリガすることができる。したがって、より多くのポッド810を作成して、ワークロード850を実行できる。さらに、ワークロードキューがより小さい(閾値よりも低い)とき、HPA 806はスケールダウンすることができ、1または複数のポッド810を終了してリソースを節約することができる。いくつかの実施形態では、ワークロード850は、ワークロードキューマネージャから受信され得る。複製コントローラ808は、複数のポッド810を作成することにより、ポッドをスケーリングすることができる。これは「複製」と称される。複製されたポッドは、コントローラと呼ばれる抽象化によるグループとして作成され管理され得る。
本発明の1または複数の実施形態では、複数のポッドのスケールアップもしくはスケールダウンまたはその両方を行うことができる。複数のポッドの作成に伴い、ワークロードをモニタリングし、ポッドマネージャおよびワークロードキューマネージャと通信してワークロードを維持するために、コントローラモジュールが必要とされる。図9は、本発明の1または複数の実施形態によるポッドマネージャおよびワークロードキューと通信しているコントローラモジュールのブロック図を示す。1または複数の実施形態では、コントローラ904は、サイドカーコンテナ914と1または複数の一時的コンテナ912とを有するポッド910を作成するポッドマネージャ902と通信することができる。コントローラ904は、ワークロードキュー908を管理するキューマネージャ906とも通信する。1または複数の実施形態では、ワークロードキュー908は、メッセージ・キューイング・テレメトリ・トランスポート(MQTT)キューであり得る。MQTTキューは例示であり、本明細書で使用されるキューのタイプを限定する意図はない。本発明の1または複数の実施形態では、コントローラ904は、APIサーバからのタスクの定義の取得もしくは受信またはその両方を行う。コントローラ904は、タスクをキュー908にキューマネージャ906を介して入れることができる。コントローラ904は次に、ポッドマネージャ902をトリガして、一時的コンテナ912およびサイドカーコンテナ914を作成させる。サイドカーコンテナ914は、一時的コンテナ912をモニタリングし、結果をメッセージキュー908に送信する。コントローラ904は、メッセージキュー908から結果を取得し、それにしたがってタスクを更新する。
図10は、本発明の1または複数の実施形態によるクラウド環境におけるワークロード実行を動的にスケーリングするためのシステムを示す。システム1000は、図6~9で説明したコンポーネントの多くを含む。したがって、システム1000は、ポッドマネージャ1002と、コントローラ1004と、キューマネージャ1006と、リソースメトリックAPI 1008と、HPA 1010と、複製コントローラ1012と、コンテナランタイムインタフェース1014と、ワークロード/メッセージキュー116とを含む。1または複数のタスク1018がAPIサーバ1024から入来してコントローラ1004に送信され得る。コントローラ1004は、タスクをキュー1016にキューマネージャ1006を通して入れる。コントローラ1004は、ポッドマネージャ1002をトリガして、ポッド1032内の一時的コンテナ1034、ならびにモニタリングおよびキュー1016への結果の送信のためのサイドカーコンテナ1036を作成させることができる。リソースメトリックAPI 1008は、ポッド1032のリソースメトリックをモニタリングする。HPA 1010および複製コントローラ1012は、タスク、リソース、もしくはワークロード、またはその組み合わせに基づいて、ポッドの追加もしくは終了またはその両方を行うことができる。ポッドマネージャ1002は、各ポッド1032を管理し、リソース割り当てメトリックに基づいて一時的コンテナ1034の追加もしくは終了またはその両方を行うことができる。
1または複数の実施形態では、システム1000は、Etcd 1022およびノードコンポーネントkubelet 1026などのKubernetesコンポーネントも含む。Etcdは、任意の所与の時点におけるクラスタの全体的状態を表す、Kubernetesクラスタの構成データを確実に格納する、永続的で軽量の分散型キー値データストアである。kubeletは、コンテナがポッド内で実行していることを確認するエージェントである。kubeletは、様々なメカニズムを介して提供されたPodSpecのセットにおいて指定されたコンテナが実行中で健全であることを保証する。
図11は、本発明の1または複数の実施形態によるクラウド環境におけるワークロード実行を動的にスケーリングするための方法のフロー図を示す。方法1100の少なくとも一部は、例えば、図1に示されるパブリッククラウド120もしくはプライベートクラウド130またはその組み合わせのような1または複数のサーバによって実行できる。方法1100は、ブロック1102に示されるように、コントローラにより、1または複数のタスクを有するワークロードを受信する段階を含む。ブロック1104において、方法1100は、第1のサイドカーコンテナを有する第1のポッドを生成する段階を含む。第1のポッドは、例えば、Kubernetesポッドである。ブロック1106において、方法1100は、ワークロードとポッドに関する1または複数のリソース割り当てメトリックとに基づいて、第1のポッドのための1または複数の一時的コンテナを生成する段階を含む。方法1100は、ブロック1108において、1または複数の一時的コンテナ内で1または複数のタスクを実行する段階を含み得る。サイドカーコンテナは、例えば、軽量のループを実行して、ポッドが終了することを防ぐ。ブロック1110において、方法1100は、ポッドに関する1または複数のリソース割り当てメトリックをモニタリングする段階を含む。リソース割り当てメトリックは、リソースモニタリングAPIから取得され得る。そして、ブロック1112において、方法1100は、ポッドに関する1または複数のリソース割り当てメトリックとワークロードとに基づいて、第1のポッド内に少なくとも1つの新たな一時的コンテナを生成する段階を含む。
追加のプロセスを含めることもできる。図11に示されるプロセスは例示を表し、本開示の範囲および趣旨から逸脱することなく、他のプロセスを追加してもよく、または既存のプロセスを除去、修正、もしくは再編成してもよいことを理解されたい。
本明細書では、本発明の様々な実施形態が、関連する図面を参照して説明される。本発明の代替的な実施形態は、本発明の範囲から逸脱することなく考案することができる。以下の説明および図面における要素間で、様々な接続および位置関係(例えば、上方、下方、隣接など)が記載される。これらの接続もしくは位置関係またはその両方は、特に明記しない限り、直接的でも間接的でもよく、本発明がこれに関して限定されることは意図されていない。したがって、エンティティ同士の結合は、直接的な結合または間接的な結合のいずれを指してもよく、エンティティ間の位置関係は、直接的な位置関係でも間接的な位置関係でもよい。さらに、本明細書において説明される様々なタスクおよびプロセス段階は、本明細書において詳細に説明されていない追加の段階または機能を有する、より包括的な手順またはプロセスに組み込むことができる。
本明細書で説明される方法のうちの1または複数は、以下の技術:データ信号に対して論理機能を実装するための論理ゲートを有するディスクリート論理回路、適切な組み合わせ論理ゲートを有する特定用途向け集積回路(ASIC)、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)などのいずれかまたはその組み合わせを用いて実施することができ、これらの各技術は、当技術分野で周知である。
簡潔さのために、本発明の態様の作製および使用に関する従来技術は、本明細書で詳細に説明される場合もあれば、されない場合もある。具体的には、本明細書で説明される様々な技術的特徴を実装するためのコンピューティングシステムおよび特定のコンピュータプログラムの様々な態様は周知である。したがって、簡潔さを目的として、多くの従来の実装の詳細は、本明細書では簡潔にのみ言及されるか、または、周知のシステムもしくはプロセスの詳細またはその組み合わせを提供することなく完全に省略されている。
いくつかの実施形態では、様々な機能または動作は、所与の位置で行われるか、もしくは1または複数の装置もしくはシステムの動作と関連して行われるか、またはその両方であり得る。いくつかの実施形態では、所与の機能または動作の一部が第1のデバイスまたは位置で実行されてもよく、残りの機能または動作が1または複数の追加のデバイスまたは位置で実行されてもよい。
本明細書で使用される用語は、特定の実施形態を説明することのみを目的とし、限定を意図するものではない。本明細書で使用される場合、「a」、「an」、および「the」といった単数形は、文脈上特に明記されていない限り複数形も含むことを意図している。さらに、「備える(comprises)」もしくは「備える(comprising)」またはその両方の用語は、本明細書で使用される場合、明示された特徴、整数、段階、動作、要素もしくはコンポーネント、またはその組み合わせの存在を指定するが、1または複数の他の特徴、整数、段階、動作、要素のコンポーネント、もしくはそのグループまたはその組み合わせの存在または追加を除外するものではないことが理解されよう。
以下の特許請求の範囲における、全てのミーンズプラスファンクション要素またはステッププラスファンクション要素の対応する構造、材料、動作、および均等物は、具体的に請求される他の請求要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。本開示を例示および説明の目的で提示したが、網羅的であることも、開示された形態に限定されることも意図されない。当業者には、本開示の範囲および趣旨から逸脱することなく、多くの修正および変更が明らかになるであろう。実施形態は、本開示の原理および実際の適用を最も良好に説明すると共に、想定される特定用途に適した様々な修正を加えた様々な実施形態について当業者が本開示を理解することを可能にするために、選択および説明された。
ここで示される図は例示的である。本開示の趣旨から逸脱することなく、図または図中で説明される段階(もしくは動作)に多くの変更を行うことができる。例えば、アクションを異なる順序において実行することもできるし、アクションを追加、削除または修正することもできる。また、「結合される(coupled)」という用語は、2つの要素間に信号経路があることを表し、それらの間に介在する要素/接続のない要素間の直接接続を暗示するものではない。これらの変形の全てが本開示の一部とみなされる。
以下の定義および略語は、特許請求の範囲および明細書の解釈のために使用されるものである。本明細書で使用される場合、「備える(comprises)」、「備える(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」、「含む(contains)」、もしくは「含む(containing)」という用語、またはそれらの他の変形は、非排他的包含をカバーすることを意図している。例えば、要素のリストを含む構成物、混合物、プロセス、方法、物品、または装置は、必ずしもこれらの要素のみに限定されるとは限らず、明示的に列挙されていない、またはそのような構成物、混合物、プロセス、方法、物品、もしくは装置に固有の他の要素を含んでいてもよい。
さらに、「例示的な」という用語は、本明細書では「一例、事例、または例示として機能すること」を意味するように使用される。本明細書で「例示的」として説明されるいかなる実施形態または設計も、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるものではない。「少なくとも1つ」および「1または複数」という用語は、1よりも大きいまたはそれに等しい任意の整数、すなわち、1、2、3、4などを含むと理解される。「複数」という用語は、2よりも大きいまたはそれに等しい任意の整数、すなわち、2、3、4、5などを含むと理解される。「接続」という用語は、間接的な「接続」および直接的な「接続」の両方を含み得る。
「約」、「実質的に」、「およそ」という用語、およびそれらの変形は、本願の出願の時点で利用可能な機器に基づく特定の量の測定に関連付けられる誤差の程度を含むことが意図される。例えば、「約」は、所与の値の、±8%または5%、または2%の範囲を含み得る。
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法、もしくはコンピュータプログラム製品、またはその組み合わせであり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実施させるコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体(もしくは複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、または前述したものの任意の好適な組み合わせであってよいが、これらに限定されるものではない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、命令が記録されたパンチカードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および、前述したものの任意の好適な組み合わせが含まれる。コンピュータ可読記憶媒体は、本明細書で使用される場合、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通して伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを通して伝送される電気信号などの一時的な信号そのものと解釈されてはならない。
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくは無線ネットワーク、またはその組み合わせを介して外部コンピュータもしくは外部ストレージデバイスに、ダウンロードできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバ、またはその組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、このコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語などの手続き型プログラミング言語もしくは同様のプログラミング言語を含む、1または複数のプログラミング言語の任意の組み合わせで書かれたソースコードもしくはオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されてもよいし、スタンドアロンソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行されてもよいし、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行されてもよいし、完全にリモートコンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じてリモートコンピュータがユーザのコンピュータに接続されてもよいし、または、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを通じて)接続が行われてもよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路が、本発明の態様を実行するために、電子回路をパーソナライズするようにコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行してもよい。
本明細書では、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して発明の態様を説明している。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
これらのコンピュータ可読プログラム命令を汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供することで、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方における単数または複数のブロックで指定された機能/動作を実装する手段を作成するようにマシンを生成してもよい。また、これらのコンピュータ可読プログラム命令を、コンピュータ、プログラマブルデータ処理装置、もしくは他のデバイス、またはその組み合わせに特定の方式で機能するよう指示し得るコンピュータ可読記憶媒体に格納することで、中に命令が格納されているコンピュータ可読記憶媒体が、フローチャートもしくはブロック図またはその両方における単数または複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を構成するようにしてもよい。
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードし、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作段階を実行させて、コンピュータ実装プロセスを生成することで、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方における単数または複数のブロックで指定された機能/動作を実装するようにしてもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の実行可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定されている論理機能を実装するための1または複数の実行可能命令を備える、命令のモジュール、セグメント、または一部を表すことがある。いくつかの代替的な実装形態では、ブロック内で示された機能が、図で示された順序以外で行われてもよい。例えば、連続して示されている2つのブロックが、実際に、実質的に同時に実行されてもよいし、これらのブロックが、場合により、関与する機能に依存して逆の順序で実行されてもよい。また、ブロック図もしくはフローチャート図またはその組み合わせにおける各ブロック、およびブロック図もしくはフローチャート図またはその組み合わせにおけるブロックの組み合わせは、指定された機能もしくは動作を実行する専用ハードウェアベースのシステムによって実装され得る、または専用ハードウェアとコンピュータ命令との組み合わせを実施できることが分かるであろう。
例示を目的として本発明の様々な実施形態の説明を提示してきたが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。当業者には、記載された実施形態の範囲および趣旨から逸脱することなく、多くの修正および変更が明らかとなるであろう。本明細書において使用される用語は、実施形態の原理、実際の適用、もしくは市場で見られる技術に対する技術的改善点を最も良好に説明するように、または、本明細書において説明される実施形態を当業者が理解することを可能にするように選択された。
Claims (20)
- コントローラにより、1または複数のタスクを有するワークロードを受信する段階と、
第1のサイドカーコンテナを有する第1のポッドを生成する段階と、
前記ワークロードと前記第1のポッドに関する1または複数のリソース割り当てメトリックとに基づいて、前記第1のポッドのための1または複数の一時的コンテナを生成する段階と、
前記1または複数の一時的コンテナ内で前記1または複数のタスクを実行する段階と、
前記第1のポッドに関する前記1または複数のリソース割り当てメトリックをモニタリングする段階と、
前記第1のポッドに関する前記1または複数のリソース割り当てメトリックと前記ワークロードとに基づいて、前記第1のポッド内に少なくとも1つの新たな一時的コンテナを生成する段階と
を備えるコンピュータ実装方法。 - 前記1または複数のリソース割り当てメトリックに基づいて、前記第1のポッド内の前記1または複数の一時的コンテナのうちの少なくとも1つの一時的コンテナを終了させる段階
をさらに備える、請求項1に記載のコンピュータ実装方法。 - 前記1または複数のリソース割り当てメトリックに基づいて、前記第1のポッドにとっての最大一時的コンテナを判定する段階と、
前記ワークロードが前記第1のポッドにとっての前記最大一時的コンテナを超える数の一時的コンテナを必要とすることに基づいて、第2の1または複数の一時的コンテナを有する第2のポッドを生成する段階と
をさらに備える、請求項1または2に記載のコンピュータ実装方法。 - 前記1または複数のタスクがキューに格納される、請求項1または2に記載のコンピュータ実装方法。
- 前記キューが、メッセージ・キューイング・テレメトリ・トランスポート・キューを含む、請求項4に記載のコンピュータ実装方法。
- 前記第1のポッドが、Kubernetesポッドを含む、請求項1または2に記載のコンピュータ実装方法。
- 前記第1のサイドカーコンテナが、ループを実行して、前記第1のポッドが終了することを防ぐ、請求項1または2に記載のコンピュータ実装方法。
- コンピュータ可読命令を有するメモリと、
前記コンピュータ可読命令を実行するための1または複数のプロセッサとを備え、前記コンピュータ可読命令が、前記1または複数のプロセッサを制御して、
1または複数のタスクを含むワークロードを受信する手順と、
第1のサイドカーコンテナを含む第1のポッドを生成する手順と、
前記ワークロードと前記第1のポッドに関する1または複数のリソース割り当てメトリックとに基づいて、前記第1のポッドのための1または複数の一時的コンテナを生成する手順と、
前記1または複数の一時的コンテナ内で前記1または複数のタスクを実行する手順と、
前記第1のポッドに関する前記1または複数のリソース割り当てメトリックをモニタリングする手順と、
前記第1のポッドに関する前記1または複数のリソース割り当てメトリックと前記ワークロードとに基づいて、前記第1のポッド内に少なくとも1つの新たな一時的コンテナを生成する手順と
を含む動作を実行させる、システム。 - 前記動作が、
前記1または複数のリソース割り当てメトリックに基づいて、前記第1のポッド内の前記1または複数の一時的コンテナのうちの少なくとも1つの一時的コンテナを終了させる手順
をさらに含む、請求項8に記載のシステム。 - 前記動作が、
前記1または複数のリソース割り当てメトリックに基づいて、前記第1のポッドにとっての最大一時的コンテナを判定する手順と、
前記ワークロードが前記第1のポッドにとっての前記最大一時的コンテナを超える数の一時的コンテナを必要とすることに基づいて、第2の1または複数の一時的コンテナを含む第2のポッドを生成する手順と
をさらに含む、請求項8または9に記載のシステム。 - 前記1または複数のタスクがキューに格納される、請求項8または9に記載のシステム。
- 前記キューが、メッセージ・キューイング・テレメトリ・トランスポート・キューを含む、請求項11に記載のシステム。
- 前記第1のポッドが、Kubernetesポッドを含む、請求項8または9に記載のシステム。
- 前記第1のサイドカーコンテナが、ループを実行して、前記第1のポッドが終了することを防ぐ、請求項8または9に記載のシステム。
- プロセッサに、
コントローラにより、1または複数のタスクを含むワークロードを受信する手順と、
第1のサイドカーコンテナを含む第1のポッドを生成する手順と、
前記ワークロードと前記第1のポッドに関する1または複数のリソース割り当てメトリックとに基づいて、前記第1のポッドのための1または複数の一時的コンテナを生成する手順と、
前記1または複数の一時的コンテナ内で前記1または複数のタスクを実行する手順と、
前記第1のポッドに関する前記1または複数のリソース割り当てメトリックをモニタリングする手順と、
前記第1のポッドに関する前記1または複数のリソース割り当てメトリックと前記ワークロードとに基づいて、前記第1のポッド内に少なくとも1つの新たな一時的コンテナを生成する手順と
を実行させるためのコンピュータプログラム。 - 前記プロセッサに、
前記1または複数のリソース割り当てメトリックに基づいて、前記第1のポッド内の前記1または複数の一時的コンテナのうちの少なくとも1つの一時的コンテナを終了させる手順
をさらに実行させる、請求項15に記載のコンピュータプログラム。 - 前記プロセッサに、
前記1または複数のリソース割り当てメトリックに基づいて、前記第1のポッドにとっての最大一時的コンテナを判定する手順と、
前記ワークロードが前記第1のポッドにとっての前記最大一時的コンテナを超える数の一時的コンテナを必要とすることに基づいて、第2の1または複数の一時的コンテナを含む第2のポッドを生成する手順と
をさらに実行させる、請求項15または16に記載のコンピュータプログラム。 - 前記1または複数のタスクがキューに格納される、請求項15または16に記載のコンピュータプログラム。
- 前記キューが、メッセージ・キューイング・テレメトリ・トランスポート・キューを含む、請求項18に記載のコンピュータプログラム。
- 前記第1のポッドが、Kubernetesポッドを含み、前記第1のサイドカーコンテナが、ループを実行して、前記第1のポッドが終了することを防ぐ、請求項15または16に記載のコンピュータプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/498,011 | 2021-10-11 | ||
US17/498,011 US20230114504A1 (en) | 2021-10-11 | 2021-10-11 | Dynamic scaling for workload execution |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023057535A true JP2023057535A (ja) | 2023-04-21 |
Family
ID=85798164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022159379A Pending JP2023057535A (ja) | 2021-10-11 | 2022-10-03 | コンピュータ実装方法、システムおよびコンピュータプログラム(ワークロード実行のための動的スケーリング) |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230114504A1 (ja) |
JP (1) | JP2023057535A (ja) |
CN (1) | CN115964120A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11977926B1 (en) | 2023-06-26 | 2024-05-07 | Microsoft Technology Licensing, Llc | Deployment of pod cohorts |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230123350A1 (en) * | 2021-10-18 | 2023-04-20 | Dell Products L.P. | Containerized workload management in container computing environment |
US11843548B1 (en) * | 2022-12-09 | 2023-12-12 | Dell Products L.P. | Resource scaling of microservice containers |
-
2021
- 2021-10-11 US US17/498,011 patent/US20230114504A1/en active Pending
-
2022
- 2022-09-16 CN CN202211131690.5A patent/CN115964120A/zh active Pending
- 2022-10-03 JP JP2022159379A patent/JP2023057535A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11977926B1 (en) | 2023-06-26 | 2024-05-07 | Microsoft Technology Licensing, Llc | Deployment of pod cohorts |
Also Published As
Publication number | Publication date |
---|---|
US20230114504A1 (en) | 2023-04-13 |
CN115964120A (zh) | 2023-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11175939B2 (en) | Dynamically changing containerized workload isolation in response to detection of a triggering factor | |
US11030016B2 (en) | Computer server application execution scheduling latency reduction | |
US10514960B2 (en) | Iterative rebalancing of virtual resources among VMs to allocate a second resource capacity by migrating to servers based on resource allocations and priorities of VMs | |
US11023267B2 (en) | Composite virtual machine template for virtualized computing environment | |
US9009697B2 (en) | Hybrid cloud integrator | |
US9582319B2 (en) | Migrating virtual machines across network separated data centers | |
US20120203908A1 (en) | Hybrid cloud integrator plug-in components | |
US20130042004A1 (en) | Dynamically acquiring computing resources in a networked computing environment | |
US10691312B2 (en) | Placement of virtual machines on physical hosts based on collocation rules | |
US9405579B2 (en) | Seamless extension of local computing power | |
US20150128131A1 (en) | Managing virtual machine patterns | |
US9733971B2 (en) | Placement of virtual machines on preferred physical hosts | |
JP2023057535A (ja) | コンピュータ実装方法、システムおよびコンピュータプログラム(ワークロード実行のための動的スケーリング) | |
US9935824B2 (en) | Virtualization of consistency groups | |
US9164805B2 (en) | Managing workload distribution to reduce acoustic levels | |
US20150154048A1 (en) | Managing workload to provide more uniform wear among components within a computer cluster | |
US10656975B2 (en) | Hybrid cloud with dynamic bridging between systems of record and systems of engagement | |
US11194631B2 (en) | Resource schedule optimization | |
US11593004B1 (en) | Optimized addition and removal of compute resources in a distributed storage platform by implementing mapping changes in a shared storage subsystem | |
US20240069944A1 (en) | Coordinated hooking mechanism for checkpointing virtual machines | |
US11455191B2 (en) | Parallel task initialization on dynamic compute resources |