Ubuntu auf Worker-Knoten mit benutzerdefinierten Images ausführen
Erfahren Sie, wie Sie Worker-Knoten einbeziehen, auf denen die Ubuntu Linux-Distribution in Clustern ausgeführt wird, die mit der Kubernetes Engine (OKE) erstellt wurden. Dazu werden benutzerdefinierte Images und Cloud-Init-Skripte verwendet.
Ubuntu ist eine beliebte Open-Source-Linux-Distribution, die häufig zur Ausführung von GPU-intensiven und KI/ML-Workloads verwendet wird. Wenn Sie Cluster mit der Kubernetes Engine (OKE) erstellen, können Sie mit benutzerdefinierten Images und Cloud-init-Skripten die folgenden Typen von Worker-Knoten für die Ausführung von Ubuntu erstellen:
- verwaltete Knoten
- Selbstverwaltete Knoten
Beachten Sie, dass Sie keine virtuellen Knoten zur Ausführung von Ubuntu mit benutzerdefinierten Images und Cloud-Init-Skripten erstellen können.
Auf hoher Ebene wird für die Ausführung von Ubuntu ein Worker-Knoten erstellt:
- Schritt 1: Benutzerdefiniertes Image basierend auf einer vorhandenen Compute-Instanz erstellen, auf der das erforderliche Ubuntu-Release ausgeführt wird. Oracle stellt Knotenpackages für verschiedene Ubuntu-Releases bereit, und jedes Knotenpackage ist mit bestimmten Kubernetes-Versionen kompatibel. Weitere Informationen finden Sie unter Verfügbarkeit und Kompatibilität.
- Schritt 2: URL zum Herunterladen eines Ubuntu-Knotenpackages erstellen. Die URL, von der das von Oracle bereitgestellte Ubuntu-Knotenpackage heruntergeladen werden soll, hängt sowohl vom Ubuntu-Release als auch von der Kubernetes-Version ab, die Sie auf dem Worker-Knoten ausführen möchten. Für jede unterstützte Kombination aus Ubuntu-Release und Kubernetes-Version gibt es eine andere Download-URL.
- Schritt 3: Erstellen Sie ein cloud-init-Skript, um das Ubuntu-Knotenpackage zu installieren und den Worker-Knoten zu booten. Das zu erstellende cloud-init-Skript hängt davon ab, ob der Worker-Knoten, auf dem Sie Ubuntu ausführen möchten, ein verwalteter Knoten oder ein selbstverwalteter Knoten ist.
- Schritt 4: Worker-Knoten hinzufügen, auf denen Ubuntu ausgeführt wird. Wie Sie Ubuntu-Knoten zu einem Cluster hinzufügen, hängt davon ab, ob Sie die Knoten als verwaltete Knoten oder als selbstverwaltete Knoten hinzufügen möchten. Für verwaltete Knoten definieren Sie einen Pool für verwaltete Knoten. Bei selbstverwalteten Knoten fügen Sie Compute-Instanzen als Worker-Knoten hinzu.
Verfügbarkeit und Kompatibilität
In dieser Tabelle werden die Ubuntu-Releases aufgeführt, für die Oracle Knotenpackages bereitstellt, sowie die Kubernetes-Versionen, mit denen jedes Knotenpackage kompatibel ist. Die von Oracle bereitgestellten Knotenpackages sind für die Arbeit an x86- und ARM-Architekturen ausgelegt.
Ubuntu-Release | Package zur Verwendung mit Kubernetes 1.27 | Package zur Verwendung mit Kubernetes 1.28 | Package zur Verwendung mit Kubernetes 1.29 | Package zur Verwendung mit Kubernetes 1.30 | Package zur Verwendung mit Kubernetes 1.31 | Für Kubernetes 1.32 zu verwendendes Package | Für Kubernetes 1.33 zu verwendendes Package |
---|---|---|---|---|---|---|---|
Jammy (Ubuntu 22.04) | oci-oke-node-all-1.27.10 |
oci-oke-node-all-1.28.10 |
oci-oke-node-all-1.29.1 |
oci-oke-node-all-1.30.10 |
oci-oke-node-all-1.31.1 |
oci-oke-node-all-1.32.1 |
oci-oke-node-all-1.33.0 |
Noble (Ubuntu 24.04) | oci-oke-node-all-1.27.10 |
oci-oke-node-all-1.28.10 |
oci-oke-node-all-1.29.1 |
oci-oke-node-all-1.30.10 |
oci-oke-node-all-1.31.1 |
oci-oke-node-all-1.32.1 |
oci-oke-node-all-1.33.0 |
Schritt 1: Benutzerdefiniertes Image basierend auf einer vorhandenen Compute-Instanz erstellen, auf der das erforderliche Ubuntu-Release ausgeführt wird
In diesem Schritt erstellen Sie mit dem Compute-Service ein benutzerdefiniertes Image aus einer Compute-Instanz, auf der bereits das gewünschte Ubuntu-Release auf Worker-Knoten im Kubernetes-Cluster ausgeführt wird.
Beachten Sie, dass Sie das Bild als "benutzerdefiniertes" Bild erstellen, auch wenn Sie das Bild nicht ändern.
- Entscheiden Sie, welches Ubuntu-Release und welche Kubernetes-Version Sie auf Worker-Knoten verwenden möchten.
Oracle stellt Knotenpackages für verschiedene Ubuntu-Releases bereit, und jedes Knotenpackage ist mit bestimmten Kubernetes-Versionen kompatibel. Weitere Informationen finden Sie unter Verfügbarkeit und Kompatibilität.
-
Identifizieren Sie eine vorhandene Compute-Instanz, auf der das erforderliche Ubuntu-Release ausgeführt wird.
Dies ist die Compute-Instanz, die Sie als Basis des benutzerdefinierten Images verwenden.
Wenn noch keine geeignete Compute-Instanz vorhanden ist, befolgen Sie die Anweisungen unter Instanz erstellen in der Compute-Servicedokumentation, um jetzt eine geeignete Compute-Instanz zu erstellen.
- Befolgen Sie die Anweisungen unter Benutzerdefinierte Images verwalten in der Compute-Servicedokumentation, um ein benutzerdefiniertes Image basierend auf der vorhandenen Compute-Instanz zu erstellen, auf der das erforderliche Ubuntu-Release ausgeführt wird.
- Notieren Sie sich die OCID des von Ihnen erstellten benutzerdefinierten Images.
Schritt 2: URL zum Herunterladen eines Ubuntu-Knotenpackages erstellen
In diesem Schritt erstellen Sie die URL, aus der das von Oracle bereitgestellte Ubuntu-Knotenpackage heruntergeladen werden soll.
Die Download-URL hängt von dem Ubuntu-Release und der Kubernetes-Version ab, die Sie auf Worker-Knoten benötigen. Die Download-URL enthält den Object Storage-Speicherort sowie Details zum jeweiligen Ubuntu-Release und zur Kubernetes-Version.
Beachten Sie, dass die auf Control-Plane-Knoten und auf Worker-Knoten (einschließlich selbstverwalteter Knoten) ausgeführten Kubernetes-Versionen kompatibel sein müssen, wie in der Support-Policy für Kubernetes-Versionsskew in der Kubernetes-Dokumentation beschrieben. Es liegt in Ihrer Verantwortung, die Download-URL für ein Knotenpackage zu erstellen, das eine kompatible Kubernetes-Version enthält. Die Kubernetes-Engine prüft nicht, ob die Kubernetes-Version im angegebenen Knotenpackage mit der Kubernetes-Version kompatibel ist, die auf den Control-Plane-Knoten des Clusters ausgeführt wird.
Erstellen Sie die Download-URL wie folgt:
- Öffnen Sie eine neue Textdatei in Ihrem bevorzugten Texteditor.
- Erstellen Sie die Download-URL wie folgt:
https://objectstorage.us-sanjose-1.oraclecloud.com/p/45eOeErEDZqPGiymXZwpeebCNb5lnwzkcQIhtVf6iOF44eet_efdePaF7T8agNYq/n/odx-oke/b/okn-repositories-private/o/prod/<ubuntu-release>/<kubernetes-version> stable main
Hierbei gilt:
-
<ubuntu-release>
ist gemäß dem Release von Ubuntu, das Sie auf dem Worker-Knoten ausführen möchten, eine der folgenden Optionen:ubuntu-jammy
(22,04.Ubuntu)ubuntu-noble
(Ubuntu 24.04)
<kubernetes-version>
gehört gemäß der Nebenversion von Kubernetes, die Sie auf dem Worker-Knoten ausführen möchten, zu den folgenden Elementen:kubernetes-1.27
kubernetes-1.28
kubernetes-1.29
kubernetes-1.30
kubernetes-1.31
kubernetes-1.32
kubernetes-1.33
Beispiel: Wenn Sie Ubuntu 22.04 und Kubernetes-Version 1.29 auf Worker-Knoten ausführen möchten, erstellen Sie die folgende Download-URL für das entsprechende Knotenpackage:
https://objectstorage.us-sanjose-1.oraclecloud.com/p/45eOeErEDZqPGiymXZwpeebCNb5lnwzkcQIhtVf6iOF44eet_efdePaF7T8agNYq/n/odx-oke/b/okn-repositories-private/o/prod/ubuntu-noble/kubernetes-1.29 stable main
-
- (Optional) Speichern Sie die Textdatei an einem geeigneten Ort, da Sie die Download-URL im nächsten Schritt benötigen.
Schritt 3: Erstellen Sie ein cloud-init-Skript, um das Ubuntu-Knotenpackage zu installieren und den Worker-Knoten zu booten
In diesem Schritt erstellen Sie ein cloud-init-Skript, um das von Oracle bereitgestellte Ubuntu-Knotenpackage herunterzuladen und zu installieren und den Worker-Knoten zu booten.
Beachten Sie, dass dem cloud-init-Skript eine andere Logik hinzugefügt werden muss, je nachdem, ob Sie Ubuntu auf verwalteten Knoten oder auf selbstverwalteten Knoten ausführen möchten.
Cloud-init-Skript für verwaltete Knoten erstellen
So erstellen Sie ein cloud-init-Skript zur Ausführung von Ubuntu auf verwalteten Knoten:
- Erstellen Sie eine neue cloud-init-Skriptdatei von Grund auf mit einem Dateityp, der von cloud-init (wie .yaml) unterstützt wird, und fügen Sie der Skriptdatei die folgende Logik hinzu:
#cloud-config apt: sources: oke-node: {source: 'deb [trusted=yes] <download-url>'} packages: - <oci-package-name> runcmd: - oke bootstrap
Hierbei gilt:
<download-url>
ist die URL, von der das im vorherigen Schritt erstellte Ubuntu-Knotenpackage heruntergeladen werden soll (siehe Schritt 2: URL zum Herunterladen eines Ubuntu-Knotenpackages erstellen). Beispiel:https://objectstorage.us-sanjose-1.oraclecloud.com/p/45eOeErEDZqPGiymXZwpeebCNb5lnwzkcQIhtVf6iOF44eet_efdePaF7T8agNYq/n/odx-oke/b/okn-repositories-private/o/prod/ubuntu-jammy/kubernetes-1.29 stable main
<oci-package-name>
ist laut der Nebenversion von Kubernetes, die Sie auf dem verwalteten Knoten ausführen möchten, eine der folgenden:oci-oke-node-all-1.27.10
oci-oke-node-all-1.28.10
oci-oke-node-all-1.29.1
oci-oke-node-all-1.30.10
oci-oke-node-all-1.31.1
oci-oke-node-all-1.32.1
oci-oke-node-all-1.33.0
Die Nebenversion von Kubernetes muss mit der Nebenversion von Kubernetes übereinstimmen, die Sie beim Erstellen der Download-URL angegeben haben (siehe Schritt 2: URL zum Herunterladen eines Ubuntu-Knotenpackages erstellen).
Beispiel: Wenn Sie Ubuntu 22.04 (Jammy) und Kubernetes-Version 1.29.1 auf verwalteten Knoten ausführen möchten, fügen Sie der Skriptdatei die folgende Logik hinzu:
#cloud-config apt: sources: oke-node: {source: 'deb [trusted=yes] https://objectstorage.us-sanjose-1.oraclecloud.com/p/45eOeErEDZqPGiymXZwpeebCNb5lnwzkcQIhtVf6iOF44eet_efdePaF7T8agNYq/n/odx-oke/b/okn-repositories-private/o/prod/ubuntu-jammy/kubernetes-1.29 stable main'} packages: - oci-oke-node-all-1.29.1 runcmd: - oke bootstrap
- Speichern Sie die cloud-init-Skriptdatei.
Cloud-init-Skript für selbstverwaltete Knoten erstellen
So erstellen Sie ein cloud-init-Skript zur Ausführung von Ubuntu auf selbstverwalteten Knoten:
- Befolgen Sie die Anweisungen unter Cloud-init-Skripte für selbstverwaltete Knoten erstellen, um den privaten Kubernetes-API-Endpunkt des erweiterten Clusters abzurufen, dem Sie den selbstverwalteten Knoten mit der Konsole oder der CLI hinzufügen möchten.
- Befolgen Sie die Anweisungen unter Cloud-init-Skripte für selbstverwaltete Knoten erstellen, um das base64-codierte CA-Zertifikat des Clusters über die Konsole oder die CLI aus der kubeconfig-Datei des Clusters abzurufen.
- Erstellen Sie eine neue cloud-init-Skriptdatei von Grund auf mit einem Dateityp, der von cloud-init (wie .yaml) unterstützt wird, und fügen Sie der Skriptdatei die folgende Logik hinzu:
#cloud-config apt: sources: oke-node: {source: 'deb [trusted=yes] <download-url>'} packages: -
<oci-package-name>
write_files: - path: /etc/oke/oke-apiserver permissions: '0644' content: <cluster-endpoint> - encoding: b64 path: /etc/kubernetes/ca.crt permissions: '0644' content: <base64-encoded-certificate> runcmd: - oke bootstrap --ca <base64-encoded-certificate> --apiserver-host <cluster-endpoint>Hierbei gilt:
<download-url>
ist die URL, von der das im vorherigen Schritt erstellte Ubuntu-Knotenpackage heruntergeladen werden soll (siehe Schritt 2: URL zum Herunterladen eines Ubuntu-Knotenpackages erstellen). Beispiel:https://objectstorage.us-sanjose-1.oraclecloud.com/p/45eOeErEDZqPGiymXZwpeebCNb5lnwzkcQIhtVf6iOF44eet_efdePaF7T8agNYq/n/odx-oke/b/okn-repositories-private/o/prod/ubuntu-jammy/kubernetes-1.29 stable main
-
<oci-package-name>
gehört gemäß der Nebenversion von Kubernetes, die Sie auf dem selbstverwalteten Knoten ausführen möchten, zu den folgenden Elementen:oci-oke-node-all-1.27.10
oci-oke-node-all-1.28.10
oci-oke-node-all-1.29.1
oci-oke-node-all-1.30.10
oci-oke-node-all-1.31.1
oci-oke-node-all-1.32.1
oci-oke-node-all-1.33.0
Die Nebenversion von Kubernetes muss mit der Nebenversion von Kubernetes übereinstimmen, die Sie beim Erstellen der Download-URL angegeben haben (siehe Schritt 2: URL zum Herunterladen eines Ubuntu-Knotenpackages erstellen).
<cluster-endpoint>
ist die IP-Adresse des Kubernetes-API-Endpunkts des Clusters, den Sie zuvor abgerufen haben.<base64-encoded-certificate>
ist das base64-codierte CA-Zertifikat des Clusters, das Sie zuvor erhalten haben (abLS0t
).
Beispiel: Wenn Sie Ubuntu 22.04 (Jammy) und Kubernetes-Version 1.29.1 auf einem selbstverwalteten Knoten ausführen möchten, fügen Sie der Skriptdatei die folgende Logik hinzu:
#cloud-config apt: sources: oke-node: {source: 'deb [trusted=yes] https://objectstorage.us-sanjose-1.oraclecloud.com/p/45eOeErEDZqPGiymXZwpeebCNb5lnwzkcQIhtVf6iOF44eet_efdePaF7T8agNYq/n/odx-oke/b/okn-repositories-private/o/prod/ubuntu-jammy/kubernetes-1.29 stable main'} packages: - oci-oke-node-all-1.29.1 write_files: - path: /etc/oke/oke-apiserver permissions: '0644' content: 10.114.0.5 - encoding: b64 path: /etc/kubernetes/ca.crt permissions: '0644' content: LS0tLS1...LS0tCg== runcmd: - oke bootstrap --ca LS0tLS1...LS0tCg== --apiserver-host 10.114.0.5
- Speichern Sie die cloud-init-Skriptdatei.
Schritt 4: Worker-Knoten, auf denen Ubuntu ausgeführt wird, zu einem Cluster hinzufügen
In diesem Schritt verwenden Sie das zuvor erstellte cloud-init-Skript, um Worker-Knoten hinzuzufügen, auf denen Ubuntu ausgeführt wird, zu einem Kubernetes-Cluster hinzuzufügen.
Beachten Sie, dass unterschiedliche Anweisungen zu befolgen sind, je nachdem, ob Sie Ubuntu auf verwalteten Knoten oder auf selbstverwalteten Knoten ausführen möchten. Für verwaltete Knoten definieren Sie einen Pool für verwaltete Knoten. Bei selbstverwalteten Knoten fügen Sie Compute-Instanzen als Worker-Knoten hinzu.
Beachten Sie, dass Sie mit der CLI verwaltete Knoten basierend auf benutzerdefinierten Images erstellen müssen.
Ubuntu-Worker-Knoten als verwaltete Knoten hinzufügen
So fügen Sie verwaltete Knoten hinzu, auf denen Ubuntu in einem vorhandenen Cluster ausgeführt wird
- Öffnen Sie eine Eingabeaufforderung, und verwenden Sie den Befehl oci ce node-pool create, um einen neuen Knotenpool zu erstellen.
- Neben den obligatorischen Parametern, die für den Befehl erforderlich sind:
- Nehmen Sie den Parameter
--node-image-id
auf, und geben Sie die OCID des benutzerdefinierten Images an, das Sie in Schritt 1: Benutzerdefiniertes Image basierend auf einer vorhandenen Compute-Instanz erstellen, auf der das erforderliche Ubuntu-Release ausgeführt wird erstellt haben. - Nehmen Sie den Parameter
--node-metadata
auf, und geben Sie das cloud-init-Skript an, das Sie für verwaltete Knoten erstellt haben, in Schritt 3: Erstellen Sie ein cloud-init-Skript, um das Ubuntu-Knotenpackage zu installieren und den Worker-Knoten im entsprechenden Format für Ihre Umgebung zu booten:- Linux:
--node-metadata '{"user_data": "'$(cat <cloud-init-file> | base64 -w 0)'"}'
- Mac:
--node-metadata '{"user_data": "'$(cat <cloud-init-file> | base64- b 0)'"}'
Hierbei gilt:<cloud-init-file>
ist der Name der von Ihnen erstellten cloud-init-Datei.base64
gibt an, dass die Datei base64-codiert werden soll
- Linux:
Sie könnten den folgenden Befehl auf einem Mac-Arbeitsplatz eingeben:
oci ce node-pool create \ --cluster-id ocid1.cluster.oc1.iad.aaaa______m4w \ --name my-ubuntu-nodepool \ --node-image-id ocid1.image.oc1.iad.aaaa______zpq \ --compartment-id ocid1.tenancy.oc1..aaa______q4a \ --kubernetes-version v1.29.1 \ --node-shape VM.Standard2.1 \ --placement-configs "[{\"availabilityDomain\":\"PKGK:US-ASHBURN-AD-1\", \"subnetId\":\"ocid1.subnet.oc1.iad.aaaa______kfa\"}]" \ --size 3 \ --region us-ashburn-1 \ --node-metadata '{"user_data": "'$(cat my-mgd-ubuntu-cloud-init.yaml | base64 -b 0)'"}'
Beachten Sie, dass die mit dem Parameter
--kubernetes-version
angegebene Kubernetes-Version der Kubernetes-Version entsprechen muss, die Sie im cloud-init-Skript angegeben haben (siehe Schritt 3: Cloud-init-Skript erstellen, um das Ubuntu-Knotenpackage zu installieren und den Worker-Knoten zu booten). - Nehmen Sie den Parameter
Ubuntu-Worker-Knoten als selbstverwaltete Knoten hinzufügen
Bevor Sie einen selbstverwalteten Knoten erstellen, bestätigen Sie Folgendes:
- Das Cluster, dem Sie den selbstverwalteten Knoten hinzufügen möchten, ist entsprechend für selbstverwaltete Knoten konfiguriert. Siehe Clusteranforderungen.
- Eine dynamische Gruppe und eine IAM-Policy sind bereits vorhanden, damit die Compute-Instanz, die den selbstverwalteten Knoten hostet, einem erweiterten Cluster beitreten kann, das mit der Kubernetes-Engine erstellt wurde. Siehe Dynamische Gruppe und Policy für selbstverwaltete Knoten erstellen.
Konsole verwenden
- Erstellen Sie eine neue Compute-Instanz, um den selbstverwalteten Knoten zu hosten:
- Öffnen Sie das Navigationsmenü , und wählen Sie Compute aus. Wählen Sie unter Compute die Option Instanzen aus.
- Befolgen Sie die Anweisungen in der Compute-Servicedokumentation, um eine neue Compute-Instanz zu erstellen. Beachten Sie, dass geeignete Policys vorhanden sein müssen, damit die neue Compute-Instanz dem erweiterten Cluster beitreten kann. Siehe Dynamische Gruppe und Policy für selbstverwaltete Knoten erstellen.
- Klicken Sie im Abschnitt Image und Ausprägung auf Image ändern.
- Klicken Sie auf Meine Images, wählen Sie die Option Image-OCID aus, und geben Sie dann die OCID des benutzerdefinierten Images ein, das Sie in Schritt 1: Benutzerdefiniertes Image basierend auf einer vorhandenen Compute-Instanz erstellen, auf der das erforderliche Ubuntu-Release ausgeführt wird.
- Klicken Sie auf Erweiterte Optionen anzeigen, und wählen Sie auf der Registerkarte Management die Option Cloud-Init-Skript einfügen aus.
- Kopieren Sie das cloud-init-Skript, das Sie für selbstverwaltete Knoten erstellt haben, und fügen Sie es in Schritt 3: Erstellen Sie ein cloud-init-Skript, um das Ubuntu-Knotenpackage zu installieren, und booten Sie den Worker-Knoten in das Feld Cloud-init-Skript.
- Klicken Sie auf Erstellen, um die Compute-Instanz zum Hosten des selbstverwalteten Knotens zu erstellen.
Wenn die Compute-Instanz erstellt wird, wird sie dem Cluster mit dem Kubernetes-API-Endpunkt, den Sie im cloud-init-Skript angegeben haben, als selbstverwalteter Knoten hinzugefügt.
- (Optional) Prüfen Sie, ob der selbstverwaltete Knoten zum Kubernetes-Cluster hinzugefügt wurde und ob Labels dem Knoten hinzugefügt und wie erwartet festgelegt wurden. Befolgen Sie dazu die Anweisungen unter Selbstverwaltete Knoten erstellen.
CLI verwenden
- Öffnen Sie eine Eingabeaufforderung, und geben Sie den Befehl
oci Compute instance launch
und die erforderlichen Parameter ein, um einen selbstverwalteten Knoten zu erstellen. - Neben den obligatorischen Parametern, die für den Befehl erforderlich sind:
- Nehmen Sie den Parameter
--image-id
auf, und geben Sie die OCID des benutzerdefinierten Images an, das Sie in Schritt 1: Benutzerdefiniertes Image basierend auf einer vorhandenen Compute-Instanz erstellen, auf der das erforderliche Ubuntu-Release ausgeführt wird erstellt haben. - Nehmen Sie den Parameter
--user-data-file
auf, und geben Sie das cloud-init-Skript an, das Sie für selbstverwaltete Knoten erstellt haben, in Schritt 3: Erstellen Sie ein cloud-init-Skript, um das Ubuntu-Knotenpackage zu installieren und den Worker-Knoten zu booten.
Beispiel: Geben Sie den folgenden Befehl ein:
oci compute instance launch \ --availability-domain zkJl:PHX-AD-1 \ --compartment-id ocid1.compartment.oc1..aaaaaaa______neoq \ --shape VM.Standard2.2 \ --subnet-id ocid1.subnet.oc1.phx.aaaaaaa______hzia \ --user-data-file my-selfmgd-ubuntu-cloud-init.yaml \ --image-id ocid1.image.oc1.phx.aaaaaaa______slcr
Wenn die Compute-Instanz erstellt wird, wird sie dem Cluster mit dem Kubernetes-API-Endpunkt, den Sie im cloud-init-Skript angegeben haben, als selbstverwalteter Knoten hinzugefügt.
- Nehmen Sie den Parameter