以下、図面を参照しながら、本発明の実施例を説明する。ただし、これらの説明は例示的なものに過ぎず、本開示の範囲を限定するものではないと理解されるべきである。以下の詳細な説明において、説明しやすくするために、多くの具体的な詳細を説明して本開示の実施例に対する全面的な理解を提供する。しかしながら、明らかに、一つ又は複数の実施例は、これらの具体的な詳細がない場合に実施されてもよい。また、以下の説明において、公知の構造及び技術に対する説明を省略することにより、本開示の概念を不必要に混同することを回避する。
ここで使用される用語は、具体的な実施例を説明するためのものに過ぎず、本開示を限定するものではない。ここで使用される用語「含む」、「包含」などは、前記特徴、ステップ、操作及び/又は部材の存在を示すが、一つ又は複数の他の特徴、ステップ、操作又は部材の存在または追加を排除するものではない。
ここで使用される全ての用語(技術及び科学用語を含む)は、特別に定義されない限り、当業者に一般的に理解される意味を有する。なお、ここで使用された用語は、本明細書のコンテキストと一致する意味を有すると解釈されるべきであり、理想的または過度に形式的に解釈されるべきではないことに留意されたい。
「A、B及びCなどのうちの少なくとも1つ」に類似する表現を使用する場合、その表現の意味が当業者によって一般的に理解されるように解釈されるべきである(例えば、「A、B及びCのうちの少なくとも1つを有するシステム」は、Aを単独で有するシステム、Bを単独で有するシステム、Cを単独で有するシステム、A及びBを有するシステム、A及びCを有するシステム、B及びCを有するシステム、及び/又はA、B、Cを有するシステムなどを含むが、これらに限定されない)。「A、B又はCなどのうちの少なくとも1つ」に類似する表現を使用する場合、その表現の意味が当業者によって一般的に理解されるように解釈されるべきである(例えば、「A、B又はCのうちの少なくとも1つを有するシステム」は、Aを単独で有するシステム、Bを単独で有するシステム、Cを単独で有するシステム、AとBを有するシステム、AとCを有するシステム、BとCを有するシステム、及び/又はA、B、Cを有するシステムなどを含むが、これらに限定されない)。
本開示の実施例の提供する技術案は、専用クラウドシーンでのK8Sのコンテナ配布問題に対処するのに用いることができる。本開示の実施例の技術案をより良く理解するために、まず、本開示の実施例に係る基本的な概念を説明する。
専用クラウドとは、クラウドサービス事業者が顧客のためにその自身のデータセンター内に完全なクラウドコンピューティングサービスをデプロイすることができる。専用クラウドにおけるリソースは、全てクラウドサービス事業者により提供されるが、データは、物理的にもネットワーク的にも分離され、イントラネットのみによりアクセスすることができる。
アベイラビリティゾーンは、同じ地域内で電力とネットワークが互いに独立したデータセンターにあってもよい。異なるアベイラビリティゾーンの可用性は、互いに影響しないため、クライアントサービスシステムのサーバノードは、クロスアベイラビリティゾーンによりデプロイすることができ、これは、可用性を大幅に向上させる。
ラックは、複数のサーバノードを含み、かつ複数のサーバノードのために統一的な給電及びネットワークアクセスを提供する一体式キャビネットであってもよい。
サーバノードは、物理サーバ機器であってもよい。
クロスアベイラビリティゾーンは、複数のコンテナを異なるアベイラビリティゾーンに割り当てることであってもよい。
クロスラックは、複数のコンテナを同一アベイラビリティゾーンにおける異なるラックに割り当てることであってもよい。
クロスサーバノードは、複数のコンテナを同一ラックにおける異なるサーバノードに割り当てることであってもよい。
高可用性は、一つのシステムにおける複数のコンテナを均等にデプロイすることであってもよく、一つのサーバノードが故障により正常に実行できない場合、故障していないサーバノード上のコンテナが正常に実行できることを確保し、外部にサービスを提供して、システムの可用性を保証することができる。
クラスタは、計算、記憶及びネットワークリソースの集合であってもよい。
製品ラインは、専用クラウド上のクラウドプラットフォーム製品であってもよく、例えば、クラウドホスト製品である。
システムは、製品ライン上の一つの独立したサービスモジュールであってもよい。製品ラインは、一つ又は複数のシステムを含むことができる。
アプリケーションは、システムにおける一つの独立した機能モジュールであってもよい。システムは、一つ又は複数のアプリケーションを含むことができる。
グループは、アプリケーションにおける異なるシーン問題を解決する独立したモジュールであってもよい。アプリケーションは、一つ又は複数のグループを含むことができる。グループは、コンテナの動作に必要な環境変数及び外付け配置を管理するように設けられ、それは、デプロイの最小単位である。
Nodeノードは、クラスタにおけるワーカーノードであってもよく、それに実際のアプリケーションプログラムが実行される。NodeノードでK8SのKubelet及びProxyを実行し、Kubelet及びProxyは、Podの作成、起動、監視、再起動、破壊及びソフトウェアモードの負荷分散の実現を担当するように設けられる。Nodeノードは、Nodeアドレス、Nodeの稼働状態、Nodeシステム容量及び他の情報を含むことができる。Nodeアドレスは、ホストのネットワークアドレス又はホストの識別子を含む。Nodeシステム容量は、Nodeノードの利用可能なシステムリソースを示し、CPU、メモリ及びスケジューリング可能な最大Pod数などを含むことができる。
Podは、K8S内で作成・管理できる最小のデプロイ可能な作業ユニットである。Podは、一つ又は複数の密接に関連するコンテナを含むことができ、例えば、Dockerコンテナであり、これらのコンテナは、記憶、ネットワーク及びどのようにコンテナを実行するかという宣言を共有する。Podにおけるコンテナは、全体としてMasterノードにより同じNodeノードにスケジューリングされて動作する。Podは、論理ホストに相当し、各Podは、対応するネットワークアドレスを有し、同じPodに属する異なるコンテナは、同じネットワークアドレス及びポート空間を共有する。各Podのネットワークアドレスは、Podの破壊及び再起動に伴って変化する。
Serviceは、同じサービスを提供する一組のPodの外部アクセスインタフェースであってもよい。Serviceは、ネットワークアドレス及びポートを有し、Serviceは、Podに負荷分散を提供する。
Controllerは、Podを管理するために用いられてもよい。Controllerには、例えば、いくつかのコピーを含むのか、どのようなNodeノードで実行されるかなどのPodのデプロイ特性が定義される。K8SにおいてPodを実行することはControllerにより実行され、PodにアクセスすることはServiceにより実行される。
Masterノードは、クラスタのマスタノードであってもよく、K8Sのクラスタ全体を制御・管理するための制御パネルを担持するように設けられ、その上にクラスタ管理に関連する一組のプロセスETCD、API Server、Controller Manager及びSchedulerが実行される。ここで、API Server、Controller Manager及びSchedulerは、K8Sの全体制御センターを構成し、これらのプロセスは、クラスタのリソース管理、Podスケジューリング、弾性伸縮、安全制御、システム監視及び誤り訂正などの管理機能を実現している。
ETCDは、高可用な分散型キー値データベースであってもよく、クラスタ内の全てのリソースオブジェクトを永続的に記憶することに用いることができる。すなわち、主として、クラスタの配置情報及び各種リソースの状態情報を記憶するために用いられる。データが変化する場合、ETCDは、K8Sの関連コンポーネントに迅速に通知することになる。
API(Application Programming Interface、アプリケーションプログラミングインタフェース)Serverは、K8Sの外部向けの唯一のインタフェースであってもよく、全ての要求は、このインタフェースを介して通信する必要がある。API Serverは、ETCDを操作するためのカプセル化インタフェースを提供する。カプセル化インタフェースは、基本的にクラスタにおけるリソースオブジェクトの追加・削除・更新・検索及びリソース変化の監視のインタフェースである。
Controller Managerは、クラスタ内部のコントローラーマネージャーであってもよく、それは、主として、クラスタを管理する各種リソースを実現するために配置され、リソースが所望の状態にあることを保証する。Controller Managerは、Replication Controller(RC)、Endpoints Controller、Namspace Controller及びServiceaccounts Controllerなどを含むことができる。ここで、RCは、Pod、実行する必要のあるPodのコピー数、及び監視する必要のあるPodタグを定義するために用いられる。
Schedulerは、クラスタ内のスケジューラであってもよく、それは、主として、PodをどのNodeに割り当てて実行するかを決定するために用いられる。
Kubeletは、Nodeノード上のPodの作成、更新、監視及び削除などの全ライフサイクル管理を担当するために用いられてもよい。同時に、MasterノードにNodeノードの状態情報を報告する。
Proxyは、Serviceのエージェントとソフトウェアモードとを実現するためのロードバランサであってもよい。Proxyは、API Serverの一つのリバースプロキシサーバであってもよい。K8Sクラスタの外部のクライアントは、ProxyによりAPI Serverにアクセスすることができる。
インスタンスは、同じ構成を有し、かつグループ化機能をサポートするように構成される複数のリソース割り当て単位であってもよい。複数のコンテナは、一つのグループの高可用をサポートする。
オーバーブッキング係数は、クラウドサービス事業者が物理サーバ上の物理コアを複数の仮想コアに論理的に分け、複数の仮想コアが同一の物理コアの機能を共有し、かつ時間に応じてスライスするなどの方式を採用して物理コアのリソースへの使用を実現することであってもよい。オーバーブッキング係数によってクラウドサービス事業者がリソースをより多くのテナントに割り当てることができ、さらにリソース利用率を向上させる。
コンテナ配布問題を解決するために、採用可能な解決案は、K8SのSchedulerにフィルタリング又はプライオリティーポリシーを追加することである。本開示の構想を実現する過程において、上記解決案において少なくともコンテナの均等配布を実現しにくいという問題が存在することを発見した。
本開示の構想を実現する過程において、上記問題が存在する主な原因は、次のことにあることを発見した。即ち、上記解決案は、複数のアベイラビリティゾーン及び複数のラックにおけるサーバノードの位置分布を考慮しておらず、専用クラウドに係る製品及びサービスが多く、かつサービスの高可用性に対して非常に厳しい要求を有するため、上記解決案を採用することは、コンテナの均等配布を実現しにくく、ここでいう均等配布とは、同じアプリケーションでのコンテナのアベイラビリティゾーン、ラック及びサーバノードの3つの層面における均等配布を指し、さらにクロスアベイラビリティゾーン、クロスラック及びサーバノードの高可用性のサービス要件を満たすことは困難である。
コンテナの均等配布を実現して、サービスのクロスアベイラビリティゾーン、クロスラック及びサーバノードの高可用性を保証するために、同じアプリケーションでの異なるコンテナを異なるアベイラビリティゾーンに優先的に割り当て、同じアベイラビリティゾーンでのコンテナを異なるラックに優先的に割り当て、同じラックでのコンテナを異なるサーバノードに優先的に割り当てる必要があり、上記に基づいて、本開示の実施例は、コンテナの均等配布を実現する技術案を提供している。なお、コンテナをどのサーバノードに割り当てるかを決定した後、対応するサーバノードでコンテナを作成する必要があるため、コンテナの均等作成を実現することは、すなわち、コンテナの均等配布を実現することである。
クラスタにおけるサービスをより良く管理するために、本開示の実施例は、高さが4のツリー構造(すなわちサービスツリー)を採用して、完全なクラスタサービスを記憶する。図1は、本開示の実施例に係るサービスツリーの模式図を模式的に示す。図1に示すように、サービスツリーは、上から下へのテナント、アプリケーション、グループ及びインスタンスを含むことができる。ここで、最上層のテナントは、クラスタ全体におけるクォータ情報を管理するように構成される。第2層のアプリケーションは、デプロイモジュール及び環境変数情報を管理するように構成される。第3層のグループは、プログラムバージョン、構成バージョン、コンテナ仕様及び環境変数を管理するように構成され、第4層のインスタンスは、コンテナ及びネットワークアドレス情報を管理するように構成される。サービスツリー内の各インスタンスは、K8S内の一つのPod(すなわち一組のコンテナ)に対応する。なお、本開示の実施例に記載されたコンテナの均等配布を実現することは、つまり、インスタンスの均等配布を実現することである。
図2は、関連技術におけるインスタンス配布の一例の模式図を模式的に示す。図2に示すように、ラック1、ラック2及びラック3を含み、各ラックは、4つのサーバノードを含む。アプリケーション1、アプリケーション2及びアプリケーション3を含む。ここで、アプリケーション2は、グループ1、グループ2及びグループ3を含む。グループ1は、インスタンス1を含み、グループ2は、インスタンス2を含み、グループ3は、インスタンス3を含む。関連技術を用いてアプリケーション2に同じく属するインスタンス1、インスタンス2及びインスタンス3をそれぞれラック1におけるサーバノード、ラック2におけるサーバノード及びラック2におけるサーバノードに割り当てる。このことからわかるように、関連技術を用いてアプリケーション2に同じく属するインスタンス2及びインスタンス3を同じラックに割り当てることになり、すなわち、関連技術を用いる場合、コンテナの均等配布が実現されていない。これは、関連技術ではアベイラビリティゾーン及びラックを識別することができないため、同じアプリケーションでの複数のインスタンスが同一のアベイラビリティゾーン又は同一のラックに割り当てられる可能性があるためである。アベイラビリティゾーンの専用線又はラックに問題が発生すると、システムダウンを引き起こしてサービスの機能全体に影響を与えやすい。本開示の実施例によって提供される技術案は、上記問題を解決するためになされたものである。以下、具体的な実施例を挙げて説明する。
本開示の実施例は、コンテナ作成方法、装置、電子機器および記憶媒体を提供している。該方法は、コンテナ作成工程を含む。コンテナ作成工程において、アベイラブルラックリスト及びアベイラブルネットワークアドレスリストを取得し、アベイラブルラックリストにおけるラック内の空きサーバノードを位置決めし、空きサーバノードにおいて、アベイラブルネットワークアドレスに対応するカレントコンテナを作成し、アベイラブルネットワークアドレスリストを更新し、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けし、かつ再順序付けされたアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて、他のコンテナを作成する。
図3は、本開示の実施例に係るコンテナ作成方法を適用可能な一例のシステムアーキテクチャ300を模式的に示す。なお、図3に示すのは、本開示の実施例を適用可能なシステムアーキテクチャの例に過ぎず、当業者が本開示の技術内容を理解しやすくするが、本開示の実施例が他の機器、システム、環境又はシーンに用いられないことを意味するものではない。
図3に示すように、該実施例に係るシステムアーキテクチャ300は、インテリジェント配布システム、マスターノード(すなわちMasterノード)及びワーカーノード(すなわちNodeノード)を含むことができる。ここで、インテリジェント配布システムは、APIゲートウェイ、分散型キー値データベース(すなわちETCD)、インテリジェントリソース配布及びリソーススケジューリングを含む。マスタノードは、マスタノード1と、マスタノード2と、マスタノード3とを含む。マスタノード1に対応するワーカーノードは、ワーカーノード1とワーカーノード2である。各マスタノードは、アプリケーションプログラミングインタフェースサーバ(すなわちAPI Server)、スケジューラ(すなわちScheduler)、分散型キー値データベース(すなわちETCD)及びコントローラーマネージャー(すなわちController Manager)を含む。各ワーカーノードは、Kubelet、プロキシサーバー(すなわちProxy)及びPodを含む。各Podは、一つ又は複数のコンテナを含む。
従来のK8Sアーキテクチャは、図3におけるマスタノード(すなわちMasterノード)及びワーカーノード(すなわちNodeノード)を含む。従来のK8Sに基づくコンテナの作成フローは、Kubectlによって、作成対象Pod、作成対象Podに対応するコピー数及び作成対象Podのタグを含むRC要求情報を生成し、該RC要求情報をAPI ServerによりETCDに送信し、ETCDが該RC要求情報を記憶するということである。
Controller Managerは、API Serverにおける監視リソース変化インタフェースによりRCイベントを監視すると、RC要求情報を取得する。カレントクラスタに作成対象Podが存在しないと特定されると、RC要求情報に基づいてPodを作成し、API ServerによりETCDに送信する。ECTDは、Podを格納する。
Schedulerは、API Serverにおける監視リソース変化インタフェースによりRCイベントを監視すると、スケジューリングフローを実行することにより、割り当て関係を生成し、API Serverにより割り当て関係をETCDに送信し、ETCDは、割り当て関係を記憶する。ここで、割り当て関係とは、PodとPodを実行するターゲットNodeノードである。
ターゲットNodeノードで実行されるKubeletは、API ServerによりPodを監視すると、Podのライフサイクルに到達するまで、RC要求情報に基づいてPodを起動する。
図3に示すように、本開示の実施例は、従来のK8Sアーキテクチャにインテリジェント配布システムを追加している。ここで、インテリジェント配布システムにおけるAPIゲートウェイは、K8SにおけるMasterノードのAPI Serverに代替して、クラスタ全体の唯一の入口とする。インテリジェント配布システムは、クラスタ内のコンテナの割り当て及び一部のスケジューリング動作を引き受ける。
本開示の実施例におけるインテリジェント配布システムは、独立して実現することができるとともに、K8Sに無侵入で追加することができるため、インテリジェント配布システムは、従来のシステムに影響を与えることではなく、各種K8Sクラスタ環境に適用することができる。
本開示の実施例によって提供されるコンテナ作成方法は、一般的に、インテリジェント配布システムにより実行することができ、インテリジェント配布システムは、サーバ又はサーバクラスタに設けることができる。それに応じて、本開示の実施例によって提供されるコンテナ作成装置は、一般的に、サーバ又はサーバクラスタに設けることができる。
図4は、本開示の実施例に係るコンテナ作成方法のフローチャートを模式的に示す。
図4に示すように、該方法は、操作S410~S460を含む。
操作S410において、アベイラブルラックリスト及びアベイラブルネットワークアドレスリストを取得する。ここで、アベイラブルラックリストは、異なるアベイラビリティゾーンの複数のアベイラブルラックを含み、各アベイラブルラックは、少なくとも一つのサーバノードを含み、アベイラブルネットワークアドレスリストは、少なくとも一つのアベイラブルネットワークアドレスを含む。
本開示の実施例によれば、アベイラブルラックリストは、複数のアベイラブルラックを含むことができ、異なるアベイラブルラックは、異なるアベイラビリティゾーンに属する可能性があり、各アベイラブルラックは、少なくとも一つのサーバノードを含むことができる。アベイラブルラックリストにおける複数のアベイラブルラックは、優先順位に応じて順位付けされてもよい。
例示的には、例えば、アベイラブルラックリストは、アベイラブルラック1、アベイラブルラック2及びアベイラブルラック3を含む。ここで、アベイラブルラック1とアベイラブルラック2は、アベイラビリティゾーン1に属し、アベイラブルラック3は、アベイラビリティゾーン2に属する。アベイラブルラック1には、サーバノード1、サーバノード2及びサーバノード3が設けられる。アベイラブルラック2には、サーバノード4及びサーバノード5が設けられる。アベイラブルラック3には、サーバノード6、サーバノード7及びサーバノード8が設けられる。
アベイラブルネットワークアドレスリストは、少なくとも一つのアベイラブルネットワークアドレスを含むことができ、ここで、各アベイラブルネットワークアドレスは、使用されていないネットワークアドレスとなるPodのネットワークアドレスを設定するために設けられてもよい。アベイラブルネットワークアドレスリストは、次のように得ることができる。
総ネットワークアドレスリストを取得する。割り当て済みネットワークアドレスリストを取得する。総ネットワークアドレスリスト及び割り当て済みネットワークアドレスリストに基づいて、アベイラブルネットワークアドレスリストを決定する。ここで、割り当て済みネットワークアドレスリストは、少なくとも一つの割り当て済みネットワークアドレスを含み、各割り当て済みネットワークアドレスとは、Podのネットワークアドレスが既に設けられたものを指す。総ネットワークアドレスリストにおける各ネットワークアドレスは、Podを設定することに用いることができる。総ネットワークアドレスリスト及び割り当て済みネットワークアドレスリストに基づいて、アベイラブルネットワークアドレスリストを決定することは、総ネットワークアドレスリストから割り当て済みネットワークアドレスリストを減算して、アベイラブルネットワークアドレスリストを得ることを含むことができる。
操作S420において、アベイラブルラックリストにおけるアベイラブルラック内の空きサーバノードを位置決めする。
操作S430において、空きサーバノードに、アベイラブルネットワークアドレスに対応するカレントコンテナを作成する。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラックに空きサーバノードが存在する可能性があり、空きサーバノードが存在しない可能性もある。空きサーバノードとは、空きリソースを有するサーバノードを指すものであってもよい。空きリソースとは、コンテナを設けるためのリソースを有すると捉えることができる。
空きサーバノードにカレントコンテナを作成するために、アベイラブルラックリストにおけるアベイラブルラックに空きサーバノードが存在するか否かを特定する必要がある。空きサーバノードが存在すれば、空きサーバノードを位置決めする。
アベイラブルラックリストは、複数のアベイラブルラックを含むため、空きサーバノードを特定するまで、所定の順序に応じて、各アベイラブルラックに空きサーバノードが存在するか否かを順に特定する。また、アベイラブルラックリストにおける複数のアベイラブルラックは、優先順位に応じて順位付けすることができるため、優先順位の高い順に各アベイラブルラックに空きサーバノードが存在するか否かを順に特定することができる。
本開示の実施例によれば、空きサーバノードを特定した後、アベイラブルネットワークアドレスリストから一つのアベイラブルネットワークアドレスをターゲットネットワークアドレスとして選択し、空きサーバノードにターゲットネットワークアドレスに対応するカレントコンテナを作成することができる。空きサーバノードにターゲットネットワークアドレスに対応するカレントコンテナを作成することは、空きサーバノードにターゲットネットワークアドレスに対応するカレントPodを作成し、カレントPodにカレントコンテナインスタンスを作成することを含むことができる。
操作S440において、アベイラブルネットワークアドレスリストを更新する。
本開示の実施例において、空きサーバノードに、アベイラブルネットワークアドレスに対応するカレントコンテナを作成した後、ここでのアベイラブルネットワークアドレスは、ターゲットネットワークアドレスを指すことができ、ターゲットネットワークアドレスに対応するカレントコンテナを作成したため、ターゲットネットワークアドレスは、アベイラブルネットワークアドレスから割り当て済みネットワークアドレスになり、それに応じて、アベイラブルネットワークアドレスリストに含まれるアベイラブルネットワークアドレスは変化し、アベイラブルネットワークアドレスリストを更新する必要がある。
本開示の実施例によれば、アベイラブルネットワークアドレスリストを更新することは、アベイラブルネットワークアドレスリストにおけるターゲットネットワークアドレスを削除し、更新後のアベイラブルネットワークアドレスリストを取得することを含むことができる。
操作S450において、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けする。
本開示の実施例によれば、アベイラブルラックのリソース占有情報は、アベイラブルラックに設けられたコンテナの占有するリソースを示すことができる。アベイラブルラックのリソース占有情報は、同じアプリケーションに属するコンテナ数、同じグループに属するコンテナ数、及び第1ピット数を含むことができ、ここで、第1ピット数は、アベイラブルラックの総リソース数と作成された全てのコンテナで使用されたリソース数との割合であってもよい。
本開示の実施例によれば、空きサーバノードにはアベイラブルネットワークアドレスに対応するカレントコンテナを作成した後、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報が変化するため、再順序付け後のアベイラブルラックリストを取得するために、アベイラブルラックリストにおけるアベイラブルラックを再順序付けする必要がある。
アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けすることは、カレントコンテナの属するアプリケーション及び属するグループを取得することと、アベイラブルラックリストにおけるカレントラックの直前のリソース占有情報及び他のラックの直前のリソース占有情報を取得することと、カレントコンテナの属するアプリケーション、カレントコンテナの属するグループ及びカレントラックの直前のリソース占有情報に基づいて、カレントラックのカレントリソース占有情報を特定することと、アベイラブルラックリストにおけるカレントラックのカレントリソース占有情報とアベイラブルラックリストにおける他のラックの直前のリソース占有情報に基づいて、アベイラブルラックリストにおけるラックを再順序付けすることと、を含むことができる。ここで、カレントラックとは、アベイラブルラックリストにおける優先順位の最も高いアベイラブルラックを指すことができる。
操作S460において、再順序付けされたアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて、他のコンテナを作成する。
本開示の実施例によれば、毎回一つのコンテナを作成した後、全てのコンテナの作成を完了するまで、次のコンテナの作成を行うために、アベイラブルネットワークアドレスリストを更新すること、および、アベイラブルラックリストにおけるラックを再順序付けすることが必要となる。対応する空きサーバノードにコンテナを作成するため、各コンテナを対応する空きサーバノードに割り当てることにも相当する。
本開示の実施例によれば、リソース要求を取得することができ、ここで、リソース要求は、作成対象コンテナの数を含むことができる。リソース要求に応答して、カレントアベイラブルラックリスト及びカレントアベイラブルネットワークアドレスリストを取得する。カレントアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノードを位置決めする。空きサーバノードには、カレントアベイラブルネットワークアドレスに対応するカレントコンテナを作成する。カレントアベイラブルネットワークアドレスリストを更新して、新たなアベイラブルネットワークアドレスリストを取得し、新たなネットワークアドレスリストをカレントアベイラブルネットワークアドレスリストとする。カレントアベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、カレントアベイラブルラックリストにおけるアベイラブルラックを再順序付けして、新たなアベイラブルラックリストを取得し、新たなアベイラブルラックリストをカレントアベイラブルラックリストとする。作成対象コンテナ数のコンテナの作成を完了するまで、カレントアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノードを位置決めして、空きサーバノードにはカレントアベイラブルネットワークアドレスに対応するカレントコンテナを作成することを繰り返して実行する。
本開示の実施例によれば、リソース要求は、作成対象コンテナ仕様、作成対象コンテナの属するアプリケーション、及び作成対象コンテナの属するグループをさらに含むこともできる。作成対象コンテナ仕様は、作成対象コンテナに必要なCPU及びメモリを指すことができる。
本開示の実施例の技術案によれば、アベイラブルラックリスト及びアベイラブルネットワークアドレスリストを取得し、アベイラブルラックリストが異なるアベイラビリティゾーンの複数のアベイラブルラックを含み、各アベイラブルラックが少なくとも一つのサーバノードを含み、アベイラブルネットワークアドレスリストが少なくとも一つのアベイラブルネットワークアドレスを含み、アベイラブルラックリストにおけるアベイラブルラック内の空きサーバノードを位置決めし、空きサーバノードには、アベイラブルネットワークアドレスに対応するカレントコンテナを作成し、アベイラブルネットワークアドレスリストを更新し、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けし、再順序付けされたアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて、他のコンテナを作成する。空きサーバノードに一つのコンテナを作成するたびに、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けし、さらに再順序付けされたアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて、次のコンテナを作成し、ここで、空きサーバノードは、異なるアベイラビリティゾーンのアベイラブルラックから由来するため、コンテナの均等配布が実現されている。よって、関連技術によってコンテナの均等配布を実現しにくいという技術問題を少なくとも部分的に克服できる。また、コンテナの均等配布を実現しているため、クロスアベイラビリティゾーン、クロスラック及びサーバノードの高可用性のサービス要件を満たし、さらにシステムダウン状況の発生を効果的に回避することができる。
本開示の実施例によれば、アベイラブルラックリストを取得することは、以下の操作を含むことができる。
各ラック内の各サーバノードの総リソースを取得する。各サーバノードの使用済みリソースを取得し、ここで、使用済みリソースは、作成済みコンテナに使用されたリソースである。各サーバノードの総リソース及び各サーバノードの使用済みリソースに基づいて、アベイラブルラックを特定する。アベイラブルラックに基づいて、アベイラブルラックリストを生成する。
本開示の実施例によれば、各サーバノードの総リソースは、次のようにして特定することができる。サーバノードリソースを取得し、ここで、サーバノードリソースは、CPU及びメモリを含む。サーバノードに対応するオーバーブッキング係数を取得する。サーバノードリソース及びオーバーブッキング係数に基づいてサーバノードの総リソースを特定し、すなわち、サーバノードリソースとオーバーブッキング係数を乗算して、サーバノードの総リソースを取得することができる。
各ラック内の各サーバノードに対して、該サーバノードの総リソースと該サーバノードの使用済みリソースに基づいて、アベイラブルラックを特定することは、該サーバノードの総リソースと該サーバノードの使用済みリソースを減算し、該サーバノードの残リソースを取得することを含むことができる。これに基づいて、該ラックにおける各サーバノードの残リソースを取得することができる。該ラックにおける各サーバノードの残リソースに基づいて、該ラックがアベイラブルラックであるか否かを特定する。該ラックにおける各サーバノードの残リソースが残リソース閾値以上であると、該ラックをアベイラブルラックとして特定することができる。ここで、残リソース閾値は、実際の状況に応じて決定することができ、ここで限定しない。
本開示の実施例によれば、アベイラブルラックリストにおける複数のアベイラブルラックを優先順位で順序付けする。
本開示の実施例によれば、コンテナの均等配布を実現するために、アベイラブルラックリストにおける複数のアベイラブルラックを優先順位の高さに応じて順序付けすることにより、後にアベイラブルラックの優先順位に応じて空きサーバノードを選択し、空きサーバノードにコンテナを作成することができる。
本開示の実施例によれば、以下の方式により、アベイラブルラックリストにおける複数のアベイラブルラックを優先順位で順序付けすることを実現する。作成済みコンテナリストを取得し、ここで、作成済みコンテナリストは、複数の作成済みコンテナを含み、各作成済みコンテナは、対応するサーバノード、所属アプリケーション及び所属グループを有する。各サーバノードに対応する作成数情報を特定し、ここで、作成数情報は、同じアプリケーションに属する作成済みコンテナの数及び同じグループに属する作成済みコンテナの数を含む。各サーバノードに対応する作成数情報に基づいてアベイラブルラックリスト内の複数のアベイラブルラックに優先順位で順序付けを行う。
本開示の実施例によれば、アベイラブルラックリストにおける複数のアベイラブルラックに優先順位で順序付けを行うことを実現するために、作成済みコンテナリストを取得することができ、作成済みコンテナリストは、複数の作成済みコンテナを含むことができ、作成済みコンテナは、Podを作成したことを指すことができる。各作成済みコンテナが対応するサーバノードを有するとは、各作成済みコンテナが所属するサーバノードを有することを意味する。同時に、各作成済みコンテナは、所属アプリケーション及び所属グループを有する。
本開示の実施例によれば、各サーバノードに対応する作成数情報を特定することは、各作成済みコンテナに対して、該作成済みコンテナに対応するサーバノード上の該作成済みコンテナが所属するアプリケーションのカウントを1増加させること、および、該作成済みコンテナが所属するグループのカウントを1増加させること、を含むことができる。これに基づいて、各作成済みコンテナが所属するアプリケーション及び所属するグループを対応するサーバノードに関連付けることができる。
本開示の実施例によれば、各サーバノードに対して、該サーバノードに対応する作成数情報を特定し、ここで、各作成数情報は、同じアプリケーションに属する作成済みコンテナの数、及び同じグループに属する作成済みコンテナの数を含むことができる。各アベイラブルラックに含まれる全てのサーバノードの作成数情報に基づいて、該アベイラブルラックの作成数情報、すなわち、該アベイラブルラックにおいて同じアプリケーションに属する作成済みコンテナの数及び同じグループに属する作成済みコンテナの数を特定することができる。これに基づいて、アベイラブルラックリストにおける各アベイラブルラックの作成数情報を取得することができる。
本開示の実施例によれば、アベイラブルラックリストにおける各アベイラブルラックの作成数情報に基づいて、各アベイラブルラックに優先順位で順序付けを行うことは、次のことを含むことができる。所定のラック優先順位ルール及びアベイラブルラックリストにおける各アベイラブルラックの作成数情報に基づいて、アベイラブルラックリストにおける各アベイラブルラックに優先順位で順序付けを行い、ここで、所定のラック優先順位ルールは、同じアプリケーションに属するコンテナの数が少ないアベイラブルラックほどそれに対応する優先順位が高いことを含むことができる。同じアプリケーションに属するコンテナの数が同じであれば、同じグループに属するコンテナの数が少ないアベイラブルラックほどそれに対応する優先順位が高い。同じグループに属するコンテナの数が同じであれば、第1ピット数が多いアベイラブルラックほどそれに対応する優先順位が高い。ここで、第1ピット数は、アベイラブルラックの総リソースと作成されたすべてのコンテナで用いられたリソースとの割合であってもよい。ここでいうコンテナ数とは、作成済みコンテナ数のことである。
例示的には、例えば、作成済みコンテナリストは、作成済みコンテナ1、作成済みコンテナ2及び作成済みコンテナ3を含む。アベイラブルラックリストは、アベイラブルラック1及びアベイラブルラック2を含む。アベイラブルラック1は、サーバノード1、サーバノード2及びサーバノード3を含む。アベイラブルラック2は、サーバノード4及びサーバノード5を含む。
作成済みコンテナ1に対応するサーバノードはサーバノード1であり、所属アプリケーションはアプリケーション1であり、所属グループはグループ1である。
作成済みコンテナ2に対応するサーバノードはサーバノード1であり、所属アプリケーションはアプリケーション1であり、所属グループはグループ1である。
作成済みコンテナ3に対応するサーバノードはサーバノード4であり、所属アプリケーションはアプリケーション1であり、所属グループはグループ2である。
サーバノード1に対して、サーバノード1に対応する作成数情報を特定する。ここで、作成数情報は、アプリケーション1に属する作成済みコンテナの数が2であること、グループ1に属する作成済みコンテナの数が2であることを含む。
サーバノード2に対して、サーバノード2に対応する作成数情報を特定する。ここで、作成数情報は0である。
サーバノード3に対して、サーバノード3に対応する作成数情報を特定する。ここで、作成数情報は0である。
サーバノード4に対して、サーバノード4に対応する作成数情報を特定する。ここで、作成数情報は、アプリケーション1に属する作成済みコンテナの数が1であること、グループ2に属する作成済みコンテナの数が1であることを含む。
サーバノード5に対して、サーバノード5に対応する作成数情報を特定する。ここで、作成数情報は0である。
サーバノード6に対して、サーバノード6に対応する作成数情報を特定する。ここで、作成数情報は0である。
サーバノード1、サーバノード2及びサーバノード3の作成数情報に基づいて、アベイラブルラック1の作成数情報は、アプリケーション1に属する作成済みコンテナの数が2であること、グループ1に属する作成済みコンテナの数が2であることを含むことを特定した。
サーバノード4及びサーバノード5に基づいて、アベイラブルラック2の作成数情報は、アプリケーション1に属する作成済みコンテナの数が1であること、グループ2に属する作成済みコンテナの数が1であることを含むことを特定した。
所定のラック優先順位ルール、アベイラブルラック1の作成数情報及びアベイラブルラック2の作成数情報に基づいて、アベイラブルラック1及びアベイラブルラック2に優先順位で順序付けを行う。アベイラブルラック1における同じアプリケーション1に属する数は、アベイラブルラック1における同じアプリケーション1に属する数よりも大きいため、アベイラブルラック2の優先順位は、アベイラブルラック1の優先順位よりも高くなる。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラックに対して優先順位で順序付けを行うことにより、コンテナのラックレベルでの均等配布に基礎を提供している。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラック内の空きサーバノードを位置決めすることは、次の操作を含むことができる。
アベイラブルラックリストにおける優先順位の最も高いアベイラブルラックをカレントラックとして特定する。カレントラックの空きサーバノード数が所定の閾値よりも大きいか否かを特定する。カレントラックの空きサーバノードの数が所定の閾値よりも大きい場合、カレントラック内の空きサーバノードを位置決めする。カレントラックの空きサーバノード数が所定の閾値以下である場合、アベイラブルラックリストにおける次の優先順位のアベイラブルラックをカレントラックとして特定する。カレントラック内の空きサーバノードを位置決めするまで、カレントラックの空きサーバノード数が所定の閾値よりも大きいか否かを特定する操作に戻って実行する。
本開示の実施例において、アベイラブルラックリストにおける複数のアベイラブルラックは優先順位で順序付けされるため、空きサーバノードを特定する場合、アベイラブルラックの優先順位に応じて特定することができる。
本開示の実施例によれば、アベイラブルラックリストにおける優先順位の最も高いアベイラブルラックをカレントラックとして特定し、カレントラック内の空きサーバノード数が所定の閾値よりも大きいか否かを特定する。カレントラック内の空きサーバノード数が所定の閾値よりも大きい場合、カレントラックから空きサーバノードを位置決めする。カレントラック内の空きサーバノード数が所定の閾値以下であれば、カレントラックから空きサーバノードを位置決めするまで、アベイラブルラックリストにおける次の優先順位のアベイラブルラックをカレントラックとして特定し、カレントラック内の空きサーバノード数が所定の閾値よりも大きいか否かの操作を実行する。
本開示の実施例によれば、アベイラブルラックリストにおける各アベイラブルラックに含まれる複数のサーバノードは、優先順位で順序付けされる。以下の方式によって、複数のサーバノードが優先順位で順序付けされることを実現し、すなわち、作成済みコンテナリストを取得し、ここで、作成済みコンテナリストは、複数の作成済みコンテナを含み、各作成済みコンテナは、対応するサーバノード、所属アプリケーション及び所属グループを有する。各サーバノードに対応する作成数情報を特定し、ここで、作成数情報は、同じアプリケーションに属する作成済みコンテナの数と、同じグループに属する作成済みコンテナの数とを含む。各サーバノードに対応する作成数情報に基づいて、複数のサーバノードに優先順位で順序付けを行う。
所定のサーバノード優先順位ルール及び各サーバノードに対応する作成数情報に基づいて、複数のサーバノードに対して優先順位で順序付けを行い、ここで、所定のサーバノード優先順位ルールは、同じアプリケーションに属するコンテナ数が少ないサーバノードほどそれに対応する優先順位が高くなることを含むことができる。同じアプリケーションに属するコンテナ数が同じであれば、同じグループに属するコンテナ数が少ないサーバノードほどそれに対応する優先順位が高くなる。同じグループに属するコンテナ数が同じであれば、第2ピット数が多いサーバノードほどそれに対応する優先順位が高くなる。ここで、第2ピット数は、サーバノードの総リソースと作成された全てのコンテナで使用されるリソースとの割合である。ここでのコンテナ数とは、作成済みコンテナの数のことである。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けすることは、次の操作を含むことができる。
カレントコンテナが所属するアプリケーション及び所属するグループを取得する。アベイラブルラックリストにおけるカレントラックの直前のリソース占有情報を取得する。アベイラブルラックリストにおける他のラックの直前のリソース占有情報を取得する。カレントコンテナが所属するアプリケーション、カレントコンテナが所属するグループ及びカレントラックの直前のリソース占有情報に基づいて、カレントラックのカレントリソース占有情報を特定する。アベイラブルラックリストにおけるカレントラックのカレントリソース占有情報及びアベイラブルラックリストにおける他のラックの直前のリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けする。
本開示の実施例によれば、カレントラックにおける空きサーバノードにカレントコンテナを作成した後、カレントラックの直前のリソース占有情報が変化するため、カレントコンテナが所属するアプリケーション及び所属するグループに基づいて、カレントラックの直前のリソース占有情報を更新して、カレントラックのカレントリソース占有情報を取得する必要がある。
アベイラブルラックリストにおけるアベイラブルラックを再順序付けすることを実現するために、さらに、アベイラブルラックリストにおけるカレントラック以外の他のラックの直前のリソース占有情報を取得する必要がある。他のラックの数は、一つ又は複数である。カレントラックの直前のリソース占有情報及び他のラックの直前のリソース占有情報は、いずれもカレントコンテナが作成されない前に、カレントラック及び他のラックに対応するリソース占有情報を指すものである。
カレントラックのカレントリソース占有情報及び他のラックの直前のリソース占有情報を取得した後、カレントラックのカレントリソース占有情報及び他のラックの直前のリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けすることができる。
本開示の実施例によれば、アベイラブルラックリストにおけるカレントラック及び他のラックの直前のリソース占有情報は、同じアプリケーションに属するコンテナ数、同じグループに属するコンテナ数及び第1ピット数を含み、ここで、第1ピット数は、ラックの総リソースと作成された全てのコンテナで使用されるリソースとの割合である。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報は、同じアプリケーションに属するコンテナ数、同じグループに属するコンテナ数及び第1ピット数を含む。ここで、アベイラブルラックは、カレントラック及び他のラックを含む。リソース占有情報は、カレントラックのカレントリソース占有情報、及び、他のラックの直前のリソース占有情報を含む。第1ピット数は、ラックのリソース情報を表すことができる。
本開示の実施例によれば、アベイラブルラックリストにおけるカレントラックのカレントリソース占有情報及びアベイラブルラックリストにおける他のラックの直前のリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けすることは、次の操作を含むことができる。
所定のラック優先順位ルール、アベイラブルラックリストにおけるカレントラックのカレントリソース占有情報、及びアベイラブルラックリストにおける他のラックの直前のリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けし、ここで、所定のラック優先順位ルールは、同じアプリケーションに属するコンテナ数が少ないアベイラブルラックほどそれに対応する優先順位が高くなることを含むことができる。同じアプリケーションに属するコンテナ数が同じであれば、同じグループに属するコンテナ数が少ないアベイラブルラックほどそれに対応する優先順位が高くなる。同じグループに属するコンテナ数が同じであれば、第1ピット数が多いアベイラブルラックほどそれに対応する優先順位が高くなる。
本開示の実施例によれば、コンテナのラックでの均等配布を実現するために、同一のアベイラビリティゾーンでのコンテナを異なるラックに優先的に割り当てる必要がある。同一のアベイラビリティゾーンでのコンテナを異なるラックに優先的に割り当てることを実現するために、所定のラック優先順位ルールを設定することができる。
カレントラックのカレントリソース占有情報は、同じアプリケーションに属するコンテナ数、同じグループに属するコンテナ数及び第1ピット数を含み、他のラックの直前のリソース占有情報は、同じアプリケーションに属するコンテナ数、同じグループに属するコンテナ数及び第1ピット数を含み、したがって、各アプリケーションに対して、同じアプリケーションに属するコンテナ数が少ないアベイラブルラックほどそれに対応する優先順位が高く、同じアプリケーションに属するコンテナ数が同じであれば、同じグループに属するコンテナ数が少ないアベイラブルラックほどそれに対応する優先順位が高く、同じグループに属するコンテナ数が同じであれば、第1ピット数が多いアベイラブルラックほどそれに対応する優先順位が高くなるという所定のラック優先順位ルールに従って、アベイラブルラックリストにおけるアベイラブルラックを再順序付けする。ここで、アベイラブルラックは、カレントラック及び他のラックを含む。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラックに対して優先順位で順序付けを行うことにより、コンテナのラックレベルでの均等配布のために基礎を提供している。
本開示の実施例によれば、上記コンテナ作成方法は、さらに以下の操作を含むことができる。
アベイラブルラックリストにおけるアベイラブルラック内のサーバノードのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードを再順序付けする。
再順序付けされたアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノード、及び更新されたアベイラブルネットワークアドレスリストに基づいて、他のコンテナを作成することは、以下の操作を含むことができる。
再順序付けされたアベイラブルラックリストにおけるアベイラブルラック、及びアベイラブルラック内のサーバノードに基づいて、アベイラブルラック内の新たな空きサーバノードを特定する。新たな空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて、他のコンテナを作成する。
本開示の実施例によれば、カレントコンテナの所属するアプリケーション及び所属するグループを取得することができる。アベイラブルラックリストにおけるサーバノードの直前のリソース占有情報を取得する。カレントコンテナの所属するアプリケーション及びカレントコンテナの所属するグループに基づいて空きサーバノードの直前のリソース占有情報を更新し、空きサーバノードのカレントリソース占有情報を取得する。アベイラブルラックリストにおけるアベイラブルラックの空きサーバノードのカレントリソース占有情報と、アベイラブルラックリストにおけるアベイラブルラック内の空きサーバノード以外の他のサーバノードの直前のリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードを再順序付けする。
再順序付けされたアベイラブルラックリストにおけるアベイラブルラック及びアベイラブルラック内のサーバノードを取得した後、上記に基づいてアベイラブルラック内の新たな空きサーバノードを特定することができる。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードは、優先順位で順序付けすることができるため、空きサーバノードを位置決めする場合、サーバノードの優先順位に応じて位置決めを行うことができる。すなわち、アベイラブルラックリストにおける優先順位の最も高いアベイラブルラックをカレントラックとして特定する。カレントラック内の優先順位の最も高いサーバノードをカレントサーバノードとして特定する。カレントサーバノードが空きサーバノードであるか否かを特定する。カレントサーバノードが空きサーバノードであれば、カレントサーバノードを空きサーバノードとして特定する。カレントサーバノードが空きサーバノードでなければ、カレントラック内の次の優先順位に対応するサーバノードをカレントサーバノードとして特定し、空きサーバノードを位置決めするまで、カレントサーバノードが空きサーバノードであるかどうかを特定するという操作に戻って実行する。
カレントラックにおいて空きサーバノードを位置決めできなければ、アベイラブルラックリストにおける次の優先順位のアベイラブルラックをカレントラックとして特定し、空きサーバノードを位置決めするまで、カレントラック内の優先順位の最も高いサーバノードをカレントサーバノードとして特定する操作に戻って実行する。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードのリソース占有情報は、同じアプリケーションに属するコンテナ数、同じグループに属するコンテナ数及び第2ピット数を含み、ここで、第2ピット数は、サーバノードの総リソースと作成された全てのコンテナで使用されるリソースとの割合である。
本開示の実施例によれば、第2ピット数は、サーバノードのリソース情報を表すことができる。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードを再順序付けすることは、以下の操作を含むことができる。
所定のサーバノード優先順位ルール及びアベイラブルラックリストにおけるアベイラブルラック内のサーバノードのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードを再順序付けし、ここで、所定のサーバノード優先順位ルールは、同じアプリケーションに属するコンテナ数が少ないサーバノードほどそれに対応する優先順位が高くなること、同じアプリケーションに属するコンテナ数が同じであれば、同じグループに属するコンテナ数が少ないサーバノードほどそれに対応する優先順位が高くなること、及び、同じグループに属するコンテナ数が同じであれば、第2ピット数が多いサーバノードほどそれに対応する優先順位が高くなること、を含むことができる。
本開示の実施例によれば、コンテナのサーバノードでの均等配布を実現するために、同じラックにおけるコンテナを異なるサーバノードに優先的に割り当てる必要がある。同じラックにおけるコンテナを異なるサーバノードに優先的に割り当てることを実現するために、所定のサーバ優先順位ルールを設定することができる。
サーバノードのリソース占有情報は、同じアプリケーションに属するコンテナ数、同じグループに属するコンテナ数及び第2ピット数を含み、したがって、各アプリケーションに対して、同じアプリケーションに属するコンテナ数が少ないサーバノードほどそれに対応する優先順位が高くなること、同じアプリケーションに属するコンテナ数が同じであれば、同じグループに属するコンテナ数が少ないサーバノードほどそれに対応する優先順位が高くなること、及び、同じグループに属するコンテナ数が同じであれば、第2ピット数が多いサーバノードほどそれに対応する優先順位が高くなること、という所定のサーバノード優先順位ルールに従って、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードを再順序付けする。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードに優先順位で順序付けを行うことにより、コンテナのサーバノードレベルでの均等配布のために基礎を提供している。
図5は、本開示の実施例に係る別のコンテナ作成方法のフローチャートを模式的に示す。
図5に示すように、該方法は、操作S501~S530を含む。
操作S501において、リソース要求を取得し、ここで、リソース要求は、作成対象コンテナ数を含む。
操作S502において、リソース要求に応答し、各ラック内の各サーバノードの総リソースを取得する。
操作S503において、各サーバノードの使用済みリソースを取得し、ここで、使用済みリソースは、作成済みコンテナに使用されたリソースである。
操作S504において、各サーバノードの総リソース及び各サーバノードの使用済みリソースに基づいて、アベイラブルラックを特定する。
操作S505において、アベイラブルラックに基づいて、アベイラブルラックリストを生成する。
操作S506において、作成済みコンテナリストを取得し、ここで、作成済みコンテナリストは、複数の作成済みコンテナを含み、各作成済みコンテナは、対応するサーバノード、所属アプリケーション及び所属グループを有する。
操作S507において、各サーバノードに対応する作成数情報を特定し、ここで、作成数情報は、同じアプリケーションに属する作成済みコンテナ数、及び同じグループに属する作成済みコンテナ数を含む。
操作S508において、所定のサーバノード優先順位ルール及び各サーバノードに対応する作成数情報に基づいて、アベイラブルラックリストにおけるアベイラブルラック内の複数のサーバノードに優先順位で順序付けを行う。
操作S509において、各アベイラブルラックに含まれる全てのサーバノードの作成数情報に基づいて、各アベイラブルラックの作成数情報を特定する。
操作S510において、所定のラック優先順位ルール及びアベイラブルラックリストにおける複数のアベイラブルラックの作成数情報に基づいて、アベイラブルラックリストにおける複数のアベイラブルラックに優先順位で順序付けを行う。
操作S511において、リソース要求に応答し、アベイラブルネットワークアドレスリストを取得し、ここで、アベイラブルネットワークアドレスリストは、少なくとも一つのアベイラブルネットワークアドレスを含む。
操作S512において、アベイラブルラックリストにおける優先順位の最も高いアベイラブルラックをカレントラックとして特定する。
操作S513において、カレントラックの空きサーバノード数が所定の閾値よりも大きいか否か。そうであれば、操作S514を実行する。そうでなければ、操作S515を実行する。
操作S514において、カレントラック内の複数のサービスノードの優先順位に応じて、カレントラック内の空きサーバノードを特定し、操作S516を実行する。
操作S515において、アベイラブルラックリストに次の優先順位のアベイラブルラックが存在するか否か。そうであれば、操作S518を実行する。そうでなければ、操作S519を実行する。
操作S516において、アベイラブルネットワークアドレスリストから一つのアベイラブルネットワークアドレスをターゲットネットワークアドレスとして選択する。
操作S517において、空きサーバノードに、ターゲットネットワークアドレスに対応するカレントコンテナを作成し、操作S520を実行する。
操作S518において、アベイラブルラックリストにおける次の優先順位のアベイラブルラックをカレントラックとして特定し、操作S513に戻って実行する。
操作S519において、割り当て異常情報を生成する。
操作S520において、アベイラブルネットワークアドレスリストを更新する。
操作S521において、カレントコンテナの所属するアプリケーション及び所属するグループを取得する。
操作S522において、アベイラブルラックリストにおけるカレントラックの直前のリソース占有情報を取得する。
操作S523において、アベイラブルラックリストにおける他のラックの直前のリソース占有情報を取得する。
操作S524において、カレントコンテナが所属するアプリケーション、カレントコンテナが所属するグループ、及びカレントラックの直前のリソース占有情報に基づいて、カレントラックのカレントリソース占有情報を特定する。
操作S525において、所定のラック優先順位ルール、アベイラブルラックリストにおけるカレントラックのカレントリソース占有情報、及びアベイラブルラックリストにおける他のラックの直前のリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けする。
操作S526において、所定のサーバノード優先順位ルール及びアベイラブルラックリストにおけるアベイラブルラック内のサーバノードのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードを再順序付けする。
操作S527において、作成済みコンテナ数が作成対象コンテナ数に等しいか否か。そうでなければ、操作S528を実行する。そうであれば、操作S529を実行する。
操作S528において、再順序付けされたアベイラブルラックリストにおけるアベイラブルラック及びアベイラブルラック内のサーバノードに基づいて、アベイラブルラック内の新たな空きサーバノードを特定し、操作S530を実行する。
操作S529において、コンテナ作成操作を終了する。
操作S530において、新たな空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて次のコンテナを作成し、次のコンテナをカレントコンテナとして、操作S520に戻って実行する。
本開示の実施例によれば、本開示の実施例のK8Sに基づくコンテナ作成方法の実質は、つまり、デプロイ環境のアベイラビリティゾーン、ラック及びサーバノードの着座情報、及び図1におけるサービスツリーにおけるクラスタサービス情報に基づいて、同じ応用での異なるコンテナ(すなわちサービスツリーにおけるインスタンス)をスケジューリングポリシーに応じて対応するサーバノードに割り当てることにより、コンテナの均等配布を実現する。コンテナをどのサーバノードに割り当てるかを特定した後、対応するサーバノードでコンテナを作成する必要があるため、コンテナの均等作成を実現することは、つまり、コンテナの均等配布を実現することである。
本開示の実施例によれば、スケジューリングポリシーは、以下のとおりである。1、マルチアベイラビリティゾーンシーンに対して、同じアプリケーションでの異なるコンテナを異なるアベイラビリティゾーンに優先的に割り当てる。2、上記「1」を保証する前提で、アベイラビリティゾーンが複数のラックを含みかつアベイラビリティゾーンに複数の同じアプリケーションでの容器を割り当てることに対して、同じアベイラビリティゾーンでの容器を異なるラックに優先的に割り当てる。上記「2」を保証する前提で、ラックが複数のサーバノードを含みかつラックに同じアプリケーションでの複数のコンテナが割り当てられたことに対して、同じラックでのコンテナを異なるサーバノードに優先的に割り当てる。上記スケジューリングポリシーにより、同じアプリケーションでのコンテナのアベイラビリティゾーン、ラック及びサーバノードの3つのレベルでの均等配布を実現する。
図6は、本開示の実施例に係る計算リソースフローのフローチャートを模式的に示す。図6は、アベイラブルラックリストの生成工程を示し、それは、操作S502~S510についての説明である。
図6においてK8S masterは、つまり、前述したMasterノード(すなわちマスタノード)である。nodeリストは、サーバノードリストを指す。Nodeリソースは、つまり、前述したサーバノードリソースである。「Podの所在するアプリケーション==リソース割り当て対象のアプリケーション」は、Podの所在するアプリケーションがリソース割り当て対象のアプリケーションであれば、そのアプリケーションPodカウントが1増加することを意味する。すなわち、各作成済みコンテナに対して、該作成済みコンテナに対応するサーバノード上の該作成済みコンテナが所属するアプリケーションのカウントを1増加させる。「Podの所在するグループ==リソース割り当て対象のグループ」は、Podの所在するグループがリソース割り当て対象のグループであれば、そのグループPodカウントが1増加することを意味する。すなわち、各作成済みコンテナに対して、該作成済みコンテナに対応するサーバノード上の該作成済みコンテナが所属するグループのカウントを1増加させる。
全てのPodリストをトラバースした後、サーバノードリストをサーバノードが位置するラック状況に応じてラックのリソース状況を統計し、アベイラブルラックリストを生成する。また、ラックに対して操作S510における所定のラック優先順位ルールに応じて優先順位で順序付けを行う。ラック内のサーバノードに対して操作S508における所定のサーバノード優先順位ルールに従って優先順位で順序付けを行う。
また、nodeピット数及び総ピット数を計算し、総ピット数をリソース要求に応答して計算された割り当て対象数と比較し、リソース要求に応答できるか否かを特定する。すなわち、総ピット数が割り当て対象数以上であれば、アベイラブルラックリスト及び割り当て済みネットワークアドレスリストに戻す。総ピット数が割り当て対象数より小さい場合、割り当て異常情報を生成する。
なお、コンテナを作成するたびに、アベイラブルラックリストにおけるアベイラブルラックを再順序付けすること、及び、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードを再順序付けすることを行う必要がある。
図7は、本開示の実施例に係るコンテナ作成方法の適用模式図を模式的に示す。図7においてシステムアプリケーションは、5層含み、それぞれ製品ライン、システム、アプリケーション、グループ及びインスタンスである。現在、同じアプリケーションでの作成対象インスタンス1、作成対象インスタンス2及び作成対象インスタンス2を対応するサーバノードに作成する必要がある。
作成対象インスタンス1に対して、アベイラビリティゾーン1及びアベイラビリティゾーン2にはアプリケーションでのインスタンスがまだスケジューリングされないため、アベイラビリティゾーンをランダムに選択することができる。現在、アベイラビリティゾーン1を選択し、操作S501及びS530に基づいて、アベイラビリティゾーン1におけるラック1内のサーバノード1に作成対象インスタンス1を作成する。
作成対象インスタンス2に対して、同じ応用での作成対象インスタンス1は既にアベイラビリティゾーン1に設置されているため、均等配布を確保するために、アベイラビリティゾーン2を選択し、操作S501及びS530に基づいて、アベイラビリティゾーン2におけるラック3内のサーバノード5に作成対象インスタンス2を作成する。
作成対象インスタンス3に対して、アベイラビリティゾーン1におけるラック2内のサーバノード3に作成対象インスタンス3を作成する。
上記したように、インスタンス(すなわち、コンテナ)のアベイラビリティゾーン、ラック及びサーバノードの3つのレベルでの均等配布を実現した。容器の均等配布を実現したため、アベイラビリティゾーン1又はアベイラビリティゾーン2に例えば、大面積の停電などの故障が発生しても、本開示の実施例の技術案を採用することによって、依然として動作可能なインスタンスがあることを確保することができる。
本開示の実施例の技術案によれば、アベイラブルラックリストは、異なるアベイラビリティゾーンのアベイラブルラックを含み、かつ、アベイラブルラックリストにおけるアベイラブルラック及びアベイラブルラック内のサーバノードは、いずれも優先順位で順序付けされるため、位置決めされた空きサーバノードは、コンテナの均等配布要求を満たすサーバノードとなり、これに基づいて、コンテナのアベイラビリティゾーン、ラック及びサーバノードの3つのレベルでの均等作成を図れ、すなわち、コンテナのアベイラビリティゾーン、ラック及びサーバノードの3つのレベルでの均等配布を図れる。したがって、関連技術でコンテナの均等配布を実現しにくいという技術的問題を少なくとも部分的に克服する。また、コンテナの均等配布を図れるため、クロスアベイラビリティゾーン、クロスラック及びサーバノードの高可用性というサービス要求を満たし、さらにシステムダウン状況の発生を効果的に回避させる。
図8は、本開示の実施例に係るコンテナ作成装置のブロック図を模式的に示す。
図8に示すように、コンテナ作成装置800は、取得モジュール810と、位置決めモジュール820と、第1作成モジュール830と、更新モジュール840と、第1順序付けモジュール850と、第2作成モジュール860とを含む。
取得モジュール810は、アベイラブルラックリスト及びアベイラブルネットワークアドレスリストを取得するために設けられ、ここで、アベイラブルラックリストが異なるアベイラビリティゾーンの複数のアベイラブルラックを含み、各アベイラブルラックには少なくとも一つのサーバノードを含み、アベイラブルネットワークアドレスリストが少なくとも一つのアベイラブルネットワークアドレスを含む。
位置決めモジュール820は、アベイラブルラックリストにおけるアベイラブルラック内の空きサーバノードを位置決めするために設けられる。
第1作成モジュール830は、空きサーバノード上に、アベイラブルネットワークアドレスに対応するカレントコンテナを作成するために設けられる。
更新モジュール840は、アベイラブルネットワークアドレスリストを更新するために設けられる。
第1順序付けモジュール850は、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けするために設けられる。
第2作成モジュール860は、再順序付けされたアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて、他の容器を作成するために設けられる。
本開示の実施例の技術案によれば、アベイラブルラックリスト及びアベイラブルネットワークアドレスリストを取得することであって、アベイラブルラックリストが異なるアベイラビリティゾーンの複数のアベイラブルラックを含み、各アベイラブルラックが少なくとも一つのサーバノードを含み、アベイラブルネットワークアドレスリストが少なくとも一つのアベイラブルネットワークアドレスを含むことによって、アベイラブルラックリストにおけるアベイラブルラック内の空きサーバノードを位置決めし、空きサーバノードに、アベイラブルネットワークアドレスに対応するカレントコンテナを作成し、アベイラブルネットワークアドレスリストを更新し、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けし、再順序付けされたアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて、他のコンテナを作成する。空きサーバノードに、一つのコンテナを作成するたびに、アベイラブルラックリストにおけるアベイラブルラックのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けし、さらに再順序付けされたアベイラブルラックリストにおけるアベイラブルラック内の空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて、次のコンテナを作成し、ここで、空きサーバノードは、異なるアベイラビリティゾーンのアベイラブルラックから由来するものである。したがって、コンテナの均等配布を図れるため、関連技術でコンテナの均等配布を実現しにくいという技術的問題を少なくとも部分的に克服できる。また、コンテナの均等配布を図れるため、クロスアベイラビリティゾーン、クロスラック及びサーバノードの高可用性というサービス要求を満たし、さらにシステムダウン状況の発生を効果的に回避させる。
本開示の実施例によれば、アベイラブルラックリストを取得することは、各ラック内の各サーバノードの総リソースを取得することと、各サーバノードの使用済みリソースを取得し、ここで、使用済みリソースが作成済みコンテナに使用されたリソースであることと、各サーバノードの総リソース及び各サーバノードの使用済みリソースに基づいて、アベイラブルラックを特定することと、アベイラブルラックに基づいてアベイラブルラックリストを生成することと、を含むことができる。
本開示の実施例によれば、アベイラブルラックリストにおける複数のアベイラブルラックは、優先順位で順序付けされる。
本開示の実施例によれば、以下の方式により、アベイラブルラックリストにおける複数のアベイラブルラックを優先順位で順序付けすることを実現する。作成済みコンテナリストを取得し、ここで、作成済みコンテナリストは、複数の作成済みコンテナを含み、各作成済みコンテナは、対応するサーバノード、所属アプリケーション及び所属グループを有する。各サーバノードに対応する作成数情報を特定し、ここで、作成数情報は、同じアプリケーションに属する作成済みコンテナ数及び同じグループに属する作成済みコンテナ数を含む。各サーバノードに対応する作成数情報に基づいて、アベイラブルラックリストにおける複数のアベイラブルラックに優先順位で順序付けを行う。
本開示の実施例によれば、位置決めモジュール820は、第1特定サブモジュールと、第2特定サブモジュールと、第1位置決めサブモジュールと、第2位置決めサブモジュールと、返戻サブモジュールとを含むことができる。
第1特定サブモジュールは、アベイラブルラックリストにおける優先順位の最も高いアベイラブルラックをカレントラックとして特定するために設けられる。
第2特定サブモジュールは、カレントラックの空きサーバノード数が所定の閾値よりも大きいか否かを特定するために設けられる。
第1位置決めサブモジュールは、カレントラックの空きサーバノード数が所定の閾値よりも大きい場合に、カレントラック内の空きサーバノードを位置決めするために設けられる。
第2位置決めサブモジュールは、カレントラックの空きサーバノード数が所定の閾値以下である場合に、アベイラブルラックリストにおける次の優先順位のアベイラブルラックをカレントラックとして特定するために設けられる。
返戻サブモジュールは、カレントラック内の空きサーバノードを位置決めするまで、カレントラックの空きサーバノード数が所定の閾値よりも大きいか否かを特定する操作に戻って実行するために設けられる。
本開示の実施例によれば、第1順序付けモジュール840は、第1取得サブモジュールと、第2取得サブモジュールと、第3取得サブモジュールと、順序付けサブモジュールとを含むことができる。
第1取得サブモジュールは、カレントコンテナの所属するアプリケーション及び属するグループを取得するために設けられる。
第2取得サブモジュールは、アベイラブルラックリストにおけるカレントラックの直前のリソース占有情報を取得するために設けられる。
第3取得サブモジュールは、アベイラブルラックリストにおける他のラックの直前のリソース占有情報を取得するために設けられる。
第3特定サブモジュールは、カレントコンテナが所属するアプリケーション、カレントコンテナが所属するグループ及びカレントラックの直前のリソース占有情報に基づいて、カレントラックのカレントリソース占有情報を特定するために設けられる。
第1順序付けサブモジュールは、アベイラブルラックリストにおけるカレントラックのカレントリソース占有情報及びアベイラブルラックリストにおける他のラックの直前のリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けするために設けられる。
本開示の実施例によれば、アベイラブルラックリストにおけるカレントラック及び他のラックの直前のリソース占有情報は、同じアプリケーションに属するコンテナ数、同じグループに属するコンテナ数及び第1ピット数を含み、ここで、第1ピット数は、ラックの総リソースと作成された全てのコンテナで使用されるリソースとの割合である。
本開示の実施例によれば、第1順序付けサブモジュールは、順序付けユニットを含むことができる。
順序付けユニットは、所定のラック優先順位ルール、アベイラブルラックリストにおけるカレントラックのカレントリソース占有情報及びアベイラブルラックリストにおける他のラックの直前のリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラックを再順序付けするために設けられ、ここで、所定のラック優先順位ルールが、次のものを含む。
同じアプリケーションに属するコンテナ数が少ないアベイラブルラックほどそれに対応する優先順位が高くなる。
同じアプリケーションに属するコンテナ数が同じであれば、同じグループに属するコンテナ数が少ないアベイラブルラックほどそれに対応する優先順位が高くなる。
同じグループに属するコンテナ数が同じであれば、第1ピット数が多いアベイラブルラックほどそれに対応する優先順位が高くなる。
本開示の実施例によれば、該コンテナ作成装置800は、さらに第2順序付けモジュールを含むことができる。
第2順序付けモジュールは、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードを再順序付けするために設けられる。
第2作成モジュール850は、第4特定サブモジュール及び作成サブモジュールを含むことができる。
第4特定サブモジュールは、再順序付けされたアベイラブルラックリストにおけるアベイラブルラック及びアベイラブルラック内のサーバノードに基づいて、アベイラブルラック内の新たな空きサーバノードを特定するために設けられる。
作成サブモジュールは、新たな空きサーバノード及び更新されたアベイラブルネットワークアドレスリストに基づいて、他のコンテナを作成するために設けられる。
本開示の実施例によれば、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードのリソース占有情報は、同じアプリケーションに属するコンテナ数、同じグループに属するコンテナ数及び第2ピット数を含み、ここで、第2ピット数は、サーバノードの総リソースと作成された全てのコンテナで使用されるリソースとの割合である。
本開示の実施例によれば、第2順序付けモジュールは、第2順序付けサブモジュールを含むことができる。
第2順序付けサブモジュールは、所定のサーバノード優先順位ルール及びアベイラブルラックリストにおけるアベイラブルラック内のサーバノードのリソース占有情報に基づいて、アベイラブルラックリストにおけるアベイラブルラック内のサーバノードを再順位付けするために設けられ、ここで、所定のサーバノード優先順位ルールが、次のものを含む。
同じアプリケーションに属するコンテナ数が少ないサーバノードほどそれに対応する優先順位が高くなる。
同じアプリケーションに属するコンテナ数が同じであれば、同じグループに属するコンテナ数が少ないサーバノードほどそれに対応する優先順位が高くなる。
同じグループに属するコンテナ数が同じであれば、第2ピットの数が多いサーバノードほどそれに対応する優先順位が高くなる。
本開示の実施例によるモジュール、サブモジュール、ユニットのうちの任意の複数、又はそのうちの任意の複数の少なくとも一部の機能は、一つのモジュールにおいて実現されてよい。本開示の実施例によるモジュール、サブモジュール、ユニットのうちのいずれか一つ又は複数は、複数のモジュールに分割して実現されてよい。本開示の実施例によるモジュール、サブモジュール、ユニットのうちのいずれか一つ又は複数は、少なくとも部分的にハードウェア回路、例えばフィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、システムオンチップ、基板上のシステム、パッケージ上のシステム、特定用途向け集積回路(ASIC)に実現されてもよく、又は回路を集積又はパッケージングする如何なる他の合理的な方式のハードウェア又はファームウェアで実現されてもよく、又はソフトウェア、ハードウェア及びファームウェアの三つの実現方式のうちのいずれか一つ又はそのうちの任意のいくつかの適切な組み合わせで実現されてもよい。又は、本開示の実施例によるモジュール、サブモジュール、ユニットのうちの一つ又は複数は、少なくとも部分的にコンピュータプログラムモジュールとして実現されてよく、該コンピュータプログラムモジュールが実行されると、対応する機能を実行することができる。
例えば、取得モジュール810、位置決めモジュール820、第1作成モジュール830、更新モジュール840、第1順序付けモジュール850及び第2作成モジュール860のうちの任意の複数のモジュールは、一つのモジュール/サブモジュール/ユニットに統合して実現されてもよく、又はそのうちの任意の一つのモジュール/サブモジュール/ユニットは、複数のモジュール/サブモジュール/ユニットに分割されてもよい。又は、これらのモジュール/サブモジュール/ユニットのうちの一つ又は複数のモジュール/サブモジュール/ユニットの少なくとも一部の機能は、他のモジュール/サブモジュール/ユニットの少なくとも一部の機能と組み合わせて、一つのモジュール/サブモジュール/ユニットにおいて実現されてもよい。本開示の実施例によれば、取得モジュール810、位置決めモジュール820、第1作成モジュール830、更新モジュール840、第1順序付けモジュール850及び第2作成モジュール860のうちの少なくとも一つは、少なくとも部分的にハードウェア回路、例えばフィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、システムオンチップ、基板上のシステム、パッケージ上のシステム、専用集積回路(ASIC)に実現されてもよく、又は回路を集積又はパッケージする如何なる他の合理的な方式などのハードウェア又はファームウェアで実現されてもよく、又はソフトウェア、ハードウェア及びファームウェアの三つの実現方式のうちのいずれか一つ又はそのうちの任意のいくつかの適切な組み合わせで実現されてもよい。又は、取得モジュール810、位置決めモジュール820、第1作成モジュール830、更新モジュール840、第1順序付けモジュール850及び第2作成モジュール860のうちの少なくとも一つは、少なくとも部分的にコンピュータプログラムモジュールとして実現されてもよく、該コンピュータプログラムモジュールが実行されると、対応する機能を実行することができる。
なお、本開示の実施例におけるコンテナ作成装置部分は、本開示の実施例におけるコンテナ作成方法部分に対応するものであり、コンテナ作成装置部分の説明は、具体的にコンテナ作成方法部分を参照し、ここでは説明を省略する。
図9は、本開示の実施例に係る上記した方法を実現することに適する電子装置のブロック図を模式的示す。図9に示される電子機器は、一例に過ぎず、本開示の実施例の機能及び使用範囲に何ら制限を与えるものではない。
図9に示すように、本開示の実施例に係る電子機器900は、リードオンリーメモリ(Read-Only Memory、ROM)902に記憶されたプログラム、又は記憶部分908からランダムアクセスメモリ(Random Access Memory、RAM)903にロードされたプログラムに基づいて、様々な適切な動作及び処理を実行することができるプロセッサ901を含む。プロセッサ901は、例えば、汎用マイクロプロセッサ(例えば、CPU)、コマンドセットプロセッサ及び/又は関連チップセット及び/又は専用マイクロプロセッサ(例えば、専用集積回路(ASIC))などを含んでもよい。プロセッサ901は、さらにキャッシュ用途のためのオンボードメモリを含んでもよい。プロセッサ901は、本開示の実施例による方法フローに従った異なる動作を実行するための単一の処理ユニット又は複数の処理ユニットを含んでもよい。
RAM903には、システム900の操作に必要な様々なプログラム及びデータが記憶されている。プロセッサ901、ROM902、およびRAM903は、バス904を介して相互に接続されている。プロセッサ901は、ROM902および/またはRAM903におけるプログラムを実行することにより、本開示の実施例による方法フローに従った各種動作を実行する。なお、前記プログラムは、ROM902及びRAM903以外の一つ又は複数のメモリに記憶されてもよい。プロセッサ901は、前記一つ又は複数のメモリに記憶されたプログラムを実行することにより、本開示の実施例による方法フローに従った各種動作を実行してもよい。
本開示の実施例によれば、電子機器900は、入出力(I/O)インタフェース905をさらに含んでもよく、入出力(I/O)インタフェース905もバス904に接続される。システム900は、I/Oインタフェース905に接続された、キーボード、マウスなどを含む入力部分906、陰極線管(CRT)、液晶ディスプレイ(Liquid Crystal Display、LCD)など及びスピーカなどを含む出力部分907、ハードディスクなどを含む記憶部分908、及びLANカード、モデムなどのネットワークインタフェースカードを含む通信部分909のうちの一つ又は複数をさらに含んでもよい。通信部分909は、インターネットなどのネットワークを介して通信処理を行う。ドライバ910も、必要に応じてI/Oインタフェース905に接続される。例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどのリムーバブルメディア911は、必要に応じてドライブ910にインストールされることにより、それから読み出されたコンピュータプログラムが必要に応じて記憶部908にインストールされる。
本開示の実施例によれば、本開示の実施例に係る方法フローは、コンピュータソフトウェアプログラムとして実現することができる。例えば、本開示の実施例は、コンピュータプログラム製品を含み、それはコンピュータ読み取り可能な記憶媒体に担持されたコンピュータプログラムを含み、該コンピュータプログラムはフローチャートに示された方法を実行するように構成されたプログラムコードを含む。このような実施例において、該コンピュータプログラムは、通信部分909を介してネットワークからダウンロード及びインストールされ、及び/又はリムーバブルメディア911からインストールされてもよい。該コンピュータプログラムがプロセッサ901により実行されると、本開示の実施例によるシステムに限定された上記機能を実行する。本開示の実施例によれば、上述したシステム、機器、装置、モジュール、ユニットなどは、コンピュータプログラムモジュールにより実現されてもよい。
本開示は、コンピュータ読み取り可能な記憶媒体をさらに提供する。該コンピュータ読み取り可能な記憶媒体は上記実施例で説明した機器/装置/システムに含まれてもよく、単独で存在し、該機器/装置/システムに組み込まれていなくてもよい。上記コンピュータ読み取り可能な記憶媒体には、一つ又は複数のプログラムが担持されており、上記一つ又は複数のプログラムが実行される場合、本開示の実施例に係る方法を実現する。
本開示の実施例によれば、コンピュータ読み取り可能な記憶媒体は、不揮発性のコンピュータ読み取り可能な記憶媒体であってもよい。例えば、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROM(Erasable Programmable Read Only Memory)又はフラッシュメモリ)、ポータブルコンパクトディスク読み取り専用メモリ(Computer Disc Read-Only Memory、CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は上記任意の適切な組み合わせを含むことができるが、それらに限定されない。本開示において、コンピュータ読み取り可能な記憶媒体は、プログラムを含み又は記憶する如何なる有形の媒体であってもよく、該プログラムは、コマンド実行システム、装置又はデバイスに使用され、又はそれらと組み合わせて使用されてもよい。
例えば、本開示の実施例によれば、コンピュータ読み取り可能な記憶媒体は、上記ROM902及び/又はRAM903及び/又はROM902及びRAM903以外の一つ又は複数のメモリを含むことができる。
図面におけるフローチャート及びブロック図は、本開示の様々な実施例に係るシステム、方法及びコンピュータプログラム製品の実現可能なシステムアーキテクチャ、機能及び操作を示す。この点において、フローチャート又はブロック図における各ブロックは、一つのモジュール、プログラムセグメント、又はコードの一部を表すことができ、上記モジュール、プログラムセグメント、又はコードの一部は、一つ又は複数の定められた論理機能を実現するための実行可能な命令を含む。なお、いくつかの代替としての実現において、ブロックにマークされた機能は、図面にマークされた順序と異なる順序で発生してもよい。例えば、二つの連続的に示されるブロックは、実際に基本的に並行して実行されてもよく、それらは、時々逆の順序で実行されてもよく、これは、係われる機能に依存する。なお、ブロック図又はフローチャートにおける各ブロック、及びブロック図又はフローチャートにおけるブロックの組み合わせは、定められた機能又は操作を実行する専用のハードウェアベースに基づくシステムで実現されてもよく、又は専用のハードウェアとコンピュータコマンドの組み合わせで実現されてもよい。当業者であれば理解できるように、本開示の各実施例及び/又は特許請求の範囲に記載の特徴は、様々な組み合わせ及び/又は結合を行うことができ、このような組み合わせ又は結合が本開示に明確に記載されていなくてもよい。特に、本開示の精神及び教示から逸脱することなく、本開示の各実施例及び/又は請求項に記載の特徴は、様々な組み合わせ及び/又は結合を行うことができる。これらの組み合わせ及び/又は結合は全て本発明の範囲に含まれるものとする。
以上、本開示の実施例について説明した。しかしながら、これらの実施例は、説明の目的だけであり、本開示の範囲を限定するものではない。以上に各実施例をそれぞれ説明したが、これは、各実施例における施策を有利に組み合わせて使用することができないことを意味するものではない。本開示の範囲は、特許請求の範囲およびその均等物によって規定される。本開示の範囲から逸脱することなく、当業者は、様々な代替及び修正を行うことができ、これらの代替及び修正は、いずれも本開示の範囲内に含まれるべきである。
図2は、関連技術におけるインスタンス配布の一例の模式図を模式的に示す。図2に示すように、ラック1、ラック2及びラック3を含み、各ラックは、4つのサーバノードを含む。アプリケーション1、アプリケーション2及びアプリケーション3を含む。ここで、アプリケーション2は、グループ1、グループ2及びグループ3を含む。グループ1は、インスタンス1を含み、グループ2は、インスタンス2を含み、グループ3は、インスタンス3を含む。関連技術を用いてアプリケーション2に同じく属するインスタンス1、インスタンス2及びインスタンス3をそれぞれラック1におけるサーバノード、ラック3におけるサーバノード及びラック3におけるサーバノードに割り当てる。このことからわかるように、関連技術を用いてアプリケーション2に同じく属するインスタンス2及びインスタンス3を同じラックに割り当てることになり、すなわち、関連技術を用いる場合、コンテナの均等配布が実現されていない。これは、関連技術ではアベイラビリティゾーン及びラックを識別することができないため、同じアプリケーションでの複数のインスタンスが同一のアベイラビリティゾーン又は同一のラックに割り当てられる可能性があるためである。アベイラビリティゾーンの専用線又はラックに問題が発生すると、システムダウンを引き起こしてサービスの機能全体に影響を与えやすい。本開示の実施例によって提供される技術案は、上記問題を解決するためになされたものである。以下、具体的な実施例を挙げて説明する。
所定のラック優先順位ルール、アベイラブルラック1の作成数情報及びアベイラブルラック2の作成数情報に基づいて、アベイラブルラック1及びアベイラブルラック2に優先順位で順序付けを行う。アベイラブルラック1における同じアプリケーション1に属する数は、アベイラブルラック2における同じアプリケーション1に属する数よりも大きいため、アベイラブルラック2の優先順位は、アベイラブルラック1の優先順位よりも高くなる。
図7は、本開示の実施例に係るコンテナ作成方法の適用模式図を模式的に示す。図7においてシステムアプリケーションは、5層含み、それぞれ製品ライン、システム、アプリケーション、グループ及びインスタンスである。現在、同じアプリケーションでの作成対象インスタンス1、作成対象インスタンス2及び作成対象インスタンス3を対応するサーバノードに作成する必要がある。