-
Hintergrund
-
Ein Computergerät kann virtuelle Entitäten enthalten, wie z. B. Container oder virtuelle Maschinen (VMs). Jede virtuelle Entität kann für die Ausführung im Computergerät initialisiert und konfiguriert werden. Die Initialisierung und Konfiguration jeder virtuellen Entität kann auf Konfigurationsdaten und anderen Informationen basieren.
-
Figurenliste
-
Einige Implementierungen der vorliegenden Offenbarung werden mit Bezug auf die folgenden Figuren beschrieben.
- und sind Blockdiagramme von Computergehäusen, die virtuelle Entitäten und einen Management-Controller gemäß einiger Beispiele enthalten.
- ist ein Blockdiagramm eines Management-Controllers, gemäß einiger Beispiele.
- ist ein Blockdiagramm eines Speichermediums, das maschinenlesbare Anweisungen gemäß einigen Beispielen speichert.
- ist ein Flussdiagramm eines Prozesses gemäß einiger Beispiele.
-
In den Zeichnungen bezeichnen identische Referenznummern ähnliche, aber nicht notwendigerweise identische, Elemente. Die Abbildungen sind nicht notwendigerweise maßstabsgetreu, und die Größe einiger Teile kann zur besseren Veranschaulichung des gezeigten Beispiels übertrieben sein. Darüber hinaus bieten die Zeichnungen Beispiele und/oder Implementierungen, die mit der Beschreibung übereinstimmen; die Beschreibung ist jedoch nicht auf die in den Zeichnungen dargestellten Beispiele und/oder Implementierungen beschränkt.
-
Detaillierte Beschreibung
-
In der vorliegenden Offenlegung schließt die Verwendung des Begriffs „ein“, „eine“ oder „die“ auch die Pluralformen ein, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Auch der Begriff „beinhaltet“, „einschließlich“, „umfasst“, „mit“, „haben“ oder „mit“, wenn er in dieser Offenbarung verwendet wird, spezifiziert das Vorhandensein der angegebenen Elemente, schließt aber das Vorhandensein oder die Zugabe anderer Elemente nicht aus.
-
Eine „virtuelle Entität“ kann sich auf eine logische Entität innerhalb eines Computergeräts beziehen, die in der Lage ist, Aufgaben der virtuellen Entität unabhängig von einer anderen virtuellen Entität im Computergerät auszuführen. Ein Beispiel für eine virtuelle Entität ist ein Container. Ein weiteres Beispiel für eine virtuelle Entität ist eine virtuelle Maschine (VM). In Beispielen, in denen eine virtuelle Entität ein Container oder eine VM ist, stellt die virtuelle Entität eine virtuelle Umgebung bereit, in der ein Programm (oder mehrere Programme) ausgeführt werden kann, so dass das/die Programm(e), das/die in der virtuellen Umgebung ausgeführt wird/werden, von dem/den Programm(en) in anderen virtuellen Umgebungen (andere Container oder VMs) isoliert ist.
-
Container sind VMs ähnlich, aber Container haben entspannte Isolationseigenschaften, um ein Host-Betriebssystem eines Computergeräts unter mehreren Anwendungsprogrammen, die in den Containern ausgeführt werden, zu teilen. Container bieten eine Möglichkeit, das Host-Betriebssystem zu virtualisieren, sodass mehrere Arbeitslasten (von Anwendungsprogrammen in den Containern) auf einer einzigen Instanz des Host-Betriebssystems ausgeführt werden können. Im Gegensatz dazu haben VMs jeweilige Gastbetriebssysteme, die in den entsprechenden VMs laufen. Ein Anwendungsprogramm in einer VM läuft in der Umgebung des Gastbetriebssystems der VM.
-
Eine virtuelle Entität kann auf der Grundlage von Konfigurationsdaten in einem Computergerät initialisiert und ausgeführt werden. Ein „Konfigurationsdaten“ für eine virtuelle Entität kann verschiedene Eigenschaften der virtuellen Entität definieren. Zum Beispiel können die Konfigurationsdaten eine Spezifikation (z. B. in Form einer Vorlage) enthalten, die den Namen, die Funktionen und andere Eigenschaften der virtuellen Entität definiert. Als weiteres Beispiel können die Konfigurationsdaten Werte von Variablen, Aufgaben, die von der virtuellen Entität ausgeführt werden sollen, usw. festlegen.
-
In einigen Fällen können die Konfigurationsdaten virtueller Entitäten an einem ungesicherten oder unzureichend gesicherten Speicherort in einem Computergerät gespeichert werden, wodurch ein Angreifer unbefugten Zugriff erlangen oder eine Beschädigung der Konfigurationsdaten verursachen kann. In einigen Fällen können die Konfigurationsdaten beispielsweise mit einem Betriebssystem des Computergeräts gespeichert werden, das einem Angriff durch einen Angreifer ausgesetzt sein kann. Ein Angreifer kann sich auf Malware, einen menschlichen Hacker oder jede andere Entität beziehen, die nicht berechtigt ist, eine Operation durchzuführen oder auf Informationen eines Computergeräts zuzugreifen. Ein Angreifer kann über die Konfigurationsdaten angreifen, indem er die Konfigurationsdaten so verändert, dass sich die virtuelle Entität nicht in der erwarteten Weise verhält, die Konfigurationsdaten löscht oder anderweitig beschädigt, so dass die virtuelle Entität nicht ausgeführt werden kann, die Konfigurationsdaten als Teil des Datendiebstahls abruft und so weiter.
-
Wenn die Konfigurationsdaten kompromittiert sind, kann die virtuelle Entität möglicherweise gar nicht oder nicht richtig ausgeführt werden. In anderen Fällen, wenn die Konfigurationsdaten kompromittiert sind, kann ein Angreifer unbefugten Zugriff auf eine Ressource oder Daten im Computergerät erhalten. In weiteren Beispielen, wenn die Konfigurationsdaten von einer nicht autorisierten Entität abgerufen werden, kann die nicht autorisierte Entität die Konfigurationsdaten auf nicht autorisierte Weise verwenden.
-
In Übereinstimmung mit einigen Implementierungen der vorliegenden Offenbarung kann eine Verwaltungssteuerung, die von einem Prozessor einer Rechenvorrichtung getrennt ist, zur Validierung von Programmcode virtueller Entitäten in der Rechenvorrichtung verwendet werden. Als Reaktion auf die Validierung des Programmcodes gibt die Verwaltungssteuerung den Zugriff auf Informationen in einem Informationsspeicher frei, um den Zugriff auf die Informationen durch das Computergerät zu ermöglichen, wobei die Informationen zur Verwendung durch die virtuellen Entitäten des Computergeräts bestimmt sind und die Verwaltungssteuerung den Zugriff auf die Informationen im Informationsspeicher vor der Validierung sperren soll.
-
ist ein Blockdiagramm eines Computergehäuses 100, das ein Computergerät 102 und einen Baseboard-Management-Controller (BMC) 104 enthält. Der BMC 104 ist ein Beispiel für einen Management-Controller, der von einem Prozessor 106 des Computergeräts 102 getrennt ist. Ein Prozessor kann einen Mikroprozessor, einen Kern eines Multi-Core-Mikroprozessors, einen Mikrocontroller, eine programmierbare integrierte Schaltung, ein programmierbares Gate-Array oder eine andere Hardware-Verarbeitungsschaltung umfassen.
-
Das BMC 104 kann mit dem Computergerät 102 über eine sichere Verbindung 108 zwischen dem Computergerät 102 und dem BMC 104 kommunizieren.
-
Eine „sichere Verbindung“ kann sich auf ein beliebiges Kommunikationsmedium beziehen, sei es physisch oder logisch, das die BMC 104 vor unberechtigtem Zugriff durch einen Angreifer schützt. Beispielsweise kann sich die BMC 104 auf einem Kommunikationskanal (z. B. einem Bus, einem Netzwerk usw.) befinden, auf den Programme, die im Computergerät 102 ausgeführt werden können, wie Anwendungsprogramme oder ein Betriebssystem (OS), keinen Zugriff haben. In anderen Beispielen kann die Kommunikation über die sichere Verbindung 108 geschützt werden, z. B. durch einen Verschlüsselungsmechanismus, bei dem die zwischen der BMC 104 und dem Computergerät 102 ausgetauschten Informationen verschlüsselt werden.
-
In einigen Beispielen kann ein „Computergerät“ eine beliebige oder eine Kombination der folgenden Geräte umfassen: einen Server-Computer, einen Desktop-Computer, ein Notebook, einen Tablet-Computer, ein Smartphone, einen Kommunikationsknoten (z. B. einen Switch, einen Router usw.), einen Speicherserver, ein Fahrzeug oder eine Steuerung des Fahrzeugs usw.
-
Obwohl das Computergehäuse 100 mit nur einem Computergerät 102 zeigt, kann das Computergehäuse 100 in anderen Beispielen auch mehrere Computergeräte enthalten. In solchen Beispielen kann das Computergehäuse 100 die Form eines Racks haben, das eine Reihe von Computergeräten enthält. Das BMC 104 (oder alternativ mehrere BMCs) kann mit den mehreren Computergeräten im Computergehäuse 100 kommunizieren.
-
Wie hierin verwendet, ist ein „BMC“ ein spezialisierter Service-Controller, der den physischen Zustand eines Computergeräts (wie 102) mithilfe von Sensoren überwacht und mit einem Managementsystem 105 (das z. B. vom Computergehäuse 100 entfernt ist) über eine unabhängige „Out-of-Band“-Verbindung kommuniziert. Die BMC 104 kann auch mit Anwendungen kommunizieren, die auf einer Betriebssystemebene über einen IOCTL-Schnittstellentreiber (Input/Output Controller), eine REST-Anwendungsprogrammschnittstelle (API) (Representational State Transfer) oder einen anderen Systemsoftware-Proxy ausgeführt werden, der die Kommunikation zwischen der BMC 104 und Anwendungsprogrammen erleichtert. Die BMC 104 kann auf Hardware-Ebene Zugriff auf HardwareKomponenten haben, die sich im Computergerät befinden. Die BMC 104 kann in der Lage sein, die Hardwarekomponenten direkt zu verändern (z. B. Einstellungen oder Konfigurationen der Hardwarekomponenten). Die BMC 104 kann unabhängig von einem Betriebssystem 109 des Computergeräts 102 arbeiten. Die BMC 104 kann sich auf der Hauptplatine oder der Hauptplatine des Computergeräts 102 befinden, um von der BMC 104 überwacht zu werden. Die Tatsache, dass die BMC 104 auf einer Hauptplatine des verwalteten Computergeräts 102 montiert oder anderweitig mit dem verwalteten Computergerät 102 verbunden oder daran angebracht ist, verhindert nicht, dass die BMC 104 als getrennt von einer Verarbeitungsressource (z. B. 106 im Computergerät 102) betrachtet wird, die das Betriebssystem 109 ausführt. Das BMC 104 verfügt über Verwaltungsfähigkeiten, um Komponenten des Computergeräts 102 zu verwalten. Beispiele für Verwaltungsfähigkeiten des BMC 104 können eine beliebige oder eine Kombination aus dem Folgenden umfassen: Stromverbrauchssteuerung zur Durchführung des Stromverbrauchsmanagements des Computergeräts 102 (z. B. zum Übergang des Computergeräts zwischen verschiedenen Stromverbrauchszuständen als Reaktion auf erkannte Ereignisse), thermische Überwachung und Steuerung des Computergeräts 102 (z. B. zur Überwachung von Temperaturen des Computergeräts und zur Steuerung von Wärmemanagementgeräten des Computergeräts), Lüftersteuerung von Lüftern im Computergerät 102, Systemzustandsüberwachung basierend auf der Überwachung von Messdaten verschiedener Sensoren des Computergeräts 102, Fernzugriff auf das Computergerät 102 (z. B. um über ein Netzwerk auf das Computergerät zuzugreifen), Fernneustart des Computergeräts 102 (um das Computergerät mit einem Fernbefehl zum Neustart zu veranlassen), Systemeinrichtung und - bereitstellung des Computergeräts 102, Systemsicherheit, um Sicherheitsverfahren im Computergerät 102 zu implementieren, und so weiter.
-
In einigen Beispielen kann das BMC 104 eine sogenannte „Lights-Out“-Funktionalität für Computergeräte bereitstellen. Die Lights-Out-Funktionalität kann es einem Benutzer, z. B. einem Systemadministrator, ermöglichen, Verwaltungsvorgänge auf dem Computergerät 102 durchzuführen, selbst wenn das Betriebssystem 109 nicht auf dem Computergerät 102 installiert oder nicht funktionsfähig ist.
-
Darüber hinaus kann die BMC 104 in einigen Beispielen, wie in gezeigt, mit Hilfsenergie betrieben werden, die von einer Hilfsstromversorgung 110 (z. B. einer Batterie) bereitgestellt wird; infolgedessen muss das Computergerät 102 nicht eingeschaltet sein, damit die BMC 104 die Operationen der BMC durchführen kann. Die vom BMC 104 bereitgestellten Dienste können als „Out-of-Band“-Dienste betrachtet werden, da das Betriebssystem 109 möglicherweise nicht läuft und das Computergerät 102 in manchen Fällen ausgeschaltet ist oder nicht ordnungsgemäß funktioniert (z. B. wenn das Computergerät 102 einen Fehler oder einen Hardwareausfall aufweist).
-
Die BMC 104 kann eine Kommunikationsschnittstelle 112, z. B. eine Netzwerkschnittstelle und/oder eine serielle Schnittstelle, enthalten, die ein Gerät eines Administrators oder einer anderen Instanz (z. B. das Managementsystem 105) verwenden kann, um aus der Ferne mit der BMC 104 zu kommunizieren. Die Kommunikationsschnittstelle 112 kann einen Transceiver zum Senden und Empfangen von Signalen über einen Kommunikationskanal sowie eine oder mehrere Protokollschichten umfassen, die mit einem oder mehreren Kommunikationsprotokollen verbunden sind, die für die Kommunikation von Daten über den Kommunikationskanal verwendet werden. Ein „Out-of-Band“-Dienst kann von der BMC 104 über einen dedizierten Verwaltungskanal (z. B. die Kommunikationsschnittstelle) bereitgestellt werden und ist unabhängig davon verfügbar, ob sich das Computergerät 102 in einem eingeschalteten Zustand befindet oder nicht.
-
Die Hilfsstromversorgung 110 ist getrennt von einer Hauptstromversorgung (nicht dargestellt), die das Computergerät 102 mit Strom versorgt.
-
Das BMC 104 umfasst außerdem einen Prozessor 114 und einen nichtflüchtigen Speicher 116. Der nichtflüchtige Speicher 116 kann unter Verwendung einer nichtflüchtigen Speichervorrichtung (oder mehrerer nichtflüchtiger Speichervorrichtungen) implementiert werden, wie z. B. einer Flash-Speichervorrichtung oder einer anderen Art von Speichervorrichtung, die die in der Speichervorrichtung gespeicherten Daten beibehält, auch wenn die Stromversorgung der Speichervorrichtung unterbrochen wird.
-
Der nichtflüchtige Speicher 116 speichert Programmcode-Validierungsanweisungen 118 (z. B. in Form von Firmware oder Software), die auf dem Prozessor 114 des BMC 104 ausführbar sind, um Programmcodes des Computergeräts 102 zu validieren. Die Programmcodes des Computergeräts 102 umfassen die folgenden Programmcodes (einschließlich maschinenlesbarer Anweisungen), die in einem Speichermedium 128 des Computergeräts 102 gespeichert sind: Programmcodes der virtuellen Entität 130, Firmware 132, die den Boot-Code 134 enthält, und das Betriebssystem 109. Die Validierung der Programmcodes, die von den Programmcode-Validierungsanweisungen 118 durchgeführt wird, umfasst eine Sequenz von Validierungsaufgaben (auch als „Root of Trust“-Sequenz bezeichnet), die verschiedene Programmcodes in einer bestimmten Reihenfolge validieren.
-
Das Speichermedium 128 kann mit einem Speichergerät oder mehreren Speichergeräten implementiert werden. Beispiele für Speichergeräte können eine beliebige oder eine Kombination der folgenden Elemente sein: ein nichtflüchtiges Speichergerät, ein plattenbasiertes Speichergerät, ein flüchtiges Speichergerät usw.
-
Die Abfolge der Validierungsaufgaben kann z. B. die folgende Sequenz umfassen. Beim Einschalten des Computergeräts 102 holt die Programmcode-Validierungsanweisung 118 den Startup-Code aus dem Speichermedium 128 des Computergeräts 102. Der Startup-Code kann einen Boot-Block des Boot-Codes 134 enthalten. Der Bootcode 134 wird ausgeführt, um verschiedene elektronische Komponenten des Computergeräts 102 zu initialisieren. Der Boot-Block des Boot-Codes 134 bezieht sich auf einen anfänglichen Teil des Boot-Codes 134, der verwendet wird, um den ersten Start des Computergeräts 102 durchzuführen.
-
Die Programmcode-Validierungsanweisungen 118 sind ausführbar, um den Startup-Code zu validieren, z. B. durch Berechnen eines Hash-Werts auf der Grundlage einer auf den Startup-Code angewendeten Hash-Funktion und Vergleichen des berechneten Hash-Werts mit einem gespeicherten Hash-Wert, um festzustellen, ob der Startup-Code gültig ist oder nicht (d. h. nicht auf unautorisierte Weise geändert wurde). Die Hash-Funktion kann eine kryptografische Hash-Funktion sein, wie z. B. eine SHA-Funktion (Secure Hash Algorithm), eine HMAC-Hash-Funktion (Hash-based Message Authentication Code), die auch als Keyed-Hashing for Message Authentication-Hash-Funktion bezeichnet wird, wie im Request for Comments (RFC) 6151 vom Februar 1997 beschrieben, eine bcrypt-Hash-Funktion usw.
-
Wenn die Programmcode-Validierungsanweisungen 118 den Startcode erfolgreich validieren, kann die BMC 104 den Prozessor 106 des Computergeräts 102 aus dem Reset herausnehmen und erlaubt dem Computergerät 102, einen zusätzlichen Teil der Programmcodes abzuholen. Zum Beispiel können aufeinanderfolgende Teile des Startcodes 134 und dann die Firmware 132 abgerufen werden, wenn die jeweiligen Programmcodes durch die Programmcode-Validierungsanweisungen 118 des BMC 104 validiert werden. Sobald die Firmware 132 validiert ist, kann der Kernel des Betriebssystems 109 zur Validierung durch die Programmcode-Validierungsanweisungen 118 abgerufen werden, gefolgt vom Abrufen und Validieren eines restlichen Teils des Betriebssystems 109. Sobald das Betriebssystem 109 validiert ist, können die Programmcode-Validierungsanweisungen 118 des BMC 104 einen Anwendungsstapel des Computergeräts 102 validieren. In einigen Beispielen kann der Anwendungsstapel die Programmcodes 130 der virtuellen Entität des Computergeräts 102 enthalten.
-
Jeder Programmcode 130 für virtuelle Entitäten stellt bei Ausführung durch das Computergerät 102 eine entsprechende virtuelle Entität im Computergerät 102 bereit. Die virtuellen Entitäten, die von den jeweiligen Programmcodes für virtuelle Entitäten 130 bereitgestellt werden, können Container, VMs usw. umfassen. Die Programmcode-Validierungsanweisungen 118 der BMC 104 können, wenn sie von der BMC 104 ausgeführt werden, die Programmcodes der virtuellen Entitäten 130 validieren.
-
Die Validierung jedes Programmcodes des Computergeräts 102 kann Hash-Werte verwenden, wie oben für die Validierung des Startcodes beschrieben. In anderen Beispielen kann ein Programmcode basierend auf der Verwendung von Verschlüsselungsschlüsseln, kryptografischen Signaturen usw. validiert werden. Verschlüsselungsschlüssel können zum Entschlüsseln von verschlüsseltem Programmcode verwendet werden, um festzustellen, ob der verschlüsselte Programmcode erfolgreich entschlüsselt werden kann. Eine kryptografische Signatur kann verwendet werden, um festzustellen, ob die mit einem Programmcode verbundene Signatur eine gültige Signatur ist.
-
Wie in gezeigt, speichert der nichtflüchtige Speicher 116 ferner Konfigurationsdaten 136 für virtuelle Entitäten, die den Programmcodes 130 für virtuelle Entitäten des Computergeräts 102 entsprechen. Genauer gesagt kann auf die Konfigurationsdaten 136 durch einen entsprechenden Programmcode 130 für virtuelle Entitäten zugegriffen werden, um die jeweilige virtuelle Entität zu konfigurieren, die in der Rechenvorrichtung 102 gestartet werden soll. Beispiele für die Konfigurationsdaten 136 umfassen die weiter oben diskutierten Konfigurationsdaten.
-
Gemäß einigen Implementierungen der vorliegenden Offenbarung bleiben die im nichtflüchtigen Speicher 116 der BMC 104 gespeicherten Konfigurationsdaten 136 für den Zugriff durch das Computergerät 102 (oder genauer gesagt durch einen Programmcode 130 für eine virtuelle Entität im Computergerät 102) gesperrt, bis die Abfolge der Validierungsaufgaben durch die von der BMC 104 ausgeführten Programmcode-Validierungsanweisungen 118 erfolgreich abgeschlossen wurde. In einigen Beispielen kann sich das Sperren der Konfigurationsdaten 136 vor dem Zugriff auf einen Mechanismus oder eine Technik beziehen, durch den/die eine Anfrage nach den Konfigurationsdaten 136 von der BMC 104 abgelehnt wird.
-
In weiteren Beispielen kann sich das Sperren der Konfigurationsdaten 136 vor dem Zugriff darauf beziehen, dass verhindert wird, dass ein Schlüssel (wie z. B. ein Verschlüsselungsschlüssel) an einen Programmcode 130 der virtuellen Entität übermittelt wird, so dass der Programmcode 130 der virtuellen Entität nicht in der Lage ist, die Konfigurationsdaten 136 zu entschlüsseln, die in dem nichtflüchtigen Speicher 116 in verschlüsselter Form gespeichert sein können. Der Schlüssel kann als Teil der Schlüsseldaten 138 im nicht-flüchtigen Speicher 116 gespeichert werden. Sobald der Verschlüsselungsschlüssel (oder genauer gesagt ein Entschlüsselungsschlüssel) dem Programmcode 130 der virtuellen Entität zur Verfügung gestellt wird, ist der Programmcode 130 der virtuellen Entität in der Lage, die verschlüsselten Konfigurationsdaten 136 zu entschlüsseln, um auf die entschlüsselten Konfigurationsdaten 136 zuzugreifen.
-
In einigen Beispielen können die Schlüsseldaten 138 auch einen Authentifizierungsschlüssel (oder mehrere Authentifizierungsschlüssel) enthalten, den virtuelle Entitäten, die den Programmcodes der virtuellen Entitäten 130 entsprechen, verwenden können, um sich gegenseitig zu authentifizieren. Zum Beispiel können mehrere virtuelle Entitäten Teil eines Clusters virtueller Entitäten sein, und solche virtuellen Teilnehmer können miteinander interagieren, um bestimmte Aufgaben auszuführen. Die Interaktionen zwischen den virtuellen Entitäten werden gesichert, indem die virtuellen Entitäten sich gegenseitig mit dem/den Authentifizierungsschlüssel(n) authentifizieren können.
-
zeigt ein Beispiel eines Computergehäuses 200, das eine Recheneinheit 202 enthält, die so angeordnet ist, dass sie einen Container gemäß KUBERNETES bereitstellt. KUBERNETES bietet eine portable, erweiterbare Open-Source-Plattform für die Verwaltung von containerisierten Workloads und Diensten, die sowohl eine deklarative Konfiguration als auch eine Automatisierung ermöglicht.
-
Die KUBERNETES-Plattform besteht aus einer KUBERNETES-Kontrollebene (auch KUBERNETES-Master genannt) und einer Anzahl (eins oder größer als eins) von KUBERNETES-Workern. Der Master und der/die Worker bilden zusammen einen Cluster.
-
Der Master bezieht sich auf eine Sammlung von Prozessen zur Verwaltung des Clusterzustandes. Die Prozesse des Masters können in einem Master-Knoten 204 ausgeführt werden. Ein „Knoten“ bezieht sich auf einen Arbeitsrechner, der in Form einer VM oder eines physischen Rechners vorliegen kann.
-
Die Prozesse eines Workers werden auf einem Worker-Knoten 206 ausgeführt. Ein Cluster kann den Master-Knoten 204 und eine Anzahl (einen oder mehr als einen) von Worker-Knoten 206 umfassen. Ein Worker-Knoten 206 führt ein containerisiertes Anwendungsprogramm aus. Genauer gesagt hostet ein Arbeitsknoten 206 Pods, die die Komponenten der Arbeitslast des im Arbeitsknoten 206 ausgeführten Anwendungsprogramms sind. Der Master-Knoten 204 hostet auch Pods, die die Prozesse des Masters zur Verwaltung des Clusters bereitstellen.
-
Ein „Pod“ ist die grundlegende Ausführungseinheit in einer KUBERNETES-Umgebung. Anders ausgedrückt ist ein Pod die kleinste und einfachste Einheit im KUBERNETES-Objektmodell, die erstellt bzw. deployed werden kann. Ein Pod repräsentiert Prozess(e), die im Cluster laufen. Ein Pod kann einen einzelnen Container ausführen oder mehrere Container, die zusammenarbeiten.
-
Ein Pod kapselt den Container einer Anwendung (oder in einigen Fällen mehrere Container), Speicherressourcen, eine eindeutige Netzwerkadresse (z. B. eine Internetprotokoll- oder IP-Adresse) und Optionen, die festlegen, wie der/die Container ausgeführt werden sollen.
-
In einigen Beispielen können die Prozesse des Master-Knotens 204 in einer KUBERNETES-Umgebung einen API-Server-Pod 208, einen Scheduler-Pod 210 und einen Controller-Manager-Pod 212 umfassen.
-
Der API-Server-Pod 208 stellt die API der KUBERNETES-Kontrollebene zur Verfügung, wobei die API das Abrufen, Erstellen, Aktualisieren und Löschen von Ressourcen unterstützt, z. B. durch Verwendung von Hypertext Transfer Protocol (HTTP)-Befehlen.
-
Der Scheduler-Pod 210 kann auf neu erstellte Pods achten und wählt einen Arbeitsknoten 206 zur Ausführung jedes neu erstellten Pods aus. In einigen Beispielen können Faktoren, die für Planungsentscheidungen berücksichtigt werden, eine beliebige oder eine Kombination der folgenden Faktoren umfassen: Ressourcenanforderungen, Hardware-/Software-/Richtlinienbeschränkungen, Affinitäts- und Anti-Affinitäts-Spezifikationen, Datenlokalität, Interferenzen zwischen Arbeitslasten, Fristen und so weiter.
-
Der Controller-Manager-Pod 212 kann erkennen und darauf reagieren, wenn Arbeiterknoten 206 ausfallen, Konten und API-Zugriffstoken erstellen und so weiter.
-
Obwohl bestimmte Beispielprozesse des Masterknotens 204 aufgeführt sind, können in anderen Beispielen auch andere Prozesse im Arbeitsknoten 206 laufen.
-
In der KUBERNETES-Umgebung kann jeder Arbeitsknoten 206 einen Kubelet-Pod 214 und eine Anzahl (eins oder mehr als eins) von Worker-Pods 216 ausführen. Der Kubelet-Pod 214 kann mit dem Master kommunizieren, damit der Arbeitsknoten 206 vom Master gesteuert werden kann (oder genauer gesagt, von den Prozessen des Masterknotens 204). Jeder Worker-Pod 216 führt die Arbeitslast eines Anwendungsprogramms aus, das von dem Worker-Knoten 206 gehostet wird. Obwohl nicht dargestellt, kann ein Arbeitsknoten 206 auch einen Proxy-Pod ausführen, bei dem es sich um einen Netzwerk-Proxy handelt, der die Netzwerkregeln für den Cluster verwaltet.
-
Das Computergehäuse 200 enthält außerdem die BMC 104, um ähnliche Aufgaben wie die BMC 104 von durchzuführen. Genauer gesagt können die Programmcode-Validierungsanweisungen 118 Programmcodes der Rechenvorrichtung 202 validieren, einschließlich der Programmcodes für den KUBERNETES-Master und den/die Worker, zusätzlich zu den anderen in dargestellten Programmcodes. Die BMC 104 kann den Zugriff auf die im nichtflüchtigen Speicher 116 der BMC gespeicherten Konfigurationsdaten 136 sperren, bis die Programmcode-Validierungsanweisungen 118 die Programmcodes des Rechengeräts 202 erfolgreich validiert haben, einschließlich der Programmcodes für den Masterknoten 204 und den/die Arbeitsknoten 206.
-
ist ein Blockdiagramm eines Management-Controllers 300 (z. B. der BMC 104 von oder ) gemäß einigen Beispielen. Der Management-Controller 300 umfasst eine Kommunikationsschnittstelle 302 zur Kommunikation mit einem Computergerät (z. B. 102 in oder in ). Der Management-Controller 300 ist von einem Prozessor des Computergeräts getrennt.
-
Die Verwaltungssteuerung 300 enthält einen Verwaltungsprozessor 304 zur Durchführung verschiedener Aufgaben. Zu den Aufgaben des Verwaltungsprozessors 304 gehört eine Aufgabe zur Validierung virtueller Entitäten 306, um eine Validierung von Programmcodes virtueller Entitäten des Computergeräts durchzuführen. Beispiele für die virtuellen Entitäten können Container (wie sie von Pods in den Worker-Knoten 206 von bereitgestellt werden), VMs und so weiter umfassen. In einigen Beispielen kann die Validierung auf der Berechnung eines Hash-Werts für jeden der Programmcodes basieren.
-
Zu den Aufgaben des Verwaltungsprozessors 304 gehört eine Aufgabe 308 zum Entsperren des Informationsspeichers, um als Reaktion auf die Validierung der Programmcodes den Zugriff auf Informationen (z. B. die Konfigurationsdaten 126 von oder ) in einem Informationsspeicher (z. B. dem nichtflüchtigen Speicher 116 von oder ) freizugeben, um den Zugriff auf die Informationen durch das Rechengerät zu ermöglichen. Die Informationen sind für die Verwendung durch die virtuellen Entitäten des Computergeräts bestimmt, wobei der Verwaltungsprozessor 304 den Zugriff auf die Informationen im Informationsspeicher vor der Validierung sperren soll.
-
In einigen Beispielen soll der Verwaltungsprozessor 304 den Zugriff auf die Informationen im Informationsspeicher freischalten, indem er einen Schlüssel an das Computergerät sendet. Der Schlüssel (der vom Verwaltungsprozessor 304 aus dem Informationsspeicher abgerufen werden kann) enthält einen Entschlüsselungsschlüssel zum Entschlüsseln verschlüsselter Informationen im Informationsspeicher.
-
In weiteren Beispielen können die Informationen im Informationsspeicher, auf die zugegriffen wird, einen Authentifizierungsschlüssel für die Verwendung durch die virtuellen Einheiten bei der Durchführung der gegenseitigen Authentifizierung enthalten (z. B. in Beispielen, in denen die virtuellen Einheiten Teil eines Clusters sind).
-
In weiteren Beispielen kann der Management-Controller 300 eine Kommunikationsschnittstelle (z. B. 112 in oder ) enthalten, um mit einer entfernten Entität (z. B. 105 in ) als Teil der Verwaltung des Computergeräts zu kommunizieren.
-
ist ein Blockdiagramm eines nicht-transitorischen maschinenlesbaren oder computerlesbaren Speichermediums 400, das maschinenlesbare Befehle speichert, die bei Ausführung einen Management-Controller (z. B. 104 aus oder ) veranlassen, verschiedene Aufgaben durchzuführen.
-
Die maschinenlesbaren Anweisungen enthalten Anweisungen zur Validierung von Programmcodes virtueller Entitäten (402), um eine Validierung von Programmcodes eines Clusters virtueller Entitäten in einem Computergerät (z. B. 102 von oder von ) durchzuführen, wobei die Verwaltungssteuerung von dem Computergerät getrennt ist und von einer Hilfsstromversorgung (z. B. 110 von oder ) mit Strom versorgt wird, selbst wenn die Stromversorgung des Computergeräts unterbrochen wird.
-
Die maschinenlesbaren Befehle enthalten ferner Anweisungen 404 zum Entsperren des Informationsspeichers, um als Reaktion auf die Validierung der Programmcodes den Zugriff auf Informationen (z. B. die Konfigurationsdaten 136 aus oder ) in einem Informationsspeicher (z. B. dem nichtflüchtigen Speicher 116 aus oder ) zu entsperren, um den Zugriff auf die Informationen durch die Rechenvorrichtung zu ermöglichen. Die Informationen sind für die Verwendung durch den Cluster virtueller Entitäten bei der Interaktion miteinander und zur Ausführung von Aufgaben der virtuellen Entitäten im Cluster virtueller Entitäten bestimmt, und die Verwaltungssteuerung soll den Zugriff auf die Informationen im Informationsspeicher vor der Validierung sperren.
-
In einigen Beispielen umfasst der Cluster virtueller Entitäten eine virtuelle Master-Entität (z. B. einen KUBERNETES-Master) und eine virtuelle Worker-Entität (z. B. einen KUBERNETES-Worker).
-
ist ein Flussdiagramm eines Prozesses 500, der von einer Verwaltungssteuerung (z. B. BMC 104 aus oder ) in einigen Beispielen durchgeführt wird. Der Prozess 500 umfasst die Durchführung (bei 502) einer Sequenz von Validierungen von maschinenlesbaren Anweisungen eines Computergeräts, das von der Verwaltungssteuerung getrennt ist, wobei die Sequenz von Validierungen eine erste Validierung eines Boot-Codes des Computergeräts und eine zweite Validierung von Programmcodes virtueller Entitäten in dem Computergerät umfasst.
-
Der Prozess 500 umfasst als Reaktion auf die erste Validierung und die zweite Validierung das Freigeben (bei 504) des Zugriffs auf Informationen in einem Informationsspeicher, um den Zugriff auf die Informationen durch die Computervorrichtung zu ermöglichen, wobei die Informationen zur Verwendung durch die virtuellen Entitäten bei der Interaktion miteinander und zum Ausführen von Aufgaben der virtuellen Entitäten bestimmt sind, und wobei die Verwaltungssteuerung den Zugriff auf die Informationen in dem Informationsspeicher vor dem Abschluss der Sequenz von Validierungen sperren soll.
-
Ein Speichermedium (z. B., 116 von oder , von ) kann eine beliebige oder eine Kombination der folgenden Elemente enthalten: eine Halbleiterspeichereinrichtung, wie z. B. ein dynamischer oder statischer Direktzugriffsspeicher (DRAM oder SRAM), ein löschbarer und programmierbarer Festwertspeicher (EPROM), ein elektrisch löschbarer und programmierbarer Festwertspeicher (EEPROM) und ein Flash-Speicher oder eine andere Art von nichtflüchtiger Speichereinrichtung; eine Magnetplatte, wie z. B. eine Festplatte, eine Diskette und eine Wechselplatte; ein anderes magnetisches Medium, einschließlich eines Bandes; ein optisches Medium, wie z. B. eine Compact Disk (CD) oder eine digitale Videodisk (DVD); oder eine andere Art von Speichereinrichtung. Beachten Sie, dass die oben besprochenen Anweisungen auf einem einzigen computer- oder maschinenlesbaren Speichermedium bereitgestellt werden können, oder alternativ auf mehreren computer- oder maschinenlesbaren Speichermedien, die in einem großen System mit möglicherweise mehreren Knoten verteilt sind. Ein solches computerlesbares oder maschinenlesbares Speichermedium oder solche Speichermedien werden als Teil eines Artikels (oder Herstellungsartikels) betrachtet. Ein Artikel oder Herstellungsgegenstand kann sich auf jede hergestellte Einzelkomponente oder mehrere Komponenten beziehen. Das Speichermedium oder die Speichermedien können sich entweder in der Maschine befinden, in der die maschinenlesbaren Anweisungen ausgeführt werden, oder an einem entfernten Standort, von dem maschinenlesbare Anweisungen über ein Netzwerk zur Ausführung heruntergeladen werden können.
-
In der vorstehenden Beschreibung sind zahlreiche Details aufgeführt, um ein Verständnis des hier offengelegten Gegenstands zu ermöglichen. Es können jedoch auch Implementierungen ohne einige dieser Details durchgeführt werden. Andere Implementierungen können Modifikationen und Variationen von den oben beschriebenen Details enthalten. Es ist beabsichtigt, dass die beigefügten Ansprüche solche Modifikationen und Variationen abdecken.