(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-10
(45)【発行日】2024-06-18
(54)【発明の名称】リソーススケジューリング方法、リソーススケジューリングシステム、及び機器
(51)【国際特許分類】
G06F 9/50 20060101AFI20240611BHJP
【FI】
G06F9/50 120Z
(21)【出願番号】P 2023500093
(86)(22)【出願日】2021-06-30
(86)【国際出願番号】 CN2021103638
(87)【国際公開番号】W WO2022002148
(87)【国際公開日】2022-01-06
【審査請求日】2023-01-04
(31)【優先権主張番号】202010625668.0
(32)【優先日】2020-07-01
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】511151662
【氏名又は名称】中興通訊股▲ふん▼有限公司
【氏名又は名称原語表記】ZTE CORPORATION
【住所又は居所原語表記】ZTE Plaza,Keji Road South,Hi-Tech Industrial Park,Nanshan Shenzhen,Guangdong 518057 China
(74)【代理人】
【識別番号】100112656
【氏名又は名称】宮田 英毅
(74)【代理人】
【識別番号】100089118
【氏名又は名称】酒井 宏明
(74)【代理人】
【識別番号】110000914
【氏名又は名称】弁理士法人WisePlus
(72)【発明者】
【氏名】張乗銘
(72)【発明者】
【氏名】唐波
(72)【発明者】
【氏名】王科文
(72)【発明者】
【氏名】韓炳涛
(72)【発明者】
【氏名】王永成
(72)【発明者】
【氏名】屠要峰
(72)【発明者】
【氏名】高洪
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2007-264886(JP,A)
【文献】米国特許出願公開第2021/0374156(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実行されるリソーススケジューリング方法であって、
スケジューリングキューからスケジューリング対象を取得するステップと、
前記スケジューリング対象がカスタムリソースである場合、現在のリソース状態
及び前記カスタムリソースの要件情報に基づいて、スケジューリングユニットリストを得るステップであって、前記スケジューリングユニットリストは、前記カスタムリソースを構成するように構成される第1スケジューリングユニットを含
み、前記カスタムリソースの要件情報には、分割ポリシーの情報及びリソース要件の情報が含まれるステップと、
前記スケジューリングユニットリスト中の前記第1スケジューリングユニットを順次スケジューリングするステップと、を含むリソーススケジューリング方法。
【請求項2】
現在のリソース状態
及び前記カスタムリソースの要件情報とに基づいて、スケジューリングユニットリストを得る前記ステップは、
クラスタノードの残りのリソースが前記カスタムリソース
の前記要求情報における前記リソース要件を満たす場合、
現在のリソース状態と前記カスタムリソースの前記要求情報における前記分割ポリシーの情報に基づいて、前記スケジューリングユニットリストを得るステップを含む請求項1に記載のリソーススケジューリング方法。
【請求項3】
前記スケジューリング対象が
ネイティブスケジューリング基礎ユニットである第2スケジューリングユニットである場合、前記第2スケジューリングユニットを直接スケジューリングするステップをさらに含む請求項1に記載のリソーススケジューリング方法。
【請求項4】
全ての前記スケジューリング対象のスケジューリングが完了した後、前記第1スケジューリングユニット及び前記第2スケジューリングユニットをそれぞれ対応するノードにバインディングするステップをさらに含む請求項3に記載のリソーススケジューリング方法。
【請求項5】
全ての前記スケジューリング対象のスケジューリングが完了した後に、
ノードバインディング要求を開始させ、前記ノードの割当可能リソース情報を更新し、前記割当可能リソース情報に基づいて最適なノードを決定するステップをさらに含む請求項4に記載のリソーススケジューリング方法。
【請求項6】
スケジューリング要求に従ってスケジューリング対象を作成するステップと、
前記スケジューリング対象のバインディング情報をリスニングし、新しい前記スケジューリング対象を同一のキューに入れて前記スケジューリングキューを構成するステップと、をさらに含む請求項1に記載のリソーススケジューリング方法。
【請求項7】
第1スケジューリングユニットのいずれかがスケジューリングに失敗した場合、既にスケジューリングされている前記第1スケジューリングユニットを削除し、リソースを解放するステップをさらに含む請求項1に記載のリソーススケジューリング方法。
【請求項8】
スケジューリングキューからスケジューリング対象を取得するように構成されるスケジューラと、
前記スケジューリング対象がカスタムリソースである場合、現在のリソース状態
及び前記カスタムリソースの要件情報に基づいて、スケジューリングユニットリストを得るスプリッタであって、前記スケジューリングユニットリストは、前記カスタムリソースを構成するように構成される第1スケジューリングユニットを含
み、前記カスタムリソースの要件情報には、分割ポリシーの情報及びリソース要件の情報が含まれる前記スプリッタと、を含み、
前記スケジューラは、前記スケジューリングユニットリスト中の前記第1スケジューリングユニットを順次スケジューリングするリソーススケジューリングシステム。
【請求項9】
前記スプリッタは、さらに、
クラスタノードの残りのリソースが前記カスタムリソースの前記要求情報における前記リソース要件を満たす場合、
現在のリソース状態と前記カスタムリソースの前記要求情報における前記分割ポリシーの情報に基づいて、前記スケジューリングユニットリストを得るように構成される請求項8に記載のリソーススケジューリングシステム。
【請求項10】
前記スケジューラは、さらに、
前記スケジューリング対象が
ネイティブスケジューリング基礎ユニットである第2スケジューリングユニットである場合、前記第2スケジューリングユニットを直接スケジューリングするように構成される請求項8に記載のリソーススケジューリングシステム。
【請求項11】
前記スプリッタは、さらに、
前記第1スケジューリングユニット及び第2スケジューリングユニットをそれぞれ対応するノードにバインディングするように構成される請求項10に記載のリソーススケジューリングシステム。
【請求項12】
前記スケジューラは、さらに、
バインディング要求を開始させ、前記ノードの割当可能リソース情報を更新し、前記割当可能リソース情報に基づいて最適なノードを決定するように構成される請求項11に記載のリソーススケジューリングシステム。
【請求項13】
前記スケジューラは、さらに、
前記スケジューリング対象のスケジューリング要求を取得し、
前記スケジューリング対象のバインディング情報をリスニングし、新しい前記スケジューリング対象を同一のキューに入れて前記スケジューリングキューを構成するように構成される請求項8に記載のリソーススケジューリングシステム。
【請求項14】
前記スケジューラは、さらに、
前記第1スケジューリングユニットのいずれかがスケジューリングに失敗した場合、既にスケジューリングされている前記第1スケジューリングユニットを削除し、リソースを解放するように構成される請求項8に記載のリソーススケジューリングシステム。
【請求項15】
メモリと、プロセッサと、メモリ上に記憶され、プロセッサ上で運転可能なコンピュータプログラムと、を含み、前記プロセッサは前記コンピュータプログラムを実行すると、請求項1~7のいずれか1項に記載のリソーススケジューリング方法を実現する機器。
【請求項16】
請求項1~7のいずれか1項に記載のリソーススケジューリング方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、出願番号が202010625668.0、出願日が2020年7月1日の中国特許出願に基づいて提出され、当該中国特許出願の優先権を主張しており、当該中国特許出願の全ての内容はここで参照として本願に組み込まれている。
【0002】
本願は、コンピュータの技術分野に関し、特に、リソーススケジューリング方法、リソーススケジューリングシステム、機器、及びコンピュータ読み取り可能な記憶媒体に関する。
【背景技術】
【0003】
Kubernetesは現在最も主流のコンテナ・オーケストレーション、スケジューリングプラットフォームであり、良好な拡張性を通じてユーザのカスタムリソース(CRD:Custom Resource Definitions)の管理をサポートし、ユーザがカスタムリソースを1つの全体的な対象エンティティとして管理するのに有利である。しかし、現在、KubernetesはPodのスケジューリングのみをサポートし、CRDをスケジューリングするには専用のスケジューラが必要とされ、複数のスケジューラの間でリソーススケジューリングの矛盾の問題が発生し、また、次のような問題も発生する。リソースがCRDのリソース要求を満たすことができず、結果としてCRDがスケジューリングされず、CRDは正常にスケジューリングできたとしても、最適なリソース割り当てでスケジューリングされていないため、運転効率が低下する。
【発明の概要】
【発明が解決しようとする課題】
【0004】
以下は本明細書で詳細に説明される主題の概要である。本概要は、特許請求の範囲の保護範囲を限定するものではない。
【0005】
本願は、リソーススケジューリング方法、リソーススケジューリングシステム、機器、及びコンピュータ読み取り可能な記憶媒体を提案する。
【課題を解決するための手段】
【0006】
第1態様では、本願の実施例によるリソーススケジューリング方法は、
スケジューリングキューからスケジューリング対象を取得するステップと、
前記スケジューリング対象がカスタムリソースである場合、現在のリソース状態に応じて前記カスタムリソースを分解して、前記カスタムリソースを構成するように構成されるスケジューリングユニットを含むスケジューリングユニットリストを得るステップと、
前記スケジューリングユニットリスト中の前記スケジューリングユニットを順次スケジューリングするステップと、を含む。
【0007】
第2態様では、本願の実施例によるリソーススケジューリングシステムは、
スケジューリングキューからスケジューリング対象を取得するように構成されるスケジューラと、
前記スケジューリング対象がカスタムリソースである場合、現在のリソース状態に応じて前記カスタムリソースを分解して、前記カスタムリソースを構成するように構成されるスケジューリングユニットを含むスケジューリングユニットリストを得るように構成されるスプリッタと、を含み、
前記スケジューラは、前記スケジューリングユニットリスト中の前記スケジューリングユニットを順次スケジューリングする。
【0008】
第3態様では、本明細書の実施例による機器は、
メモリと、プロセッサと、メモリ上に記憶され、プロセッサ上で運転可能なコンピュータプログラムと、を含み、前記プロセッサは、前記コンピュータプログラムを実行すると、上記第1態様の実施例のリソーススケジューリング方法を実現する。
【0009】
第4態様では、本願の実施例によるコンピュータ読み取り可能な記憶媒体は、
上記した第1態様の実施例のリソーススケジューリング方法を実行するためのコンピュータ実行可能命令を記憶している。
【0010】
本願の他の特徴及び利点は、後の明細書で説明され、本明細書から部分的に明らかになるか、又は本明細書を実施することによって理解される。本願の目的及び他の利点は、明細書、特許請求の範囲、及び図面において特に指摘された構造によって達成され得る。
図面は、本願の技術案の更なる理解を提供するために使用され、明細書の一部を構成し、本願の実施例と共に本願の技術案を説明するために使用され、本願の技術案を限定するものではない。
【図面の簡単な説明】
【0011】
【
図1】本願の一実施例によるシステムアーキテクチャプラットフォームの概略図である。
【
図2】本願の一実施例によるリソーススケジューリング方法のフローチャートである。
【
図3】本願の他の実施例によるリソーススケジューリング方法のフローチャートである。
【
図4】本願の他の実施例によるリソーススケジューリング方法のフローチャートである。
【
図5】本願の他の実施例によるリソーススケジューリング方法のフローチャートである。
【
図6】本願の他の実施例によるリソーススケジューリング方法のフローチャートである。
【
図7】本願の他の実施例によるリソーススケジューリング方法のフローチャートである。
【
図8】本願の他の実施例によるリソーススケジューリング方法のフローチャートである。
【
図9】本願の他の実施例によるリソーススケジューリング方法のフローチャートである。
【
図10】本願の他の実施例によるリソーススケジューリング方法のフローチャートである。
【
図11】本願の他の実施例によるリソーススケジューリング方法のフローチャートである。
【発明を実施するための形態】
【0012】
本願の目的、技術案及び利点をより明確にするために、以下では、図面及び実施例を参照して、本願をさらに詳細に説明する。なお、ここで説明される具体的な実施例は、本願を説明するためにのみ使用され、本願を限定するものではない。
【0013】
なお、機能モジュール分割は装置の概略図に示され、論理的順序はフローチャートに示されているが、示された又は説明されたステップは、場合によっては、装置のモジュール分割又はフローチャートに示された順序とは異なるもので実行されてもよい。明細書、特許請求の範囲、又は上記の図面における用語「第1」、「第2」などは、特定の順序又は優先順位を説明するために使用されるのではなく、類似の対象を区別するために使用される。
【0014】
Kubernetesは、クラウドプラットフォームの複数のホスト上でコンテナ化されたアプリケーションを管理するためのオープンソースのものであり、コンテナ化されたアプリケーションのデプロイメントを簡単かつ効率的にすることを目指しており、アプリケーションのデプロイメント、計画、更新、保守の仕組みを提供している。Kubernetesでは、複数のコンテナを作成し、各コンテナで1つのアプリケーションインスタンスを運転し、そして、組み込まれた負荷分散ポリシーを使用して、このアプリケーションインスタンスグループの管理、発見、アクセスを行うが、これらの詳細は、運用管理者が複雑な手作業の設定と処理を行う必要がない。Kubernetesは適用が広く、多くの企業や研究機関のクラウドコンピューティング、人工知能などのプラットフォームはKubernetesに基づいて実現されている。Kubernetesは、良好な拡張性によって、ユーザのカスタムリソース(CRD:Custom Resource Definitions)の管理をサポートし、ユーザがカスタムリソースを1つの全体的な対象エンティティとして管理することに有利である。
【0015】
しかし、現在、KubernetesはPodのスケジューリングのみをサポートし、PodはKubernetesで作成及びデプロイメントが可能な最小ユニットであり、Kubernetesクラスタ内の1つのアプリケーションインスタンスであり、常に同じノード上にデプロイされ、Podには1つ又は複数のコンテナが含まれており、ストレージやネットワークなどの各コンテナが共有するリソースも含まれている。KubernetesはCRDをスケジューリングするには専用のスケジューラが必要とされ、複数のスケジューラの間でリソーススケジューリングの矛盾が発生する可能性がある。
【0016】
KubernetesデフォルトスケジューラはPodのスケジューリングのみをサポートし、CRD対象のスケジューリングをサポートしておらず、Kubernetesデフォルトスケジューラは、現在のリソース状態に応じてCRD対象をPodに自動的かつ合理的に分解することはできない。本願は、リソーススケジューリング方法、リソーススケジューリングシステム、機器、及びコンピュータ読み取り可能な記憶媒体を提供し、リソースをスケジューリングする際に、スケジューリングキューからスケジューリング対象を取得し、スケジューリング対象がカスタムリソースである場合、現在のリソース状態に応じてカスタムリソースを分解して、カスタムリソースを構成するように構成される第1スケジューリングユニットを含むスケジューリングユニットリストを得て、次に、スケジューリングユニットリストに従って各第1スケジューリングユニットを順次スケジューリングする。このリソーススケジューリング方法は、Kubernetesスケジューリングプラットフォームに適用することができ、第1スケジューリングユニットはCRD対象であり、スケジューリングする際にスケジューリング対象がCRDである場合、現在のリソース状態に応じてCRDを分解して、Pod集合を含むスケジューリングユニットリストを得て、このように、Kubernetesスケジューリングプラットフォームがスケジューリングユニットリストに従ってPodをアトミックにスケジューリングすることができ、全てのPodがキューに従って順次スケジューリングされ、他のPodが挿入されることを回避し、このようにCRDが合理的にスケジューリングされ、スケジューリング効率が高く、Kubernetesスケジューリングプラットフォームが様々な業務シナリオに適合することを確保する。
【0017】
以下、図面を参照して、本願の技術案を明確かつ完全に説明するが、以下に説明される実施例は本願の実施例の一部であり、実施例の全てではないことは明らかである。
【0018】
図1に示すように、
図1は、本願の一実施例によるリソーススケジューリング方法を実行するためのシステムアーキテクチャプラットフォーム100の概略図であり、このシステムアーキテクチャプラットフォーム100はリソーススケジューリングシステムである。
【0019】
図1に示す実施例では、システムアーキテクチャプラットフォーム100は、スケジューリング対象をスケジューリングするように構成されるスケジューラ110と、スケジューラ110の分解要求に応答して、スケジューラ110のスケジューリング要件を満たすようにスケジューリング対象を分解するスプリッタ120と、を含む。具体的には、スケジューリングする際には、スケジューラ110は、スケジューリングキューからスケジューリング対象を取得し、スケジューリング対象がカスタムリソースである場合、スプリッタ120は、現在のリソース状態に応じてカスタムリソースを分解して、カスタムリソースを構成するように構成される第1スケジューリングユニットを含むスケジューリングユニットリストを得る。スケジューラ110は、スケジューリングユニットリストに従って、スケジューリングユニットリスト中の第1スケジューリングユニットを順次スケジューリングすることにより、カスタムリソースのスケジューリングを完了する。
【0020】
図1に示すように、具体的には、Kubernetesスケジューリングプラットフォームを例に説明する。
【0021】
実施例のKubernetesスケジューリングシステムは、スケジューラ(Scheduler)110と、スプリッタ(Pod-Splitor)120と、コントローラ(CRD-Controller)130と、を含む。
【0022】
ここで、スケジューラ110はPodのスケジューリングを担当し、スプリッタはCRD対象のスプリットを担当し、第1スケジューリングユニットはCRD対象であり、第2スケジューリングユニットはネイティブPod対象である。本実施例では、CRDとPodが同一のスケジューリングキューに入れられ、スケジューリング対象がCRDである場合、スケジューラ110は拡張されたスプリット(Split)インタフェースにより分解されたPod集合を得て、全てのPodはスケジューラ110により順次スケジューリングされる。
【0023】
スプリッタ120はユーザによってカスタマイズされた拡張コンポーネントであり、主としてスケジューラ110の分解要求に応答して、現在のクラスタリソース占有状況に応じてCRDを合理的なPodにスプリットし、これらのPodを含むスケジューリングユニットリストを作成し、スケジューリングのためにスケジューリングユニットリストをスケジューラ110に返すことを担当し、また、スプリッタ120は、スケジューラ110のノードバインディング要求に応答して、Podとノード(Node)とのバインディング操作を行うこともできる。ここで、Podとノードとのバインディングは、Podという対象にノードの情報、リソース情報を新たに追加するものとして理解してもよく、次に、スケジューリングシステムの専用コンポーネントは、これらのバインディング情報に基づいて対応するノード上でPodを運転させる。
【0024】
コントローラ130は、ユーザによってカスタマイズされた拡張コンポーネントであり、特定のCRDの状態、ライフサイクルの管理に用いられる。CRDと対応するPodの状態に応じてCRD状態を更新し、ユーザコマンド又はCRD自体のポリシーによれば、例えばPodが正常に終了すると、CRDライフサイクルが終了し、このようにして、CRDライフサイクルを維持する。コントローラ130は、Kubernetesスケジューリングプラットフォームが有する機能コンポーネントであり、ここでは詳しく説明しない。
【0025】
また、ユーザはApi-Server140を介してCRD、Pod対象を作成し、スケジューラ110はApi-Serverを介してCRD、Pod対象のバインディング情報をリスニングし、全てのPodのスケジューリングが完了した後、スプリッタ120はApi-Serverを介してPodとノードとをバインディングする。
【0026】
また、スケジューラ110には、現在、エクステンダ(Extender)とスケジューリングフレームワーク(Scheduling Framework)の2つの拡張方式があるが、従来の拡張インタフェースに新たにSplitインタフェースを追加し、スケジューラ110がCRDをスケジューリングする際に、このSplitインタフェースを介してCRDを分解したPod集合を取得する。ここで、エクステンダは、web hook方式でスケジューラ110を拡張させ、スケジューリングフレームワークは、拡張インタフェースをスケジューラ110に直接コンパイルする。CRDリソースを合理的に分割するために、本願の実施例では、CRDリソース対象を分割してCRDをPod集合に変換するように構成される新しい拡張インタフェース、すなわちSplitインタフェースが導入される。CRDリソースが異なると、分割方式が異なる可能性があり、具体的なSplitインタフェースはExtender又はScheduling Frameworkで実現され、主に2つの作業、すなわち、ある戦略を採用してこのCRDを1~N個のPodの集合に分割し、各Podに具体的なリソース数を割り当てることと、分割の過程で、クラスタノードの残りのリソース例えばGPU、CPUリソースなどが分割の要件を満たすことができるか否かを判断し、満たさない場合、スケジューラ110に対してエラー情報を返し、全て満たす場合、分割したPod集合を返すことを担当する。
【0027】
スケジューリングシステムは、スケジューリングする際には、スケジューリング対象がCRDである場合、現在のリソース状態に応じてCRDを分解して、Pod集合を含むスケジューリングユニットリストを得て、このようにして、Kubernetesスケジューリングプラットフォームはスケジューリングユニットリストに従ってPodをスケジューリングすることができ、全てのPodがキューに従って順次スケジューリングされ、他のPodが挿入されることを回避し、このようにCRDが合理的にスケジューリングされ、スケジューリング効率が高く、Kubernetesスケジューリングプラットフォームが様々な業務シナリオに適合することを確保する。
【0028】
なお、スケジューリング対象がPodである場合、元のKubernetesスケジューリングシステムのスケジューリングの流れに従って処理を行うが、Podのバインディング操作はスプリッタ120によって行われ、スケジューリング対象がCRDである場合、スプリッタ120は、現在のクラスタのリソース状態に応じて、Podを分解し、CRDを1つ又は複数のPodに分解し、スプリッタ120は、CRDを分解するPodの数、及びPodによって使用されるリソース(CPU、メモリ、GPU)を決定するだけでよく、これらのPodのスケジューリングは、スプリッタ120によってCRDの分解が完了した後にスケジューラ110によって行われ、スケジューラ110は、ノードに対してフィルタリング、優先順位付け、スコア付けなどの最適化アルゴリズムを実行して、Podのために適切なノードを選択し、それによって、Podリスト中のPodをスプリッタ120によってノードにバインディングし、スケジューラ110とスプリッタ120のリソースの同期化を確保することができる。
【0029】
このようにして、Kubernetesスケジューリングプラットフォームのスケジューラ110は、CRDとPodのコスケジューリング、及び単一CRDのPodアトミックスケジューリングをサポートすることができる。理解できるものとして、CRDとPodのコスケジューリングの場合、スケジューラ110は構成を読み取り、どのCRDがスケジューリングに関与しているかを把握し、Pod及びスケジューリングを必要とするCRDを同一のスケジューリングキューに入れ、スケジューラ110がスケジューリングする対象がCRDである場合、拡張されたSplitインタフェースを介してCRD対象を分解したPod対象リストを取得し、各Podを順次スケジューリングすることにより、CRDとPodのコスケジューリングが実現される。
【0030】
CRDのPodアトミックスケジューリングとしては、CRDによって分解されたPod集合をスケジューリングする際に、他のPodをスケジューリングすることができず、CRDを分解したPod集合が全てスケジューリングに成功した場合成功し、そうでない場合失敗するものとして理解してもよい。このようにして、残りのリソースの不足によってスケジューリングができず、CRD全体のスケジューリングが失敗することを回避することができる。
【0031】
なお、CRDスケジューリングにはバックオフ(BackOff)機構があり、このBackOff機構は、CRDのPodのうちいずれかのPodのスケジューリングが失敗すると、CRD全体のスケジューリングが失敗したと見なされる。CRDのスケジューリングに失敗した場合、そのCRDですでにスケジューリングに成功したPodについては、削除されてリソースを解放する必要がある。また、CRDを分解したPodはリエントラント保護機能を有しており、スケジューラ110のスケジューリングキューにはCRD対象とPod対象が記憶されており、CRD対象に属するPod集合をスケジューリングキューに再挿入する必要はない。
【0032】
なお、スケジューラ110とスプリッタ120はリソース同期機構を有し、スプリッタ120がCRDを合理的かつ最適に分解するためには、クラスタのリソース状態を明確にし、ノード及びPod情報をリスニングし、ローカルに割当可能リソース情報をキャッシュする必要がある。CRDのPod集合がスケジューラ110によるスケジューリングに成功した後、スケジューラ110は、Podのバインディング(Bind)要求をスプリッタ120に送信し、スプリッタ120は、バインディング要求を受信すると、スプリッタ120のローカルにキャッシュされたノード割当可能リソース情報を更新してから、最終的なバインディング要求をApi-Server140に送信し、これによって、リソースの同期化を達成する。
【0033】
本願の実施例に記載されたシステムアーキテクチャプラットフォーム100及び適用シナリオは、本願の実施例の技術案をより明確に説明するためのものであり、本願の実施例による技術案を限定するものではなく、当業者に周知のように、システムアーキテクチャプラットフォーム100の進化と新しい適用シナリオの出現に伴い、本願の実施例による技術案は類似の技術的課題に対しても同様に適用される。
【0034】
当業者が理解できるように、
図1に示すシステムアーキテクチャプラットフォーム100は本願の実施例を限定するものではなく、図示よりも多い又は少ない部材を含んだり、いくつかの部材を組み合わせたり、異なる部材の配置を取ったりしてもよい。
【0035】
上記したシステムアーキテクチャプラットフォーム100に基づいて、以下、本願のリソーススケジューリング方法の様々な実施例を示す。
【0036】
図2に示すように、
図2は、本願の一実施例によるリソーススケジューリング方法のフローチャートであり、このリソーススケジューリング方法は、ステップS100、ステップS200、及びステップS300を含むが、これらに限定されない。
【0037】
ステップS100:スケジューリングキューからスケジューリング対象を取得する。
【0038】
一実施例では、リソーススケジューリングとは、様々なリソースを合理的かつ効率的に利用するものとして理解してもよい。理解できるものとして、スケジューリングする対象はリソース対象であり、スケジューリング可能な対象はキューの形態で並べられ、スケジューリングする際にはキューの順序や優先度に応じて呼び出すことによりスケジューリング対象が得られ、これにより、スケジューリング対象の迅速な取得が容易になり、リソースの合理的なスケジューリングにも役立つ。
【0039】
Kubernetesスケジューリングプラットフォームを例に挙げて説明し、Kubernetesスケジューリングプラットフォームでは、Pod、Deployment、Service、Volumeなど、多くのデフォルトのリソースタイプが用意されており、これらのリソースは、日常的なシステムのデプロイメントや管理のほとんどのニーズに対応することができる。しかし、これらの既存のリソースタイプでは満たされない特殊なニーズがある場合は、CRDによってこれらのニーズを満たすことができ、このように、Kubernetesの拡張能力が効果的に向上する。
【0040】
なお、KubernetesスケジューリングプラットフォームはPodのスケジューリングをサポートしており、すなわち、Podを直接スケジューリングすることができる。理解できるものとして、CRDとPod対象の両方を同一のスケジューリングキューに挿入することも、CRDを個別にスケジューリングすることも可能である。具体的には、CRDとPodのコスケジューリングの場合、Kubernetesスケジューリングプラットフォームのスケジューラは構成を読み取り、スケジューリングに関与可能なCRD対象とPod対象を取得し、Pod及びスケジューリングを必要とするCRDを同一のスケジューリングキューに入れ、スケジューリングキューからスケジューリング対象を順次取得してスケジューリングを行う。
【0041】
ステップS200:スケジューリング対象がカスタムリソースである場合、現在のリソース状態に応じてカスタムリソースを分解して、スケジューリングユニットリストを得る。
【0042】
ここで、スケジューリングユニットリストはカスタムリソースを構成するように構成される第1スケジューリングユニットを含み、このカスタムリソースはCRDであり、この第1スケジューリングユニットはCRD対象であり、理解できるものとして、CRD対象とネイティブPod対象は同一のスケジューリングキューに同時に挿入されることができ、すなわち、CRD対象とPod対象のコスケジューリングが可能であり、CRDとPodのコスケジューリングの場合、スケジューラはスケジューリングキューからスケジューリング対象を順次取得する。スケジューラはスケジューリングする際に、まずスケジューリング対象のタイプを判断し、スケジューリング対象がCRDである場合、現在のリソース状態に応じてCRDを分解して、CRDを構成するPodのリストであるスケジューリングユニットリストを得て、すなわちCRDはPodの集合に分割され、このようにして、KubernetesスケジューリングプラットフォームはPodリストに従ってPodを直接スケジューリングできる。
【0043】
理解できるものとして、現在のスケジューリングプラットフォームの残りのリソース又は利用可能なリソースとして理解され得る現在のリソース状態に応じてCRDを分解する必要がある。CRDを分解するためのリソース要求を満たす場合、スプリッタによりCRD対象を合理的に分割し、最適なリソース割り当てでCRDをスケジューリングすることを可能にし、運転効率をより高める。
【0044】
なお、スケジューリング対象がネイティブPodである場合、分解することなくPodを直接スケジューリングすることができる。理解できるものとして、Podはkubernetesスケジューリングプラットフォームの基礎ユニットであり、ユーザが作成又はデプロイする最小コンポーネントであり、コンテナ化されたアプリケーションを運転するリソース対象でもある。Kubernetesクラスタ内の他のリソース対象は、Podというリソース対象をサポートして、kubernetesがアプリケーションサービスを管理する目的を実現するものである。このように、KubernetesスケジューリングプラットフォームはPodとCRDのコスケジューリングをサポートしながら、単一CRDのPodのアトミックスケジューリングを実現し、CRDが合理的にスケジューリングされ、様々な業務シナリオに適合できることも確保される。
【0045】
ステップS300:スケジューリングユニットリスト中のスケジューリングユニットを順次スケジューリングする。
【0046】
一実施例では、分解が完了すると、スケジューリングユニットリストが生成され、Kubernetesスケジューリングプラットフォームにおいては、このスケジューリングユニットはPodであり、スケジューリングユニットリストはPod集合リストであり、スケジューラは、Pod集合リストに従って、このPod集合リスト中の全てのPodを順次スケジューリングすることにより、単一のCRDのスケジューリングを行う。理解できるものとして、全てのPodをリストの形態で順次にスケジューリングすることは、他のPodの挿入によってリスト中の残りのPodが残りのリソース不足のためにスケジューリングされず、CRD全体のスケジューリングが失敗することを回避することができ、また、あるCRDのPodの一部をスケジューリングするときに、別のCRDのPodの一部を挿入してしまうと、この2つのCRDの残りのPodが残りのリソースの不足のためにスケジューリングされず、すでに占有しているリソースが解放されず、2つのCRDがリソースのデッドロック状態になってしまうという問題も回避できる。
【0047】
一実施例では、現在のリソース状態に応じてカスタムリソースを分解して、スケジューリングユニットリストを得るステップS200は、ステップS210を含んでもよいが、これに限定されない。
【0048】
ステップS210:クラスタノードの残りのリソースがカスタムリソースを分解する要件を満たす場合、カスタムリソースを分解してスケジューリングユニットリストを得る。
【0049】
一実施例では、Kubernetesスケジューリングプラットフォームにおいては、スプリッタは、主にスケジューラの分解要求に応答して、現在のクラスタノードのリソース占有状況に応じてCRDを合理的なPodに分解し、これらのPodを含むスケジューリングユニットリストを作成し、スケジューリングのためにスケジューリングユニットリストをスケジューラに返すことを担当する。スプリッタはクラスタノードのリソース状態を把握することができ、例えばクラスタノードのバインディング状態をリスニングすることによってリソース状態を取得し、そのリソース状態に応じてCRDを合理的に分解し、最適なCRD分解要件を満たすことができる。
【0050】
これにより、スプリッタはリソース状態を十分に考慮した上でCRDを効率的かつ合理的に分解し、またスケジューラはCRDを理解する必要がなく、Podのスケジューリングに集中し、これにより、CRDの分割とスケジューリングが実現される。
【0051】
なお、CRDを分解したPodはリエントラント保護機能を有しており、スケジューラのスケジューリングキューにはCRD対象とPod対象が記憶されており、CRD対象に属するPod集合をスケジューリングキューに挿入する必要はない。
【0052】
図3に示すように、一実施例では、リソーススケジューリング方法は、ステップS101とステップS102をさらに含むが、これらに限定されない。
【0053】
ステップS101:スケジューリング要求に従ってスケジューリング対象を作成する。
【0054】
ステップS102:スケジューリング対象のバインディング情報をリスニングし、新しいスケジューリング対象を同一のキューに入れてスケジューリングキューを構成する。
【0055】
理解できるものとして、ユーザは、CRDを深層学習する必要があるなど、適用シナリオの実際のニーズに合わせてCRD対象とPod対象を作成する。ユーザはApi-Serverを介してCRD対象とPod対象を作成し、スケジューラはApi-Serverを介してCRD対象とPod対象のバインディング情報をリスニングし、スケジューリング可能なCRDとPodを同一のキューに入れる。CRD及びPodをキューに入れてスケジューリングキューを構成し、その後、スケジューリングキューからスケジューリング対象を取得し、追加されたスケジューリング対象は、CRDとPod、又は全てCRD若しくは全てPodであってもよい。
【0056】
図4に示すように、一実施例では、リソーススケジューリング方法は、ステップS400をさらに含むが、これらに限定されない。
【0057】
ステップS400:全てのスケジューリング対象のスケジューリングが完了した後、スケジューリングユニットを対応するノードにバインディングする。
【0058】
一実施例では、Kubernetesスケジューリングプラットフォームは、CRD対象をスケジューリングする際に、CRDを合理的に分解し、スケジューリングのためにスケジューリングユニットリストをスケジューラに返し、スケジューラは、Podのスケジューリングに集中するだけで、全てのスケジューリング対象のスケジューリングを行うことができる。スケジューラは、全てのスケジューリング対象をスケジューリングした後、ノードバインディング要求をスプリッタに送信し、スプリッタはスケジューラのノードバインディング要求に応答してPodとノードとのバインディング操作を行う。具体的には、スプリッタはApi-Serverを介してPodとノードとのバインディングを行う。
【0059】
一実施例では、リソーススケジューリング方法は、ステップS500をさらに含むが、これに限定されない。
【0060】
ステップS500:スケジューリングユニットのいずれかがスケジューリングに失敗した場合、既にスケジューリングされているスケジューリングユニットを削除し、リソースを解放する。
【0061】
一実施例では、CRDのPod集合のいずれかのPodのスケジューリングが失敗した場合、CRD全体スケジューリングが失敗したとみなされる。CRDのスケジューリングに失敗すると、そのCRDですでにスケジューリングに成功したPodは削除されてリソースを解放する必要があり、これによって、リソースの占有による実行効率の低下を避けることができる。
【0062】
図5に示すように、一実施例では、全てのスケジューリング対象のスケジューリングが完了した後、スケジューリングユニットを対応するノードにバインディングするステップS400は、ステップS410とステップS420を含んでもよいが、これらに限定されない。
【0063】
ステップS410:ノードバインディング要求を開始させ、ノードの割当可能リソース情報を更新し、割当可能リソース情報に基づいて最適なノードを決定し、最適なノードに基づいてスケジューリングユニットにホストをそれぞれ割り当てる。
【0064】
ステップS420:スケジューリングユニットを対応するホストにバインディングする。
【0065】
一実施例では、全てのPodのスケジューリングが完了した後、スプリッタはApi-Serverを介してPodとノードとのバインディングを行う。ノードバインディングの流れは、ノードに対してフィルタリング、優先順位付け、スコア付けなどの最適化アルゴリズムを行うことにより適切なノードを選択し、最適なノードを選択してPodにホストを割り当て、Api-ServerにPodのバインディング要求を送信することにより、Podを対応するホストにバインディングし、これにより、バインディング操作を完了する。
【0066】
なお、スケジューリング対象がPodである場合、Kubernetesスケジューリングシステムは従来のスケジューリングの流れに従って処理を行うが、Podのバインディング操作はスプリッタによって行われる。スケジューリング対象がCRDである場合、スプリッタは、現在のクラスタのリソース状態に応じてPodを分解し、CRDを1つ又は複数のPodに分解し、スプリッタは、CRDを分解するPodの数、及びあるPodが使用するリソース(CPU、メモリ、GPU)を決定するだけでよく、スプリッタがCRDを分解した後、スケジューラはこれらのPodをスケジューリングし、スケジューラはノードに対してフィルタリング、優先順位付け、スコア付けなどの最適化アルゴリズムを行い、Podに適したノードを選択し、これにより、PodリストのPodとノードをスプリッタによってバインディングし、スケジューラとスプリッタのリソースの同期化を確保する。
【0067】
また、スケジューラとスプリッタはリソース同期機構を有し、スプリッタがCRDを合理的で最適に分解するためには、クラスタのリソース状態を明確にし、ノード及びPod情報をリスニングし、ローカルに割当可能リソース情報をキャッシュする必要がある。CRDのPod集合がスケジューラによって正常にスケジューリングされた後、スケジューラはPodのバインディング要求をスプリッタに送信し、スプリッタはバインディング要求を受信すると、スプリッタのローカルにキャッシュされたノード割当可能リソース情報を更新してから、最終的なバインディング要求をApi-Serverに送信し、これによって、リソースの同期化を達成する。
【0068】
図6に示すように、一実施例では、Kubernetesスケジューリングプラットフォームを例として、リソーススケジューリング方法はステップS610~ステップS650を含むが、これらに限定されない。
【0069】
ステップS610:Api-Serverを介してCRD、Pod対象を作成する。
ステップS620:Api-Serverを介してCRD、Pod対象をリスニングし、新しいCRD又はPodを同一のスケジューリングキューに入れる。
ステップS630:スケジューリングキューからスケジューリング対象を取得する。
スケジューリング対象がPodである場合、Podスケジューリングの流れに従って処理を行い、
スケジューリング対象がCRDである場合、CRD分解要求をスプリッタに送信し、スプリッタに現在のリソース状態に応じてCRDを分解させ、分解されたPodをApi-Serverを介して作成する。
ステップS640:スプリッタから返されたPodリストに従って、Podリストに従ってPodを順次スケジューリングする。
ステップS650:全てのPodスケジューリングが完了した後、スプリッタにバインディング要求を開始させ、Api-Serverを介してPodとノードとのバインディングを行う。
【0070】
上記した様々な実施例におけるリソーススケジューリング方法の特定のステップの流れをより明確に説明するために、以下に5つの実施例を用いて説明する。
【0071】
実施例1
本実施例はスケジューラがCRDとPodのコスケジューリングに成功した例であり、KubernetesスケジューリングプラットフォームにおいてCRDとPodのコスケジューリングを行う過程を示し、深層学習ジョブをCRDと定義し、深層学習ジョブの並列実行を完了したWorkersをPodによってキャリアし、これによって、深層学習ジョブとPodのコスケジューリングを実現でき、かつ成功に運転できる。
インスタンス環境:2つのノードを含み、ノードリソースが十分であるUbuntu16.04システムを搭載したKubernetesクラスタであって、クラスタには修正されたスケジューラがデプロイされており、カスタマイズされた深層学習ジョブのコントローラとスプリッタがデプロイされている。
図7に示すように、具体的な操作ステップは以下のとおりである。
ステップS710:深層学習ジョブファイルを定義し、このCRD対象を作成する。
ステップS720:個々のPodのファイルを定義し、そのPod対象を作成する。
ステップS730:深層学習ジョブの作成に成功した後、深層学習ジョブに対応するCRDは運転状態となる。
ステップS740:深層学習ジョブに関連するPodの作成に成功した後、深層学習ジョブで分解されたPodは全て運転状態となる。
これにより、ステップS720で作成された個々のPodの状態は運転状態であり、ここでは、CRDの状態と分解されたPodの状態とが一致する。
【0072】
実施例2
本実施例では、スケジューラは2種類のCRD対象のスケジューリングに成功し、実施例はKubernetesスケジューリングプラットフォーム上で異なるCRDをコスケジューリングする過程を示し、深層学習ジョブをCRDと定義し、機械学習ジョブをCRDと定義し、2種類のCRD対象が実行するWorkersを全てPodによってキャリアし、深層学習ジョブと機械学習ジョブのコスケジューリングを実現でき、しかも成功に運転できる。
インスタンス環境:2つのノードを含み、ノードリソースが十分であるUbuntu16.04システムを搭載したKubernetesクラスタであって、クラスタには修正されたスケジューラがデプロイされており、カスタマイズされた深層学習ジョブのコントローラとスプリッタがデプロイされており、カスタマイズされた機械学習ジョブのコントローラとスプリッタがデプロイされている。
図8に示すように、具体的な操作ステップは以下のとおりである。
ステップS810:深層学習ジョブファイルを定義し、このCRD対象を作成する。
ステップS820:機械学習ジョブファイルを定義し、このCRD対象を作成する。
ステップS830:深層学習ジョブの作成に成功した後、深層学習ジョブに対応するCRDは運転状態となる。
ステップS840:深層学習ジョブに関連するPodの作成に成功した後、深層学習ジョブで分解されたPodは全て運転状態となる。
ステップS850:機械学習ジョブの作成に成功した後、深層学習ジョブに対応するCRDは運転状態となる。
ステップS860:機械学習ジョブに関するPodの作成に成功した後、深層学習ジョブで分解されたPodは全て運転状態となる。
ここで、CRDの状態は、分解されたPodの状態と一致していなければならない。
【0073】
実施例3
本実施例では、スケジューラはCRDを最小限のノードで運転するようにスケジューリングし、実施例は、Kubernetesスケジューリングプラットフォーム上でCRD対象をスケジューリングする場合に、リソース状態に応じてCRDを合理的に分解することができることを示し、深層学習ジョブをCRDと定義し、深層学習ジョブの並列実行を完了したWorkersをPodによってキャリアし、スケジューラはCRDをスケジューリングする際に、現在のリソース状態に応じてCRDを自動的に分解し、CRDのPodを極小のノード上で運転するようにスケジューリングし、これによって、ネットワークのオーバーヘッドを減らし、分解の合理性を確保する。
インスタンス環境:3つのノードを含み、ノードのCPU、メモリリソースが十分で、ノード1には8つのアイドルGPUがあり、ノード2、3のいずれにも4つのアイドルGPUがあるUbuntu16.04システムを搭載したKubernetesクラスタであって、クラスタには修正されたスケジューラがデプロイされており、カスタマイズされた深層学習ジョブのコントローラとスプリッタがデプロイされている。
図9に示すように、具体的な操作ステップは以下のとおりである。
ステップS910:8つのGPUリソースを申請する深層学習ジョブファイルを定義し、このCRD対象を作成する。
ステップS920:深層学習ジョブの作成に成功した後、深層学習ジョブに対応するCRDは運転状態となる。
ステップS930:深層学習ジョブに関連するPodの作成に成功した後、深層学習ジョブで分解されたPodは全て運転状態となる。
ステップS940:CRD分解後のPodの数が1であり、そのPodがノード1上で運転する。
【0074】
実施例4
本実施例では、スケジューラはリソース申請粒状度が大きいCRDのスケジューリングに成功し、実施例は、Kubernetesスケジューリングプラットフォーム上でCRD対象をスケジューリングする場合に、リソース状態に応じてCRDを合理的に分解することを示し、深層学習ジョブをCRDと定義し、深層学習ジョブの並列実行を完了したWorkersをPodによってキャリアし、スケジューラはCRDをスケジューリングする際に、現在のリソース状態に応じてCRDを自動的に分解することができ、もしこのジョブのリソース申請粒状度が大きい場合、単ノードリソースはそのジョブのリソース申請を満足できないが、クラスタの総リソースが満足できる場合にはこのCRDを成功に分解し、スケジューリングして運転することができ、これによって、このジョブがリソーススターベーション状態にならないことを確保する。
インスタンス環境:4つのノードを含み、ノードのCPU、メモリリソースが十分で、ノード1、3のいずれにも4つのアイドルGPUがあり、ノード2、4のいずれにも2つのアイドルGPUがあるUbuntu16.04システムを搭載したKubernetesクラスタであって、クラスタには修正されたスケジューラはデプロイされており、カスタマイズされた深層学習ジョブのコントローラとスプリッタはデプロイされている。
図10に示すように、具体的な操作ステップは以下のとおりである。
ステップS1010:8つのGPUリソースを申請する深層学習ジョブファイルを定義し、このCRD対象を作成する。
ステップS1020:深層学習ジョブの作成に成功した後、深層学習ジョブに対応するCRDは運転状態となる。
ステップS1030:深層学習ジョブに関連するPodの作成に成功した後、深層学習ジョブで分解されたPodは全て運転状態となる。
ステップS1040:CRD分解後のPodの数が2であり、2つのPodがノード1とノード3上で運転する。
【0075】
実施例5
本実施例では、スケジューラはCRD分解後のPodをアトミックにスケジューリングし、実施例は、Kubernetesスケジューリングプラットフォーム上でスケジューラが単一CRD対象に対するPodのスケジューリングを実現できることを示し、深層学習ジョブをCRDと定義し、機械学習ジョブをCRDと定義し、2種類のCRD対象が実行するWorkersを全てPodによってキャリアし、CRDのPodのアトミックスケジューリングを実現でき、CRDのスケジューリングが不合理であることや2つのCRDがリソースのデッドロックに入るという問題を回避できる。
インスタンス環境:3つのノードを含み、ノードのCPU、メモリリソースが十分で、3つのノードの全てには4つのアイドルGPUがあるUbuntu16.04システムを搭載したKubernetesクラスタであって、クラスタには修正されたスケジューラはデプロイされており、カスタマイズされた深層学習ジョブのコントローラとスプリッタはデプロイされており、カスタマイズされた機械学習ジョブのコントローラとスプリッタはデプロイされている。
図11に示すように、具体的な操作ステップは以下のとおりである。
ステップS1110:8つのGPUリソースを申請する深層学習ジョブファイルを定義し、このCRD対象を作成する。
ステップS1120:8つのGPUリソースを申請する機械学習ジョブファイルを定義し、このCRD対象を作成する。
ステップS1130:深層学習ジョブの作成に成功した後、深層学習ジョブに対応するCRD状態である。
ステップS1140:機械学習ジョブの作成に成功した後、深層学習ジョブに対応するCRD状態である。
ステップS1150:深層学習ジョブと機械学習ジョブの一方のみが運転状態にあり、運転状態にあるジョブの関連Podは全て運転状態となる。
【0076】
また、本願の1つの実施例は、メモリと、プロセッサと、メモリ上に記憶され、プロセッサ上で運転可能なコンピュータプログラムと、を含む機器も提供する。プロセッサ及びメモリはバス又は他の手段を介して接続することができる。
【0077】
メモリは、非一時的なコンピュータ読み取り可能な記憶媒体として、非一時的なソフトウェアプログラムと、非一時的なコンピュータ実行可能プログラムとを記憶するために使用することができる。さらに、メモリは、高速ランダムアクセスメモリを含むことができ、また、少なくとも1つの磁気ディスク記憶デバイス、フラッシュ記憶デバイス、又は他の非一時的なソリッドステート記憶デバイスのような非一時的なメモリを含むことができる。いくつかの実施形態では、メモリは、ネットワークを介してプロセッサに接続されることができるプロセッサに対してリモートに配置されたメモリを含んでもよい。上記のネットワークの例には、インターネット、企業イントラネット、ローカルエリアネットワーク、移動通信ネットワーク、及びこれらの組み合わせが含まれるが、これらに限定されない。
【0078】
なお、本実施例の端末は、
図1に示す実施例のシステムアーキテクチャプラットフォーム100を含んでもよく、本実施例の端末と
図1に示す実施例のシステムアーキテクチャプラットフォーム100とは同一の発明思想に属するため、これらの実施例は同一の実現原理及び技術的効果を有するが、ここでは詳しく説明しない。
【0079】
上記した実施例のリソーススケジューリング方法を実現するために必要な非一時的なソフトウェアプログラム及び命令はメモリに記憶され、プロセッサによって実行されると、上記した実施例におけるリソーススケジューリング方法を実行し、例えば、上記した
図2の方法ステップS100~S300、
図3の方法ステップS101~S102、
図4の方法ステップS400、
図5の方法ステップS410~S420、
図6の方法ステップS610~S650、
図7の方法ステップS710~S740、
図8の方法ステップS810~S860、
図9の方法ステップS910~S940、
図10の方法ステップS1010~S1040、
図11の方法ステップS1110~S1150を実行する。
【0080】
上記で説明された装置の実施例は単に概略的なものであり、分離された構成要素として説明されたユニットは、物理的に分離されていてもよいし、そうでなくてもよく、すなわち、1つの場所に配置されていてもよいし、複数のネットワークユニットに分散されていてもよい。これらのモジュールの一部又は全部は、実際の必要に応じて、本実施例の目的を達成するために選択されてもよい。
【0081】
さらに、本願の一実施例は、1つのプロセッサ又はコントローラによって実行される、例えば、上記した端末の実施例の1つのプロセッサによって実行されると、上記した実施例におけるリソーススケジューリング方法、例えば、上記した
図2の方法ステップS100~S300、
図3の方法ステップS101~S102、
図4の方法ステップS400、
図5の方法ステップS410~S420、
図6の方法ステップS610~S650、
図7の方法ステップS710~S740、
図8の方法ステップS810~S860、
図9の方法ステップS910~S940、
図10の方法ステップS1010~S1040、
図11の方法ステップS1110~S1150を上記したプロセッサに実行させるコンピュータ実行可能命令を記憶したコンピュータ読み取り可能な記憶媒体も提供する。
【0082】
本願の実施例は、リソースをスケジューリングする際に、スケジューリングキューからスケジューリング対象を取得し、スケジューリング対象がカスタムリソースである場合、現在のリソース状態に応じてカスタムリソースを分解して、カスタムリソースを構成するように構成される第1スケジューリングユニットを含むスケジューリングユニットリストを得て、次に、スケジューリングユニットリストに従って各第1スケジューリングユニットを順次スケジューリングするステップを含み、Kubernetesスケジューリングプラットフォームに適用でき、スケジューリングする際に、スケジューリング対象がCRDである場合、現在のリソース状態に応じてCRDを分解して、Pod集合を含むスケジューリングユニットリストを得て、このように、Kubernetesスケジューリングプラットフォームがスケジューリングユニットリストに従ってPodをアトミックにスケジューリングすることができ、全てのPodがキューに従って順次スケジューリングされ、他のPodが挿入されることを回避し、このようにCRDが合理的にスケジューリングされ、スケジューリング効率が高く、Kubernetesスケジューリングプラットフォームが様々な業務シナリオに適合することを確保する。
【0083】
当業者であれば、上記で開示された方法におけるステップの全部又は一部、システムは、ソフトウェア、ファームウェア、ハードウェア、及びそれらの適切な組み合わせとして実装されてもよいことを理解する。物理的構成要素の一部又は全ては、中央処理機器、デジタル信号プロセッサ、マイクロプロセッサなどのプロセッサによって実行されるソフトウェアとして、又はハードウェアとして、又は特定用途向け集積回路などの集積回路として実装されてもよい。このようなソフトウェアは、コンピュータ記憶媒体(又は非一時的媒体)及び通信媒体(又は一時的媒体)を含むことができるコンピュータ読み取り可能な媒体上に配置されてもよい。当業者に周知のように、コンピュータ記憶媒体という用語は、情報(例えばコンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータ)を記憶するための任意の方法又は技術において実施される、揮発性及び不揮発性の、取り外し可能な、及び取り外し不可能な媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)又は他の光ディスク記憶機器、磁気カートリッジ、磁気テープ、磁気ディスク記憶機器又は他の磁気記憶機器、又は所望の情報を記憶するために使用することができ、コンピュータによってアクセスすることができる他の任意の媒体を含むが、これらに限定されない。さらに、通信媒体は、通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は搬送波や他の送信機構のような変調データ信号中の他のデータを含み、任意の情報配信媒体を含み得ることが当業者には周知である。
【0084】
以上は本願の好ましい実施例を具体的に説明したが、本願は上記の実施形態に限定されるものではなく、当業者は本願の精神に反しないことなく様々な均等な変形や置換を行うことができ、これらの均等な変形や置換はいずれも本願の請求項によって定められる範囲内に含まれるものとする。