Hinweis:

ock-forge mit Oracle Cloud Native Environment verwenden

Einführung

Das Tool Oracle Container Host for Kubernetes Image Builder (OCK Image Builder) erstellt die Oracle Container Host for Kubernetes-(OCK-)Images, die in Oracle Cloud Native Environment-(Oracle CNE-)Deployments verwendet werden. OCK Image Builder hilft, wenn das von Oracle CNE verwendete Standard-OCK-Image Ihre Anforderungen nicht erfüllt, wie z.B.:

OCK Image Builder ist eine Sammlung von Shellskripten, wobei die primäre ock-forge ist, um ein bootfähiges Image im qcow2-Format zu generieren, um die Clusterknoten zu erstellen, oder ein OSTree-Containerimage, mit dem Oracle CNE Knoten in einem ausgeführten Container aktualisieren kann.

Ziele

In diesem Tutorial lernen Sie Folgendes:

Voraussetzungen

Oracle Cloud Native Environment bereitstellen

Hinweis: Wenn Sie in Ihrem eigenen Mandanten ausgeführt werden, lesen Sie das Projekt linux-virt-labs GitHub README.md, und schließen Sie die Voraussetzungen ab, bevor Sie die Übungsumgebung bereitstellen.

  1. Öffnen Sie ein Terminal auf dem Luna Desktop.

  2. Klonen Sie das Projekt linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Wechseln Sie in das Arbeitsverzeichnis.

    cd linux-virt-labs/ocne2
    
  4. Installieren Sie die erforderlichen Collections.

    ansible-galaxy collection install -r requirements.yml
    
  5. Erhöhen Sie die Boot-Volume-Größe, installieren Sie libvirt, und verwenden Sie Oracle Linux 9.

    cat << EOF | tee instances.yml > /dev/null
    compute_instances:
      1:
        instance_name: "ocne"
        type: "server"
        instance_ocpus: 8
        instance_memory: 128
        boot_volume_size_in_gbs: 256
    ocne_type: "libvirt"
    install_ocne_rpm: true
    update_all: true
    os_version: "9"
    EOF
    

    Hinweis: OCK Image Builder funktioniert am besten mit Oracle Linux 9.

  6. Stellen Sie die Übungsumgebung bereit.

    Installation mit benutzerdefinierter Konfiguration.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
    

    Die kostenlose Übungsumgebung erfordert die zusätzliche Variable local_python_interpreter, die ansible_python_interpreter für Wiedergaben festlegt, die auf localhost ausgeführt werden. Diese Variable ist erforderlich, da die Umgebung das RPM-Package für das Oracle Cloud Infrastructure-SDK für Python installiert, das sich unter den python3.6-Modulen befindet.

    Die Standard-Deployment-Ausprägung verwendet die AMD-CPU und Oracle Linux 8. Um eine Intel-CPU oder Oracle Linux 9 zu verwenden, fügen Sie dem Deployment-Befehl -e instance_shape="VM.Standard3.Flex" oder -e os_version="9" hinzu.

    Wichtig: Warten Sie, bis die Arbeitsmappe erfolgreich ausgeführt wurde, und erreichen Sie die Aufgabe "Unterbrechen". In dieser Phase des Handbuchs ist die Installation von Oracle Cloud Native Environment abgeschlossen, und die Instanzen sind bereit. Beachten Sie die vorherige Wiedergabe, in der die öffentlichen und privaten IP-Adressen der bereitgestellten Knoten sowie alle anderen Deployment-Informationen gedruckt werden, die während der Ausführung der Übung benötigt werden.

Oracle Container Host für Kubernetes Builder installieren

Oracle Container Host for Kubernetes Builder (ock-forge) ist ein Befehlszeilentool zum Erstellen von OSTree-basierten Images von Oracle Container Host for Kubernetes (OCK). ock-forge kann Images virtueller Maschinen im Format qcow2, Raw-Datenträgerimages oder direkt in ein vorhandenes Blockgerät schreiben. Dieses Tutorial zeigt, wie Sie ein benutzerdefiniertes .qcow2-Image erstellen und verwenden.

  1. Öffnen Sie ein Terminal, und stellen Sie eine SSH-Verbindung zur OCNE-Instanz her.

    ssh oracle@<ip_address_of_node>
    
  2. Installieren Sie Git und Podman.

    sudo dnf install -y git container-tools
    

    Das Programm ock-forge erfordert Podman und klont mit Git die Repositorys ock-forge und Oracle Container Host for Kubernetes Configuration(OCK Configuration) aus GitHub.

  3. Klonen Sie das Repository ock-forge.

    git clone https://github.com/oracle-cne/ock-forge
    
  4. Klonen Sie das Repository der OCK-Konfiguration.

    ock-forge verwendet die OCK-Konfigurationsbaumdateispezifikation für OCK, um ein Image zu erstellen.

    cd ock-forge/
    git clone https://github.com/oracle-cne/ock
    
    

OCK-Image erstellen

Als Nächstes erstellen Sie ein Netzwerkblockgerät, fügen dem zu erstellenden OCK-Image einige zusätzliche Linux-Packages hinzu und führen dann mit ock-forge alle zum Generieren eines bootfähigen OCK-Images erforderlichen Arbeiten aus.

Aktivieren eines Netzwerkblockgeräts

Das Network Block Device (NBD) wird von ock-forge verwendet, um das generierte .qcow2-Image zu mounten, damit Oracle CNE ein Kubernetes-Cluster erstellen kann.

  1. Laden Sie das NBD-Kernelmodul, und weisen Sie ihm acht Partitionen zu.

    sudo modprobe nbd max_part=8
    
  2. Bestätigen Sie, dass NBD-Geräte vorhanden sind.

    ls -l /dev/nbd*
    

    Beispielausgabe:

    [oracle@ocne ~]$ ls -l /dev/nbd*
    brw-rw----. 1 root disk 43,   0 Jan 15 13:55 /dev/nbd0
    brw-rw----. 1 root disk 43,  16 Jan 15 13:55 /dev/nbd1
    brw-rw----. 1 root disk 43, 160 Jan 15 13:55 /dev/nbd10
    brw-rw----. 1 root disk 43, 176 Jan 15 13:55 /dev/nbd11
    brw-rw----. 1 root disk 43, 192 Jan 15 13:55 /dev/nbd12
    brw-rw----. 1 root disk 43, 208 Jan 15 13:55 /dev/nbd13
    brw-rw----. 1 root disk 43, 224 Jan 15 13:55 /dev/nbd14
    brw-rw----. 1 root disk 43, 240 Jan 15 13:55 /dev/nbd15
    brw-rw----. 1 root disk 43,  32 Jan 15 13:55 /dev/nbd2
    brw-rw----. 1 root disk 43,  48 Jan 15 13:55 /dev/nbd3
    brw-rw----. 1 root disk 43,  64 Jan 15 13:55 /dev/nbd4
    brw-rw----. 1 root disk 43,  80 Jan 15 13:55 /dev/nbd5
    brw-rw----. 1 root disk 43,  96 Jan 15 13:55 /dev/nbd6
    brw-rw----. 1 root disk 43, 112 Jan 15 13:55 /dev/nbd7
    brw-rw----. 1 root disk 43, 128 Jan 15 13:55 /dev/nbd8
    brw-rw----. 1 root disk 43, 144 Jan 15 13:55 /dev/nbd9
    

OCK-Image-Build anpassen

Sie können zusätzliche Linux-Packages definieren, die dem von ock-forge erstellten OCK-Image hinzugefügt werden sollen. Die von OCK-forge verwendete Baumdateispezifikation befindet sich im Repository GitHub OCK-Konfiguration.

  1. Erstellen Sie ein Verzeichnis für die Anpassungsdatei.

    mkdir /home/oracle/ock-forge/ock/configs/config-1.31/custom
    
  2. Erstellen Sie eine Anpassungsdatei, um die Vim- und Emacs-Packages zu installieren.

    cat << EOF | tee /home/oracle/ock-forge/ock/configs/config-1.31/custom/myconfig.yaml > /dev/null
    packages:
    - vim
    - emacs
    EOF
    
  3. Nehmen Sie die Anpassungsdatei in die Datei manifest.yaml auf.

    Hinweis: Sie können der Kubernetes-Konfigurationsdatei zusätzliche Anpassungen für den angestrebten Kubernetes-Build hinzufügen.

    sed -i '23i - custom/myconfig.yaml' /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
    
  4. Vergewissern Sie sich, dass die neue Anpassungsdatei in der OCK-Image-Build-Sequenz angezeigt wird, die in der Datei manifest.yaml definiert ist.

    cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
    

    Beispielausgabe:

    [oracle@ocne ock-forge]$ cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
    ref: ock
    automatic-version-prefix: "1.31"
    
    documentation: false
    boot-location: modules
    machineid-compat: false
    ...
    ...
    include:
    - base.yaml
    - ux.yaml
    - ocne.yaml
    - removals.yaml
    - config.yaml
    - custom/myconfig.yaml
    ...
    ...
    modules:
      enable:
        - container-tools:ol8
        - virt:kvm_utils3
    

OCK-Image erstellen

  1. Verwenden Sie ock-forge, um das qcow2-Image zu erstellen.

    sudo ./ock-forge -d /dev/nbd0 -D out/1.31/boot.qcow2 -i container-registry.oracle.com/olcne/ock-ostree:1.31 -O ./out/1.31/archive.tar -C ./ock -c configs/config-1.31 -P
    

    Dabei gilt:

    • -d: Der Pfad zu einem vorhandenen Block-Device.
    • -D: Der Pfad zur Datenträgerimagedatei.
    • -i: Ein vollqualifizierter Containerimagename, einschließlich eines Tags.
    • -C: Ein Verzeichnis, das eine Gruppe von rpm-ostree-Konfigurationen enthält.
    • -c: Ein Verzeichnis mit der zu erstellenden rpm-ostree-Konfiguration.
    • -P: Bei Verwendung dieses Flags wird das mit -d angegebene Block-Device dazu veranlasst, seine Partitionstabelle zu löschen und mit der Standardgeometrie neu zu füllen.
  2. Drücken Sie die Eingabetaste, um die Standardcontainerregistrierung (container-registry.oracle.com/ock-builder:latest) zu übernehmen.

    Hinweis: Der Build-Prozess dauert etwa 30 Minuten.

    Beispielausgabe:

    [oracle@ocne ock-forge]$ sudo ./ock-forge -d /dev/nbd0 -D out/1.31/boot.qcow2 -i container-registry.oracle.com/olcne/ock-ostree:1.31 -O ./out/1.31/archive.tar -C ./ock -c configs/config-1.31 -P
    + [[ -z '' ]]
    + [[ -z '' ]]
    + IGNITION_PROVIDER=qemu
    + [[ -n out/1.31/boot.qcow2 ]]
    ++ realpath -m out/1.31/boot.qcow2
    + DISK=/home/oracle/ock-forge/out/1.31/boot.qcow2
    ...
    ...
    + podman image exists ock-builder:latest
    + podman pull ock-builder:latest
    ? Please select an image: 
      ▸ container-registry.oracle.com/ock-builder:latest
        docker.io/library/ock-builder:latest
    

OCK-Image ändern

Nach Abschluss des OCK-Image-Build-Prozesses können Sie Benutzer erstellen, Dateien erstellen, das Netzwerk konfigurieren, systemd-Einheiten definieren und vieles mehr mit Butane-Konfigurations-YAML-Dateien, die dem Butane-Schema entsprechen, in der Datei qcow2 speichern. Weitere Details finden Sie in der Upstream-Dokumentation zu Butane.

Als Nächstes erstellen Sie eine Butan-konforme YAML-Datei, um eine Textdatei zu erstellen und einen neuen Benutzer einzurichten.

Standardkonfiguration verwenden

Sie haben zwei Möglichkeiten, Anpassungen anzuwenden:

Die folgenden Schritte zeigen, wie Sie Ihre Anpassung als Standard für alle von Ihnen erstellten Oracle CNE-Cluster festlegen.

  1. Erstellen Sie das Verzeichnis .ocne.

    mkdir /home/oracle/.ocne
    
  2. Fügen Sie die Datei defaults.yaml hinzu.

    cat << EOF | tee /home/oracle/.ocne/defaults.yaml > /dev/null
    extraIgnitionInline: |
      variant: fcos
      version: 1.5.0
      storage:
        files:
          - path: /etc/myfile.txt
            contents:
              inline: Hello, world!
            mode: 0644
            user:
              id: 1000
            group:
              id: 1001
    EOF
    

    Wobei (weitere Informationen finden Sie in der upstream-Dokumentation):

    • variant: - Muss für die Verwendung mit Oracle CNE auf fcos gesetzt werden
    • version: - Muss für die Verwendung mit Oracle CNE auf 1.5.0 gesetzt werden
    • path:: /etcmyfile.txt (Pfad und Dateiname der erstellten Datei)
    • mode: – Setzen Sie diesen Wert auf: 644 (Sie haben gelesen und geschrieben, dass alle anderen die Datei nur lesen können)
    • user: und group:: Weisen Sie der angegebenen UID und GID die Dateieigentümerschaft zu. In diesem Beispiel wird die UID und GID ocne festgelegt.
  3. Bestätigen Sie die erstellte Datei.

    cat /home/oracle/.ocne/defaults.yaml
    

Testen Sie das neue OCK-Image, das von OCK-forge erstellt wurde.

  1. Kopieren Sie das .qcow2-Image in die Oracle CNE-Installation.

    sudo cp /home/oracle/ock-forge/out/1.31/boot.qcow2 /var/lib/libvirt/images/boot.qcow2-1.31
    
  2. Bestätigen Sie, dass das Image .qcow2 kopiert wurde.

    sudo ls /var/lib/libvirt/images
    
  3. Starten Sie Oracle CNE mit dem Image .qcow2.

    ocne cluster start --version 1.31 -n 1 -w 1 -u false
    

    Beispielausgabe:

    [oracle@ocne ock-forge]$ ocne cluster start --version 1.31 -n 1 -w 1 -u false
    INFO[2025-04-14T13:47:36Z] Creating new Kubernetes cluster with version 1.31 named ocne 
    INFO[2025-04-14T13:48:34Z] Waiting for the Kubernetes cluster to be ready: ok 
    INFO[2025-04-14T13:48:35Z] Installing core-dns into kube-system: ok 
    INFO[2025-04-14T13:48:36Z] Installing kube-proxy into kube-system: ok 
    INFO[2025-04-14T13:48:39Z] Installing kubernetes-gateway-api-crds into kube-system: ok 
    INFO[2025-04-14T13:48:39Z] Installing flannel into kube-flannel: ok 
    INFO[2025-04-14T13:48:40Z] Installing ui into ocne-system: ok 
    INFO[2025-04-14T13:48:41Z] Installing ocne-catalog into ocne-system: ok 
    INFO[2025-04-14T13:48:41Z] Kubernetes cluster was created successfully  
    INFO[2025-04-14T13:48:41Z] Post install information:
    
    To access the cluster from the VM host:
        copy /home/oracle/.kube/kubeconfig.ocne.vm to that host and run kubectl there
    To access the cluster from this system:
        use /home/oracle/.kube/kubeconfig.ocne.local
    To access the UI, first do kubectl port-forward to allow the browser to access the UI.
    Run the following command, then access the UI from the browser using via https://localhost:8443
        kubectl port-forward -n ocne-system service/ui 8443:443
    Run the following command to create an authentication token to access the UI:
        kubectl create token ui -n ocne-system 
    
  4. Prüfen Sie, ob das Cluster vorhanden ist.

    ocne cluster list
    
  5. Legen Sie die Umgebungsvariable kubeconfig für das neue Cluster fest.

    export KUBECONFIG=$(ocne cluster show -C ocne)
    
  6. Rufen Sie eine Liste der Clusterknoten ab.

    kubectl get nodes
    
  7. Stellen Sie eine Verbindung zum Worker-Knoten her.

    ocne cluster console --direct --node ocne-worker-1
    
  8. Prüfen Sie, ob die Datei myfile.txt vorhanden ist.

    ls -lsa /etc/myfile.txt
    

    Beispielausgabe:

    sh-4.4# ls -lsa /etc/myfile.txt
    4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:51 /etc/myfile.txt
    
  9. Bestätigen Sie die Installation des Packages emacs.

    ls /bin/emacs
    

    Beispielausgabe:

    sh-4.4# ls /bin/emacs
    /bin/emacs
    
  10. Geben Sie exit ein, um den Knoten ocne-worker-1 zu verlassen.

  11. Stellen Sie eine Verbindung zum Control-Plane-Knoten her.

    ocne cluster console --direct --node ocne-control-plane-1
    
  12. Prüfen Sie, ob die Datei myfile.txt vorhanden ist.

    ls /etc/myfile.txt
    

    Beispielausgabe:

    sh-4.4# ls -lsa /etc/myfile.txt
    4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:50 /etc/myfile.txt
    
  13. Bestätigen Sie die Installation des Packages emacs.

    ls /bin/emacs
    

    Beispielausgabe:

    sh-4.4# ls /bin/emacs
    /bin/emacs
    

    Bestätigen Sie, dass Sie die Standard-Oracle CNE-Clusterknoten angepasst haben, indem Sie eine Textdatei (/etc/myfile.txt) und ein Package (emacs) hinzufügen, die standardmäßig nicht vorhanden sind.

  14. Geben Sie exit ein, um den Knoten ocne-control-plane-1 zu verlassen.

Cluster entfernen

  1. Löschen Sie das Cluster.

    ocne cluster delete
    
  2. Löschen Sie die Datei defaults.yaml.

    rm /home/oracle/.ocne/defaults.yaml
    

Konfiguration eines einzelnen Clusters aktualisieren

Als Nächstes erstellen Sie eine Anpassungsdatei und wenden sie auf ein einzelnes Oracle CNE-Cluster an.

  1. Erstellen Sie eine Konfigurationsdatei.

    cat << EOF | tee /home/oracle/myconfig.yaml > /dev/null
    provider: libvirt
    headless: true
    name: ocne
    kubernetesVersion: 1.31
    controlPlaneNodes: 1
    workerNodes: 1
    
    extraIgnitionInline: |
      variant: fcos
      version: 1.5.0
      storage:
        files:
          - path: /etc/myfile.txt
            contents:
              inline: Hello, world!
            mode: 0644
            user:
              id: 1000
            group:
              id: 1001
    EOF
    
  2. Bestätigen Sie die erstellte Datei.

    cat /home/oracle/myconfig.yaml
    
  3. Starten Sie Oracle CNE mit dem Image .qcow2.

    ocne cluster start -u false -c /home/oracle/myconfig.yaml
    

    Beispielausgabe:

    [oracle@ocne ~]$ ocne cluster start -u false -c /home/oracle/myconfig.yaml 
    INFO[2025-04-15T18:07:00Z] Creating new Kubernetes cluster with version 1.31 named ocne 
    INFO[2025-04-15T18:08:14Z] Waiting for the Kubernetes cluster to be ready: ok 
    INFO[2025-04-15T18:08:16Z] Installing core-dns into kube-system: ok 
    INFO[2025-04-15T18:08:16Z] Installing kube-proxy into kube-system: ok 
    INFO[2025-04-15T18:08:19Z] Installing kubernetes-gateway-api-crds into kube-system: ok 
    INFO[2025-04-15T18:08:20Z] Installing flannel into kube-flannel: ok 
    INFO[2025-04-15T18:08:20Z] Installing ocne-catalog into ocne-system: ok 
    INFO[2025-04-15T18:08:20Z] Kubernetes cluster was created successfully  
    INFO[2025-04-15T18:08:20Z] Post install information:
    
    To access the cluster from the VM host:
        copy /home/oracle/.kube/kubeconfig.ocne.vm to that host and run kubectl there
    To access the cluster from this system:
        use /home/oracle/.kube/kubeconfig.ocne.local 
    
  4. Legen Sie die Umgebungsvariable kubeconfig für das neue Cluster fest.

    export KUBECONFIG=$(ocne cluster show -C ocne)
    
  5. Rufen Sie eine Liste der Clusterknoten ab.

    kubectl get nodes
    
  6. Stellen Sie eine Verbindung zum Worker-Knoten her.

    ocne cluster console --direct --node ocne-worker-1
    
  7. Prüfen Sie, ob die Datei myfile.txt vorhanden ist.

    ls -lsa /etc/myfile.txt
    
  8. Bestätigen Sie die Installation des Packages emacs.

    ls /bin/emacs
    
  9. Geben Sie exit ein, um den Knoten ocne-worker-1 zu verlassen.

  10. Stellen Sie eine Verbindung zum Control-Plane-Knoten her.

    ocne cluster console --direct --node ocne-control-plane-1
    
  11. Prüfen Sie, ob die Datei myfile.txt vorhanden ist.

    ls -lsa /etc/myfile.txt
    
  12. Bestätigen Sie die Installation des Packages emacs.

    ls /bin/emacs
    

    Bestätigen Sie, dass Sie die Standard-Oracle CNE-Clusterknoten angepasst haben, indem Sie eine Textdatei (/etc/myfile.txt) und ein Package (emacs) hinzufügen, die standardmäßig nicht vorhanden sind.

  13. Geben Sie exit ein, um den Knoten ocne-control-plane-1 zu verlassen.

Cluster entfernen

  1. Löschen Sie das Cluster.

    ocne cluster delete
    

Nächste Schritte

Durch Anpassen der OCK-Imagedateien von Oracle CNE können Sie die Umgebung ändern, die auf Ihren Oracle CNE Kubernetes-Clusterknoten verwendet wird. Erweitern Sie Ihr Wissen über Kubernetes und Oracle Cloud Native Environment weiter, indem Sie sich unsere anderen Tutorials ansehen, die in der Oracle Linux-Schulungsstation veröffentlicht wurden.

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.