-
HINTERGRUND
-
Cloud Computing hat die Art und Weise, wie die Infrastruktur der Informationstechnologie („IT“) genutzt wird, erheblich beeinflusst. Mit Hilfe der Virtualisierungstechnologie ist es möglich, Arbeitslasten über eine Vielzahl virtueller Infrastrukturen bereitzustellen, die von öffentlichen Cloud-Umgebungen bis hin zu Rechenzentren vor Ort reichen, die auf lokaler Hardware basieren. Es werden ständig neue Arbeitslasten für Anwendungen gegeneine solche virtuelle Infrastruktur erstellt, bereitgestellt und verbraucht.
-
Figurenliste
-
- ist ein Flussdiagramm für eine Methode nach einem Beispiel.
- ist eine Illustration einer beispielhaften „Standard“-Einstellung des Netzstandortes.
- ist eine Illustration einer beispielhaften „lokalen“ Netzwerklokalitätseinstellung .
- ist eine Illustration eines Beispiels für die Einstellung „benachbarter“ Netzstandorte.
- ist eine Illustration eines Beispiels für die „direkte“ Einstellung einer Netzwerklokalität.
- ist ein Schema einer Rechenanlage nach einem Beispiel.
- ist ein Schema eines maschinenlesbaren Speichermediums nach einem Beispiel.
-
DETAILLIERTE BESCHREIBUNG
-
Die folgende Diskussion ist auf verschiedene Beispiele der Offenlegung gerichtet. Obwohl eines oder mehrere dieser Beispiele bevorzugt werden können, sollten die hier offengelegten Beispiele nicht so interpretiert oder anderweitig verwendet werden, dass sie den Umfang der Offenlegung, einschließlich der Ansprüche, einschränken. Darüber hinaus hat die folgende Beschreibung eine weite Anwendung, und die Erörterung eines Beispiels soll nur beschreibend für dieses Beispiel sein und nicht den Eindruck erwecken, dass der Umfang der Offenbarung, einschließlich der Ansprüche, auf dieses Beispiel beschränkt ist. Darüber hinaus bedeutet der Begriff „einschliesslich“, wie er hier verwendet wird, einschliesslich, aber nicht beschränkt auf, der Begriff „einschliesslich“ bedeutet einschliesslich, aber nicht beschränkt auf. Der Begriff „basierend auf“ bedeutet, zumindest teilweise basierend auf.
-
Virtuelle Maschinen („VMs“) sind ein beliebter Mechanismus für die Bereitstellung von Cloud-Computing-Anwendungsinfrastrukturen. In einigen Implementierungen können sich mehrere Instanzen einer VM dieselbe physische Hardware teilen, und jede Anwendungs-VM kann ihren eigenen Satz von Betriebssystem, Netzwerk und Speicher haben. Unter bestimmten Umständen kann es vorzuziehen sein, einen Anwendungs-Workload mit virtualisierten Containern statt mit VMs bereitzustellen. Wie hier verwendet, kann sich der Begriff „Container“ beispielsweise auf eine Virtualisierung auf Betriebssystemebene beziehen, bei der ein Kernel oder ein anderer Mechanismus mehrere isolierte User-Space-Instanzen ermöglicht. Solche Instanzen können z.B. als Container, Partitionen, Virtualisierungsmaschinen („VEs“), Gefängnisse oder ein anderer geeigneter Begriff bezeichnet werden. Solche Instanzen können z.B. so gestaltet werden, dass sie aus der Sicht der darin laufenden Programme wie echte Computer aussehen. Im Vergleich zu einem herkömmlichen Computerprogramm, bei dem alle Ressourcen (z.B. angeschlossene Geräte, Dateien und Ordner, Netzwerkfreigaben, Leistung der Zentraleinheit („CPU“), quantifizierbare Hardware-Fähigkeiten) des Computers, auf dem das Programm läuft, sichtbar sind, können Programme, die innerhalb eines Containers laufen, so gestaltet werden, dass die Sichtbarkeit auf den Inhalt des Containers und bestimmte dem Container zugewiesene Geräte beschränkt ist. Solche Container können in einigen Implementierungen zusätzliche Isolationsmechanismen enthalten, die Ressourcenverwaltungsfunktionen bereitstellen, um die Auswirkungen der Aktivitäten eines Containers auf andere Container zu begrenzen.
-
Containerisierte Infrastruktur ist heute einer der am schnellsten wachsenden Märkte im IT-Bereich. Kubernetes ist zum De-facto-Standard für die Verwaltung von Container-Clustern und die Orchestrierung der Arbeitslast geworden, und doch sind ihr Netzwerktopologie und -nutzung völlig unbekannt. Das heißt, im Gegensatz zu CPU/Speicher und Storage fehlt das Netzwerk - die dritte Säule der IT-Infrastruktur von DevOps - völlig bei der Planung und Platzierung von Workloads. Es ist daher möglich, ja wahrscheinlich, dass Anwendungskapseln nach dem Zufallsprinzip auf über den gesamten Cluster verteilte Knoten (z.B. Server) verteilt werden, möglicherweise mit höherer als notwendiger oder gewünschter Netzwerk-Latenzzeit zwischen mehreren Containern, die einen bestimmten Mikrodienst oder eine Anwendung implementieren. Dies kann z.B. die Gesamteffizienz von Netzwerken und Rechenzentren senken und die Industrie zu überdimensionierten Netzwerkdesigns treiben. Bestehende Ansätze zur Knotennähe sind mit Affinitätsbeschränkungen verfügbar. Diese beschränken jedoch die Zeitplanung auf genau denselben Knoten und nicht auf einen Knoten, der direkt mit denselben Netzwerk-Switch(s) wie vorhandene Anwendungs-Pods verbunden ist. Weitere Ansätze verwenden manuelle Knoten- und Pod-Beschriftungen, um den Standort für die Proximity-Planung zu identifizieren. Keiner dieser Ansätze ist automatisiert oder automatisierbar, und sie können auch keine Kriterien für die Netzwerkauslastung enthalten.
-
Die Platzierung der Arbeitslast ist ein kritisches Problem bei der Verwaltung der Rechenzentrumseffizienz. Bestimmte Implementierungen der vorliegenden Offenlegung sind auf eine standortbasierte Virtualisierungs-Workload-Platzierung ausgerichtet. In einigen Implementierungen kann eine Methode zum Beispiel Folgendes umfassen: (a) Empfangen, mit einem Computer-Virtualisierungs-Scheduler, von Netzwerk-Lokalitätsinformationen für Virtualisierungsausrüstung; (b) Empfangen, mit dem Computer-Virtualisierungs-Scheduler, von Netzwerkauslastungsinformationen für Virtualisierungsausrüstung; und (c) Bestimmen, mit dem Computer-Virtualisierungs-Scheduler und basierend auf den empfangenen Netzwerk-Lokalitätsinformationen und den empfangenen Netzwerkauslastungsinformationen, der Virtualisierungs-Workload-Platzierung, um die verfügbare Netzwerkbandbreite zu maximieren und die Netzwerklatenz zwischen Virtualisierungsausrüstung zu minimieren. Bestimmte Implementierungen der vorliegenden Offenlegung sind darauf ausgerichtet, Netzwerkbewusstsein und Automatisierung in die Container-Pod-Planung von Kubernetes einzuführen und Implementierungen für OpenShift und natives Kubernetes zu detaillieren. Ein solcher Ansatz kann in einigen Situationen zu einer verbesserten Ressourceneffizienz von OpenShift mit Kubernetes-Scheduler-Erweiterungen für die Netzwerklokalisierung auf Rechenknoten und zusammensetzbaren Strukturen führen.
-
Wie hier verwendet, können sich „zusammensetzbare Struktur“ und verwandte Begriffe beispielsweise auf eine softwaredefinierte Netzwerkstruktur beziehen, die speziell für eine arbeitslastabhängige Leistung und Skalierung entwickelt wurde. Eine solche Struktur kann zum Beispiel Probleme auf der Datenebene, der Steuerungsebene und der Integrationsebene behandeln. Auf der Datenebene können Rack-Konnektivitätsmodule z. B. eine zusammensetzbare Netzwerk-Fabric oder Datenebene ABB.en, die physische Konnektivität, Topologie und Daten-/Paketweiterleitung bietet. In einer solchen Fabric können z. B. Konnektivität und Routing in einem einzigen Baustein zusammengefasst werden, ohne dass dedizierte Spine-Switches verwendet werden müssen. In einer solchen Fabric kann die Steuer- und Verwaltungsebene beispielsweise die in der Datenebene verwendeten eingebetteten Protokolle ergänzen und einen einzigen Verwaltungspunkt für das Netzwerk bereitstellen, während sie gleichzeitig APIs zur direkten Manipulation des Netzwerkzustands und von Objekten aus externen Systemen bereitstellt.
-
Bestimmte Implementierungen der vorliegenden Offenlegung sehen vor, dass ein Anwendungs- oder Arbeitsbelastungs-Orchestrierungssystem in der Lage ist, das Netzwerk nach Eingaben zur Arbeitsbelastungsplatzierung abzufragen.
-
Bestimmte Implementierungen der vorliegenden Offenlegung können die Netzwerknähe bei der Planung containerisierter Anwendungen nutzen, um Latenzzeiten zu reduzieren und die Gesamteffizienz des Netzwerks zu erhöhen. Bestimmte Implementierungen der vorliegenden Offenlegung ermöglichen es dem Orchestrierungssystem, das Netzwerk abzufragen und eine Reihe von Ressourcen zu erhalten, die bestimmte leistungsbezogene Anforderungen erfüllen. Anhand dieser Informationen kann das Orchestrierungssystem beispielsweise die Workload-Platzierung so abstimmen, dass die Anforderungen an Ressourcenverfügbarkeit und Leistung erfüllt werden. Weitere Vorteile der hier vorgestellten Implementierungen werden nach Durchsicht der Beschreibung und der Zahlen deutlich.
-
illustriert ein Flussdiagramm für eine Beispielmethode 100 in Bezug auf die standortbasierte Platzierung von Virtualisierungs-Workloads. In einigen Implementierungen kann die Methode 100 durch die Verwendung von ausführbaren Befehlen, die auf einer Speicherressource (z.B. der Speicherressource des Rechengeräts von ) gespeichert sind, ausführbaren maschinenlesbaren Befehlen, die auf einem Speichermedium (z.B. dem Medium von ) in Form einer elektronischen Schaltung (z.B. auf einer anwendungsspezifischen integrierten Schaltung (ASIC)) und/oder einer anderen geeigneten Form gespeichert sind, implementiert oder anderweitig ausgeführt werden. Obwohl sich die Beschreibung der Methode 100 hierin in erster Linie auf Schritte bezieht, die zur Veranschaulichung auf einem Server ausgeführt werden, wird es geschätzt, dass in einigen Implementierungen die Methode 100 auf einem anderen Computergerät innerhalb einer vernetzten Umgebung oder bei der Datenkommunikation innerhalb einer vernetzten Umgebung ausgeführt werden kann. In einigen Implementierungen kann die Methode 100 auf Netzwerkgeräten parallel ausgeführt werden (z.B. in einer verteilten Rechnerumgebung).
-
Methode 100 umfasst das Empfangen (bei Block 102) mit einem Computer-Virtualisierungs-Scheduler von Netzwerk-Lokalitätsinformationen für Virtualisierungsausrüstung. Der Computer-Virtualisierungs-Scheduler kann z.B. ein containerisierter Anwendungs-Scheduler oder ein Container-Anwendungs-Pod-Scheduler sein, wie hier näher beschrieben wird. Der hier verwendete Begriff „Virtualisierungsausrüstung“ und verwandte Begriffe können sich beispielsweise auf jede für die Virtualisierung geeignete Ausrüstung beziehen, wie z.B. bestimmte Server, Netzwerk-Switches, Speichergeräte usw.
-
Der Begriff „Informationen zum Netzwerkstandort“ und verwandte Begriffe, die hier verwendet werden, können sich zum Beispiel auf Informationen zur physischen Topologie von Virtualisierungsgeräten innerhalb eines einzelnen Racks und/oder mehrerer Racks eines Rechenzentrums beziehen. Weitere Beispiele für solche Informationen zum Netzwerkstandort werden hier gegeben. In einigen Implementierungen werden die Informationen zum Netzwerkstandort von einem Netzwerkadministrator über Etiketten eingegeben. In einigen Implementierungen werden die Informationen zum Netzwerkstandort automatisch auf der Grundlage der konfigurierten Netzwerktopologieinformationen eingegeben.
-
Methode 100 umfasst den Empfang (bei Block 104) mit dem Computer-Virtualisierungs-Scheduler von Netzwerkauslastungsinformationen für Virtualisierungsausrüstung. Der hier verwendete Begriff „Netzwerkauslastungsinformationen“ und verwandte Begriffe können sich beispielsweise auf Latenzstufen, Bandbreitenstufen und/oder Switch-Konnektivitätsinformationen beziehen. Weitere Beispiele für solche Netzwerkauslastungsinformationen werden hier in Bezug auf spezifische Beispielimplementierungen der vorliegenden Offenlegung gegeben.
-
Verfahren 100 umfasst die Bestimmung (bei Block 106), mit dem Computer-Virtualisierungs-Scheduler und auf der Grundlage der empfangenen Netzwerk-Ortsinformationen und der empfangenen Netzwerkauslastungsinformationen, die Platzierung der Virtualisierungsarbeitslast, um die verfügbare Netzwerkbandbreite zu maximieren und die Netzwerklatenz zwischen den Virtualisierungsgeräten zu minimieren. Der Begriff „Workload-Platzierung“ und verwandte Begriffe, die hier verwendet werden, können sich beispielsweise auf die Auswahl einer Vielzahl von Servern zur Ausführung einer virtualisierten Ressource beziehen, wie z.B. eines containerisierten Mikrodienstes oder einer Anwendung.
-
Die Platzierung der Arbeitsbelastung von Block 106 kann zum Beispiel durch eine Reihe von geeigneten Faktoren bestimmt werden, die über die oben ausdrücklich genannten hinausgehen. Bei einigen Implementierungen kann sie zum Beispiel auf Faktoren wie CPU-, Speicher- und Speicherauslastung basieren. In einigen Implementierungen wird die Workload-Platzierung so festgelegt, dass eine Anzahl von Netzwerk-Switch-Transits (oder „Hops“) zwischen den Knoten der Virtualisierungsausrüstung minimiert wird.
-
Die Platzierung der Arbeitsbelastung von Block 106 kann z.B. durch Priorisierung und/oder Rangfolge bestimmter Knoten auf der Grundlage bestimmter oben beschriebener Faktoren oder anderer geeigneter Faktoren bestimmt werden. In einigen Implementierungen ermöglicht die Platzierung der Arbeitslast beispielsweise die Einstufung der Gruppe potenzieller Containerisierungsknoten in eine Rangfolge, um sie im Hinblick auf niedrige Latenz, hohe Bandbreite und/oder direkte Switch-Konnektivität zu optimieren. In einigen Implementierungen umfasst die Bestimmung der Virtualisierungs-Workload-Platzierung die Priorisierung von Knoten auf der Grundlage der Netzwerkumgebung. In einigen Implementierungen wird die Workload-Platzierung durch Priorisierung der Virtualisierungsausrüstung bestimmt, was zu einer Reduzierung der Anzahl der Hops für eine containerisierte Anwendung führt. In einigen Implementierungen wird die Workload-Platzierung durch die Priorisierung von Verbindungen mit hoher Bandbreite zwischen Knoten in einem Rechenzentrum bestimmt. In einigen Implementierungen wird die Workload-Platzierung durch die Einstufung verfügbarer Knoten in einem Rechenzentrum bestimmt, die zum Teil auf Standort und Bandbreite basiert. In einigen Implementierungen wird die Workload-Platzierung durch die Einstufung einer Reihe potenzieller Containerisierungsknoten anhand der Netzwerkauslastung der Knoten bestimmt. In einigen Implementierungen ermöglicht die Workload-Platzierung die Einstufung der potentiellen Containerisierungsknoten in eine Rangfolge, während gleichzeitig eine anwendungsspezifische Anpassung des in eine Rangfolge gebrachten Satzes potentieller Containerisierungsknoten möglich ist.
-
In einigen Implementierungen können verschiedene vorbestimmte Konfigurationen zur Bestimmung der Arbeitsplatzposition bereitgestellt werden. Im Folgenden sind einige Beispielkonfigurationen aufgeführt:
- Vorgabe (siehe 2)
- • Filter - Keine Anpassung
- • Priorisieren - Hinzufügen von Netzwerk-/Fabriknutzung zu bestehenden CPU/Mem/Disk-Kriterien
- Lokal (siehe 3)
- • Filter - Knoten, die weiter als einen Switch-Hop von bestehenden Projekt-/Anwendungsknoten entfernt sind
- • Priorisieren - Netzwerkauslastungskriterien hinzufügen; nach Fabric-Auslastung sortieren
- Nebenstehend (siehe 4)
- • Filter - Knoten, die weiter als ein Rack von bestehenden Projekt-/Anwendungsknoten entfernt sind, entfernen
- • Priorisieren - Netzwerkauslastungskriterien hinzufügen; nach Fabric-Auslastung sortieren
- Direkt (siehe 5)
- • Filter - Knoten entfernen, die sich nicht in einem oder mehreren Rack(s) befinden, die bereits vom Projekt/von der Anwendung verwendet werden
- • Priorisieren - Hinzufügen der Netzwerkauslastung zu bestehenden CPU/Mem/Disk-Kriterien
-
Es wird geschätzt, dass eine oder mehrere Operationen der Methode 100 periodisch durchgeführt werden können. Beispielsweise können in einigen Implementierungen einer oder mehrere der Blöcke 102, 104 und 106 (oder andere hier beschriebene Operationen) periodisch ausgeführt werden. Die verschiedenen Periodenzeiten für die Blöcke 102, 104 und 106 (oder andere hier beschriebene Operationen) können die gleichen oder unterschiedliche Zeiten sein. In einigen Implementierungen beträgt z.B. die Periode von Block 102 alle 1 Minute und die Periode von Block 104 alle 2 Minuten. Es wird ferner geschätzt, dass die Periode für einen bestimmten Block regelmäßig (z.B. alle 1 Minute) oder unregelmäßig sein kann (z.B. alle 2 Minuten während einer ersten Bedingung und alle 3 Minuten während einer zweiten Netzbedingung). In einigen Implementierungen können einer oder mehrere der Blöcke 102, 104 und 106 (oder andere hier beschriebene Vorgänge) nicht periodisch sein und durch irgendein Netzwerk- oder anderes Ereignis ausgelöst werden.
-
Obwohl das Flussdiagramm von eine bestimmte Reihenfolge der Ausführung zeigt, ist es zu begrüßen, dass diese Reihenfolge in eine andere geeignete Reihenfolge umgewandelt werden kann, gleichzeitig oder teilweise gleichzeitig oder in einer Kombination davon ausgeführt werden kann. Ebenso können geeignete zusätzliche und/oder vergleichbare Schritte zu Methode 100 oder anderen hier beschriebenen Methoden hinzugefügt werden, um die gleiche oder vergleichbare Funktionalität zu erreichen. Bei einigen Implementierungen werden ein oder mehrere Schritte weggelassen. Beispielsweise kann in einigen Implementierungen der Block 104 des Empfangs von Netzwerkauslastungsinformationen in Methode 100 weggelassen oder von einem anderen Gerät ausgeführt werden. Es wird geschätzt, dass Blöcke, die zusätzlicher oder alternativer Funktionalität anderer hier beschriebener Implementierungen entsprechen, in Methode 100 aufgenommen werden können. Beispielsweise können Blöcke, die der Funktionalität verschiedener Aspekte von Implementierungen entsprechen, die hier anderweitig beschrieben sind, in Methode 100 aufgenommen werden, selbst wenn diese Funktionalität hier nicht ausdrücklich als Block in Methode 100 gekennzeichnet ist.
-
Verschiedene Beispielimplementierungen für die vorliegende Offenlegung werden nun beschrieben. Es wird geschätzt, dass diese Beispiele bestimmte Aspekte anderer hier beschriebener Implementierungen enthalten oder sich auf diese beziehen können (und umgekehrt), aber sie sind nicht als Beschränkung auf andere hier beschriebene Implementierungen gedacht. Darüber hinaus ist es zu begrüßen, dass bestimmte Aspekte dieser Implementierungen auf andere hier beschriebene Implementierungen angewendet werden können.
-
Bei einigen Implementierungen der vorliegenden Offenlegung werden Daten über die Netzwerktopologie des Rechenzentrums und Ortsdaten über bestehende Mechanismen (Labels und/oder Anmerkungen) zur Infrastruktur des Kubernetes hinzugefügt. Eine netzwerktopologiebewusste Pod-Scheduling-Engine ist mit dem bestehenden Kubernetes-Scheduler-Erweiterungsrahmen verbunden, um Scheduling-Module zum Filtern und Priorisieren von Knoten für die Pod-Scheduling-Planung unter Verwendung von Netzwerkdaten hinzuzufügen. Diese Erweiterungen können z.B. die Cluster-Scheduling-Fähigkeiten von Kubernetes so erweitern, dass sie die Netzwerknähe und Einschränkungen des Rechenzentrums berücksichtigen. Einschränkungen bei der netzwerknahen Planung können z.B. für niedrige Latenz, hohe Bandbreite oder direkte Switch-Konnektivität optimiert werden und die Identifizierung vorhandener laufender Pods für den jeweiligen Mikrodienst oder die jeweilige Anwendung einschließen.
-
Es wird geschätzt, dass die Netzwerktopologie eines Rechenzentrums beispielsweise in mehreren Phasen aufgebaut werden kann. Die erste Phase wird auf den Serverknoten implementiert und besteht darin, die physische Netzwerkkonfiguration jedes Servers zu erfassen und den Kubernetes Application Programming Interface („API“)-Eintrag für diesen Serverknoten mit der physischen Netzwerkkonfiguration zu annotieren, insbesondere die Media Access Control („MAC“)-Adresse jedes physischen Netzwerkschnittstellen-Controllers („NIC“). Die zweite Phase wird auf dem Netzwerk-Controller des Rechenzentrums unter Verwendung von Verbindungsdaten (Peering) von den Rechenzentrums-Switches implementiert, die alle internen Verbindungen zwischen den Rechenzentrums-Switches angeben. Diese Daten können verwendet werden, um eine Konnektivitätsabbildung zwischen den Datencenter-Switches einschließlich der potenziell verfügbaren Bandbreite zwischen den Peer-Switches zu erstellen. Die Netzwerkadapter des Serverknotens können dann der Netzwerktopologie des Rechenzentrums mithilfe von Netzwerk-Nachbarschaftsanzeigen (Link Layer Discovery Protocol („LLDP“-Pakete)) oder der direkten MAC-Adressensuche von den Rechenzentrums-Switches aus zugeordnet werden. Auf diese Weise wird eine vollständige Abbildung der Netzwerktopologie einschließlich der Rechenzentrumsswitches und Serverknoten erstellt, einschließlich aller verfügbaren Verbindungspfade und einschließlich der verfügbaren Bandbreite auf jedem Verbindungspfad.
-
Gemäß bestimmten Implementierungen der vorliegenden Offenlegung kann Kubernetes Pod-Planung mit netzwerkbewussten Filter- und Priorisierungsmethoden durch bestehende Scheduler-Erweiterungsmechanismen verbessert werden. Die Filtermethode kann z.B. Kandidatenknoten eliminieren, die nicht mit der gewünschten Netzwerklokalität übereinstimmen. Eine Priorisierungsmethode, die von bestimmten Implementierungen der vorliegenden Offenlegung verwendet wird, kann z.B. die verbleibenden Knoten (nach der Filterung) in der Reihenfolge der verfügbaren Fabric-Bandbreite zu/von jedem verbleibenden Knoten ordnen.
-
Bei bestimmten Implementierungen kann eine Reihe von Einstellungen für den Netzstandort angefordert werden, einschließlich direkt ( ), benachbart ( ), lokal ( ), Standard ( ) oder deaktiviert. Jede Einstellung kann clusterweit oder anwendungsspezifisch sein. Eine solche „direkte“ lokale Einstellung kann z. B. anfordern, dass die Container-Pods einer bestimmten Anwendung/eines bestimmten Projekts/eines bestimmten Namensraums (im Folgenden nur „Anwendung“) auf Knoten geplant werden, die alle mit demselben oder denselben Rechenzentrums-Switch bzw. denselben Rechenzentrums-Switches verbunden sind. Eine solche „benachbarte“ Standort-Einstellung kann z.B. anfordern, dass Anwendungs-Container-Pods auf Knoten geplant werden, die mit Switches verbunden sind, die einen einzigen Hop entfernt sind (keine dazwischenliegenden Switches), und zwar mit der größten verfügbaren Bandbreite zwischen diesen Switches. Eine solche „lokale“ Ortseinstellung kann z.B. anfordern, dass Anwendungscontainer-Pods auf Knoten geplant werden, die mit Switches verbunden sind, die einen einzelnen Hop entfernt sind (keine dazwischenliegenden Switches), und zwar unabhängig von der verfügbaren Bandbreite zwischen diesen Switches. Eine solche „Standard“-Ortseinstellung kann z.B. die Platzierung auf jedem beliebigen Knoten im Cluster ermöglichen. Eine solche „deaktivierte“ Ortseinstellung kann z.B. Netzwerküberlegungen aus dem Planungsprozess von Kubernetes vollständig entfernen. In allen oben genannten Fällen (mit Ausnahme der Deaktivierung in einigen Implementierungen) können verfügbare Kandidatenknoten z.B. nach der verfügbaren Bandbreite priorisiert werden.
-
Einige der vorgeschlagenen Implementierungen können Kubernetes z.B. einen clusterweiten Standard-Scheduling-Algorithmus sowie benutzerdefinierbare Overrides pro Anwendung oder für bestimmte Container-Pods innerhalb einer Anwendung zur Verfügung stellen. Diese benutzerdefinierbaren Überschreibungen können einfach durch die Verwendung bestehender Kennzeichnungsmechanismen in der Kubernetes-API mit definierten Kennzeichnungsnamen und -werten erreicht werden.
-
Es wird geschätzt, dass sich bestimmte Implementierungen der vorliegenden Offenlegung auf eine einzige Ebene konzentrieren können - das Netzwerk des Datenzentrums und die Optimierung eines Ortes innerhalb dieser Struktur, einschließlich nicht-hierarchischer Netzwerktopologien. Bestimmte bestehende Lösungen beziehen sich auf das Konzept der Knotennähe für die Planung im Bereich der Nähe von Fehlerdomänen. Solche Lösungen versuchen zu verhindern, dass zu viele Anwendungscontainer-Pods innerhalb einer bestimmten Fehlerdomäne geplant werden. Die vorliegende Offenlegung ergänzt diese Arbeit, da sie sich auf Entitäten jenseits eines einzelnen Knotens, aber innerhalb der Fehlerdomäne einer einzelnen Struktur konzentriert. Beide Lösungen könnten in einer einzigen Umgebung koexistieren, wobei ein Satz von Scheduling-Erweiterungen die Pods relativ zu den definierten Grenzen weiter auseinander schiebt und die anderen Pods innerhalb der Grenzen näher zusam menrücken.
-
Bestimmte bestehende Lösungen befassen sich eher mit der Planung einzelner Behälter als mit der Sammlung von Anwendungsbehältern. Bei einer solchen Lösung ist es wahrscheinlich, dass ein erster Knoten zufällig ausgewählt wird. Wenn dieser Knoten als ungeeignet erachtet wird, wird ein „zweiter“ Knoten aus der Matrix ausgewählt. Bestimmte Implementierungen der vorliegenden Offenlegung beinhalten einen kooperativen Ansatz, bei dem Attribute der Netzwerklokalitäten (z.B. Latenz und/oder „Entfernung“ der Bandbreite) in einen größeren Knotenauswahlprozess einbezogen werden, der unter anderem CPU-Last, Speicherlast, Plattennutzung und Affinität/Anti-Affinität in einem ganzheitlichen Planungsprozess einschließt.
-
6 ist ein Diagramm eines Computergerätes 108, das z.B. als ein containerisiertes Anwendungsplanungssystem in Übereinstimmung mit der vorliegenden Offenlegung dienen kann. Das Rechengerät 108 kann z.B. in Form eines Servers oder eines anderen geeigneten Rechengeräts innerhalb einer Netzwerkumgebung oder in Kommunikation mit einer Netzwerkumgebung oder deren Ausrüstung sein. Wie weiter unten näher beschrieben, enthält die Recheneinheit 108 eine Verarbeitungsressource 110 und eine Speicherressource 114, die die maschinenlesbaren Befehle 116 und 118 speichert. Zur Veranschaulichung wird in der Beschreibung von Rechengerät 108 auf verschiedene Aspekte bestimmter Diagramme, Methoden und anderer spezifischer Implementierungen verwiesen. Es wird jedoch geschätzt, dass die Recheneinheit 108 zusätzliche, alternative oder weniger Aspekte, Funktionen usw. als die an anderer Stelle hierin beschriebenen Implementierungen enthalten kann, und es ist nicht beabsichtigt, durch die damit verbundene Offenlegung eingeschränkt zu werden.
-
Die auf der Speicherressource 114 gespeicherte Anweisung 116 soll, wenn sie von der Verarbeitungsressource 110 ausgeführt wird, bewirken, dass die Verarbeitungsressource 110 einen Satz potenzieller Containerisierungsknoten innerhalb eines Rechenzentrums in eine Rangfolge bringt, die zum Teil auf der physischen Position jedes Knotens im Vergleich zu anderen Knoten innerhalb des Rechenzentrums basiert. Die Anweisung 116 kann einen oder mehrere Aspekte von Blöcken der Methode 100 oder einen anderen geeigneten Aspekt anderer hier beschriebener Implementierungen enthalten (und umgekehrt). In einigen Implementierungen soll beispielsweise die Anweisung 116 die Verarbeitungsressource dazu veranlassen, die Menge der potenziellen Containerisierungsknoten auf der Grundlage der Netzwerkauslastung der Knoten zu ordnen. Die auf der Speicherressource 114 gespeicherte Anweisung 118 soll, wenn sie von der Verarbeitungsressource 110 ausgeführt wird, die Verarbeitungsressource 110 veranlassen, Knoten auszuwählen, um eine containerisierte Anwendung auf der Grundlage der Rangfolge der Knoten auszuführen. Anweisung 116 kann einen oder mehrere Aspekte von Blöcken der Methode 100 oder einen anderen geeigneten Aspekt anderer hier beschriebener Implementierungen enthalten (und umgekehrt).
-
Die Verarbeitungsressource 110 des Rechengeräts 108 kann z.B. in Form einer Zentraleinheit (CPU), eines Mikroprozessors auf Halbleiterbasis, eines digitalen Signalprozessors (DSP), wie z.B. einer digitalen Bildverarbeitungseinheit, anderer Hardwaregeräte oder Verarbeitungselemente, die geeignet sind, in der Speicherressource 114 gespeicherte Befehle abzurufen und auszuführen, oder geeignete Kombinationen davon sein. Die Verarbeitungsressource 110 kann z.B. einzelne oder mehrere Kerne auf einem Chip, mehrere Kerne über mehrere Chips, mehrere Kerne über mehrere Geräte oder geeignete Kombinationen davon umfassen. Die Verarbeitungsressource 110 kann zum Abrufen, Decodieren und Ausführen von Befehlen wie hier beschrieben funktionieren. Alternativ oder zusätzlich zum Abrufen und Ausführen von Befehlen kann die Verarbeitungsressource 110 beispielsweise mindestens einen integrierten Schaltkreis (IC), eine andere Steuerlogik, andere elektronische Schaltkreise oder eine geeignete Kombination davon umfassen, die eine Reihe von elektronischen Komponenten zur Ausführung der Funktionalität von Befehlen enthalten, die auf der Speicherressource 114 gespeichert sind. Der Begriff „Logik“ kann in einigen Implementierungen eine alternative oder zusätzliche Verarbeitungsressource zur Ausführung einer bestimmten hier beschriebenen Aktion und/oder Funktion usw. sein, die Hardware, z.B. verschiedene Formen von Transistorlogik, anwendungsspezifische integrierte Schaltungen (ASICs) usw., im Gegensatz zu maschinenausführbaren Befehlen, z.B. Software-Firmware usw., die im Speicher gespeichert und von einem Prozessor ausführbar sind, umfaßt. Die Verarbeitungsressource 110 kann z.B. über mehrere Verarbeitungseinheiten hinweg implementiert werden, und Befehle können von verschiedenen Verarbeitungseinheiten in verschiedenen Bereichen des Rechengeräts 108 implementiert werden.
-
Die Speicherressource 114 des Datenverarbeitungsgeräts 108 kann z.B. die Form eines nicht vorübergehenden maschinenlesbaren Speichermediums haben, wie z.B. ein geeignetes elektronisches, magnetisches, optisches oder anderes physikalisches Speichergerät zur Aufnahme oder Speicherung von Informationen wie die maschinenlesbaren Befehle 116 und 118. Solche Anweisungen können wirksam sein, um eine oder mehrere hierin beschriebene Funktionen auszuführen, wie z.B. die hierin in Bezug auf Methode 100 oder andere hierin beschriebene Methoden beschriebenen. Die Speicherressource 114 kann z.B. innerhalb desselben Gehäuses untergebracht werden wie die Verarbeitungsressource 110 für das Rechengerät 108, wie z.B. in einem Gehäuse für das Rechengerät 108 (in Implementierungen, bei denen das Rechengerät 108 in einem Gehäuse für den Rechnerturm untergebracht ist). In einigen Implementierungen sind die Speicherressource 114 und die Verarbeitungsressource 110 in unterschiedlichen Gehäusen untergebracht. Der hier verwendete Begriff „maschinenlesbares Speichermedium“ kann z.B. Random Access Memory (RAM), Flash-Speicher, ein Speicherlaufwerk (z.B. eine Festplatte), jede Art von Speicherplatte (z.B. ein Compact Disc Read Only Memory (CD-ROM), jede andere Art von Compact Disc, eine DVD usw.) und ähnliches oder eine Kombination davon umfassen. In einigen Implementierungen kann die Speicherressource 114 einem Speicher entsprechen, der einen Hauptspeicher, wie z.B. einen Arbeitsspeicher mit wahlfreiem Zugriff (Random Access Memory, RAM), in dem sich die Software während der Laufzeit befinden kann, und einen Sekundärspeicher umfasst. Der Sekundärspeicher kann beispielsweise einen nichtflüchtigen Speicher umfassen, in dem eine Kopie von maschinenlesbaren Befehlen gespeichert ist. Es wird geschätzt, dass sowohl maschinenlesbare Befehle als auch verwandte Daten auf Speichermedien gespeichert werden können und dass mehrere Medien für Beschreibungszwecke als ein einziges Medium behandelt werden können.
-
Die Speicherressource 114 kann über eine Kommunikationsverbindung 112 mit der Verarbeitungsressource 110 in Verbindung stehen. Jede Kommunikationsverbindung 112 kann lokal oder entfernt zu einer Maschine (z.B. einem Rechengerät) sein, die mit der Verarbeitungsressource 110 verbunden ist. Beispiele für eine lokale Kommunikationsverbindung 112 können einen elektronischen Bus innerhalb einer Maschine (z.B. eines Rechengeräts) umfassen, wobei die Speicherressource 114 ein flüchtiges, nichtflüchtiges, festes und/oder entfernbares Speichermedium ist, das über den elektronischen Bus mit der Verarbeitungsressource 110 kommuniziert.
-
In einigen Implementierungen können ein oder mehrere Aspekte des Datenverarbeitungsgeräts 108 in Form von Funktionsmodulen vorliegen, die z.B. operativ sein können, um einen oder mehrere Prozesse der Anweisungen 116 oder 118 oder andere hier beschriebene Funktionen in Bezug auf andere Implementierungen der Offenlegung auszuführen. Wie hierin verwendet, bezieht sich der Begriff „Modul“ auf eine Kombination aus Hardware (z.B. ein Prozessor, wie eine integrierte Schaltung oder ein anderer Schaltkreis) und Software (z.B. maschinen- oder prozessorausführbare Anweisungen, Befehle oder Code, wie Firmware, Programmierung oder Objektcode). Eine Kombination von Hardware und Software kann nur Hardware (d.h. ein Hardware-Element ohne Software-Elemente), Software, die auf Hardware gehostet wird (z.B. Software, die in einem Speicher gespeichert und auf einem Prozessor ausgeführt oder interpretiert wird), oder Hardware und Software, die auf Hardware gehostet wird, umfassen. Es wird ferner geschätzt, dass der Begriff „Modul“ sich zusätzlich auf ein oder mehrere Module oder eine Kombination von Modulen beziehen soll. Jedes Modul der Recheneinheit 108 kann zum Beispiel ein oder mehrere maschinenlesbare Speichermedien und einen oder mehrere Computerprozessoren umfassen.
-
In Anbetracht des oben Gesagten ist es zu begrüßen, dass die verschiedenen oben beschriebenen Anweisungen der Rechenanlage 108 getrennten und/oder kombinierten Funktionsmodulen entsprechen können. Zum Beispiel kann die Anweisung 116 einem „Ranglistenmodul“ entsprechen, um einen Satz potenzieller Containerisierungsknoten innerhalb eines Datenzentrums in eine Rangfolge zu bringen, die zum Teil auf der physikalischen Lage jedes Knotens im Vergleich zu anderen Knoten innerhalb des Datenzentrums basiert. Ebenso kann die Anweisung 118 einem „Knotenauswahlmodul“ entsprechen, um Knoten zur Ausführung einer containerisierten Anwendung auf der Grundlage der Rangfolge der Knoten auszuwählen. Es wird ferner geschätzt, dass ein bestimmtes Modul für mehrere Funktionen verwendet werden kann. Wie nur ein Beispiel: In einigen Implementierungen kann ein einzelnes Modul sowohl für die Rangfolge potentieller Containerisierungsknoten (z.B. entsprechend der Funktionalität der Anweisung 116) als auch für die Auswahl von Knoten (z.B. entsprechend der Funktionalität der Anweisung 118) verwendet werden.
-
Eine oder mehrere Implementierungen der vorliegenden Offenlegung können darüber hinaus ein geeignetes Kommunikationsmodul enthalten, um eine vernetzte Kommunikation zwischen Netzwerkgeräten zu ermöglichen. Ein solches Kommunikationsmodul kann z.B. einen NetzwerkSchnittstellen-Controller mit einem Ethernet-Anschluss und/oder einem Fibre-Channel-Anschluss umfassen. In einigen Implementierungen kann ein solches Kommunikationsmodul eine drahtgebundene oder drahtlose Kommunikationsschnittstelle enthalten und in einigen Implementierungen virtuelle Netzwerkanschlüsse bereitstellen. In einigen Implementierungen umfasst ein solches Kommunikationsmodul Hardware in Form einer Festplatte, zugehörige Firmware und andere Software, die es der Festplatte ermöglicht, operativ mit anderen Netzwerkgeräten zu kommunizieren. Das Kommunikationsmodul kann z.B. maschinenlesbare Anweisungen zur Verwendung mit der Kommunikation des Kommunikationsmoduls enthalten, wie z.B. Firmware zur Implementierung physischer oder virtueller Netzwerkanschlüsse.
-
zeigt ein maschinenlesbares Speichermedium 120 mit verschiedenen Anweisungen, die von einem Computerprozessor oder einer anderen Verarbeitungsressource ausgeführt werden können. In einigen Implementierungen kann das Medium 120 in einem Server, auf einem anderen Computergerät innerhalb einer Netzwerkumgebung oder in einer lokalen oder entfernten drahtgebundenen oder drahtlosen Datenkommunikation innerhalb einer Netzwerkumgebung untergebracht sein. Zur Veranschaulichung bezieht sich die hier vorliegende Beschreibung des maschinenlesbaren Speichermediums 120 auf verschiedene Aspekte des Computergeräts 108 (z.B. Verarbeitungsressource 110) und andere Implementierungen der Offenlegung (z.B. Methode 100). Obwohl ein oder mehrere Aspekte des Datenverarbeitungsgeräts 108 (sowie Anweisungen wie die Anweisungen 116 und 118) auf das Medium 120 angewendet oder anderweitig in das Medium 120 integriert werden können, wird es geschätzt, dass in einigen Implementierungen das Medium 120 getrennt von einem solchen System gespeichert oder untergebracht werden kann. Zum Beispiel kann in einigen Implementierungen das Medium 120 in Form von Random Access Memory (RAM), Flash-Speicher, einem Speicherlaufwerk (z.B. einer Festplatte), jeder Art von Speicherplatte (z.B. einer Compact Disc Read Only Memory (CD-ROM), jeder anderen Art von Compact Disc, einer DVD usw.) und ähnlichem oder einer Kombination davon vorliegen.
-
Medium 120 enthält maschinenlesbare Anweisungen 122, die darauf gespeichert sind, um die Verarbeitungsressource 110 dazu zu veranlassen, die Containerisierung der Anwendungsauslastung auf der Grundlage von Informationen über den Standort der Ausrüstung innerhalb eines gemeinsamen Rechenzentrums zu bestimmen. Anweisung 116 kann beispielsweise einen oder mehrere Aspekte von Block 106 der Methode 100 oder einen anderen geeigneten Aspekt anderer hier beschriebener Implementierungen enthalten (und umgekehrt). In einigen Implementierungen wird die Platzierung der Arbeitslast beispielsweise so festgelegt, dass eine Anzahl von Sprüngen zwischen den Knoten der Virtualisierungsausrüstung minimiert wird.
-
Medium 120 enthält maschinenlesbare Anweisungen 124, die darauf gespeichert sind, um die Verarbeitungsressource 110 zu veranlassen, der Virtualisierungsausrüstung innerhalb des Rechenzentrums auf der Grundlage der Informationen über den Standort der Ausrüstung eine Arbeitslast zuzuweisen, um die Gesamtnetzwerkauslastung zu verbessern. Die Anweisungen 118 können beispielsweise einen oder mehrere Aspekte von Block 106 der Methode 100 oder einen anderen geeigneten Aspekt anderer hier beschriebener Implementierungen (und umgekehrt) enthalten.
-
Während bestimmte Implementierungen oben gezeigt und beschrieben wurden, können verschiedene Änderungen in Form und Details vorgenommen werden. Beispielsweise können einige Merkmale, die in Bezug auf eine Implementierung und/oder einen Prozess beschrieben wurden, mit anderen Implementierungen in Beziehung stehen. Mit anderen Worten: Prozesse, Merkmale, Komponenten und/oder Eigenschaften, die in Bezug auf eine Implementierung beschrieben wurden, können in anderen Implementierungen nützlich sein. Darüber hinaus sollte man sich darüber im Klaren sein, dass die hier beschriebenen Systeme und Methoden verschiedene Kombinationen und/oder Unterkombinationen der Komponenten und/oder Eigenschaften der verschiedenen beschriebenen Implementierungen enthalten können. So können Merkmale, die in Bezug auf eine oder mehrere Implementierungen beschrieben werden, mit anderen hier beschriebenen Implementierungen kombiniert werden.
-
Wie hier verwendet, ist „Logik“ eine alternative oder zusätzliche Verarbeitungsressource zur Ausführung einer bestimmten hier beschriebenen Aktion und/oder Funktion usw., die Hardware, z.B. verschiedene Formen der Transistorlogik, anwendungsspezifische integrierte Schaltungen (ASICs) usw., im Gegensatz zu maschinenausführbaren Befehlen, z.B. Software-Firmware usw., die im Speicher gespeichert und von einem Prozessor ausführbar sind, umfasst. Ferner kann sich, wie hier verwendet, „a“ oder „eine Anzahl von“ etwas auf eine oder mehrere solcher Dinge beziehen. Zum Beispiel kann sich „eine Anzahl von Widgets“ auf ein oder mehrere Widgets beziehen. Auch „eine Mehrzahl von“ irgendetwas kann sich, wie hier verwendet, auf mehr als eines dieser Dinge beziehen.