Hinweis:

Externen Load Balancer mit Oracle Cloud Native Environment bereitstellen

Einführung

Oracle Cloud Native Environment ist eine vollständig integrierte Suite für die Entwicklung und Verwaltung von cloud-nativen Anwendungen. Das Kubernetes-Modul ist das Core-Modul. Es wird zur Bereitstellung und Verwaltung von Containern verwendet und installiert und konfiguriert außerdem CRI-O-, runC- und Kata-Container automatisch. CRI-O verwaltet die Containerlaufzeit für ein Kubernetes-Cluster. Die Laufzeit kann runC oder Kata Containers sein.

Ziele

In dieser Übung erfahren Sie, wie Sie die folgenden Aktionen durchführen:

Supporthinweis: Verwenden Sie einen externen Load Balancer, wie den für Produktions-Deployments empfohlenen IS von Oracle Cloud Instructure Load Balancer.

Voraussetzungen

In diesem Abschnitt werden die Hostsysteme aufgeführt, auf denen die Schritte in diesem Tutorial ausgeführt werden. Sie benötigen:

Übungsumgebung einrichten

Hinweis: Bei Verwendung der kostenlosen Übungsumgebung finden Sie unter Oracle Linux Lab - Grundlagen weitere Anweisungen zur Verbindung und Verwendung.

Diese Übung umfasst mehrere Systeme, die jeweils unterschiedliche Schritte erfordern. Es wird empfohlen, zunächst ein Terminalfenster oder eine Registerkarte zu öffnen und eine Verbindung zu den folgenden Knoten herzustellen. Dadurch müssen Sie sich nicht wiederholt anmelden und abmelden. Die Knoten sind:

  1. Öffnen Sie ein Terminal, und verbinden Sie sich über SSH mit jedem der Knoten.

    ssh oracle@<ip_address_of_ol_node>
    

Load Balancer einrichten (optional)

Hinweis: Wenn Sie die freie Laborumgebung verwenden, sind die in diesem Abschnitt beschriebenen Schritte nicht erforderlich, da sie in der ersten Deployment-Phase der Übung abgeschlossen wurden. Stattdessen müssen Luna Lab-Benutzer direkt mit der nächsten Seite fortfahren: CLI-Konfigurationsdatei für Plattform erstellen und von dort fortfahren. Andernfalls werden die Details zur Konfiguration für Benutzer angegeben, die diese Schritte in ihrem eigenen Oracle Cloud Infrastructure-Mandanten replizieren möchten.

Oracle Cloud Infrastructure-Load Balancer erstellen

  1. Melden Sie sich bei der Cloud-Konsole an.

    public_ip_address

  2. Klicken Sie oben links auf das Hamburger-Menü und dann auf Networking und Load Balancer.

    public_ip_address

  3. Die Seite Load Balancer wird angezeigt.

    public_ip_address

  4. Suchen Sie das verwendete Compartment in der Dropdown-Liste.

    public_ip_address

  5. Klicken Sie auf die Schaltfläche Load Balancer erstellen.

    public_ip_address

  6. Klicken Sie im Popup-Dialogfeld auf die Schaltfläche Load Balancer erstellen, um den Standard-Load-Balancer-Typ auszuwählen.

    public_ip_address

Load Balancer-Details aktualisieren

  1. Suchen Sie den Standardabschnitt Sichtbarkeitstyp, und klicken Sie auf die Option Privat.

    public_ip_address

  2. Scrollen Sie auf der Seite weiter nach unten zum Abschnitt Networking auswählen.

  3. Wählen Sie den im Dropdown-Listenfeld angegebenen Wert für Visuelles Cloud-Netzwerk und Subnetz aus.

    Hinweis: Die im Bild angezeigten Werte werden bei jedem Start der Übung unterschiedlich sein.

    public_ip_address

  4. Klicken Sie auf Weiter, um zum nächsten Schritt zu gehen.

Load Balancer Policy und Protokoll festlegen

  1. Legen Sie nun die Load Balancing Policy und das Health Check Protocol fest.

    • Übernehmen Sie die Standardeinstellung Load Balancing Policy mit dem Wert Weighted Round Robin.
  2. Geben Sie im Abschnitt Health Check Policy angeben die angezeigten Einstellungen ein.

    • Wählen Sie unter Protokoll die Option TCP aus.
    • Ändern Sie den Wert für Port von 80 in 6443.

    public_ip_address

Backend-Knoten hinzufügen

  1. Klicken Sie auf Backends hinzufügen, um ein Fenster anzuzeigen.

    public_ip_address

  2. Wählen Sie die folgenden Knoten aus, und klicken Sie auf die Schaltfläche Ausgewählte Backends hinzufügen.

    • ocne-control01
    • ocne-control02
    • ocne-control03
  3. Aktualisieren Sie die Spalte Port für jeden der neu ausgewählten Backend-Server vom Standardwert 80 in 6443.

    public_ip_address

  4. Klicken Sie auf die Schaltfläche Weiter, um mit dem nächsten Schritt fortzufahren.

Load Balancer Listener konfigurieren

  1. Wählen Sie die Schaltfläche TCP.

  2. Ändern Sie den Port für Ingress-Traffic von 443 zu 6443

    Die eingegebenen Werte sollten wie in diesem Bild aussehen.

    public_ip_address

  3. Klicken Sie auf die Schaltfläche Weiter.

Load Balancer Logging konfigurieren

  1. Der letzte Schritt beim Setup ist die Option Logging verwalten.

    public_ip_address

    Da für dieses Szenario keine Änderungen erforderlich sind, klicken Sie auf die Schaltfläche Weiterleiten, um den Load Balancer zu erstellen.

Load Balancer-Informationen

  1. Nach der Erstellung wird eine Übersichtsseite für den neu erstellten Load Balancer angezeigt.

    public_ip_address

    Hinweis: Die Abschnitte Gesamtzustand und Zustand der Backend-Sets sind möglicherweise nicht als OK (Grün) dargestellt. Das liegt daran, dass Oracle Cloud Native Environment noch nicht auf der Kubernetes-Control Plane und den Worker-Knoten erstellt wurde. In den nächsten Schritten geht es darum.

Plattform-CLI-Konfigurationsdatei erstellen

Administratoren können eine Konfigurationsdatei verwenden, um das Erstellen und Verwalten von Umgebungen und Modulen zu vereinfachen. Die in einer gültigen YAML-Syntax geschriebene Konfigurationsdatei enthält alle Informationen über die zu erstellenden Umgebungen und Module. Mit einer Konfigurationsdatei werden wiederholte Einträge der CLI-Befehlsoptionen der Plattform gespeichert.

Hinweis: Wenn mehrere Control-Plane-Knoten in myenvironment.yaml zur Konfiguration von Oracle Cloud Native Environment eingegeben werden, erfordert olcnectl, dass Details eines Load Balancers (in unserem Fall Oracle Cloud Infrastructure Load Balancer) in die Datei myenvironment.yaml eingegeben werden. Erzielen Sie dies, indem Sie ein neues Argument (load-balancer: <enter-your-OCI-LB-ip-here>) in myenvironment.yaml eingeben.

Beispielkonfigurationsdatei:

environments:
  - environment-name: myenvironment
    globals:
      api-server: 127.0.0.1:8091
      secret-manager-type: file
      olcne-ca-path: /etc/olcne/configs/certificates/production/ca.cert
      olcne-node-cert-path: /etc/olcne/configs/certificates/production/node.cert
      olcne-node-key-path:  /etc/olcne/configs/certificates/production/node.key
    modules:
      - module: kubernetes
        name: mycluster
        args:
          container-registry: container-registry.oracle.com/olcne
          load-balancer: 10.0.0.<XXX>:6443
          master-nodes: ocne-control01:8090,ocne-control02:8090,ocne-control03:8090
          worker-nodes: ocne-worker01:8090,ocne-worker02:8090
          selinux: enforcing
          restrict-service-externalip: true
          restrict-service-externalip-ca-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/ca.cert
          restrict-service-externalip-tls-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/node.cert
          restrict-service-externalip-tls-key: /etc/olcne/configs/certificates/restrict_external_ip/production/node.key

Während des Deployments der Übung wird automatisch eine Konfigurationsdatei generiert und kann in der Übung verwendet werden. Weitere Informationen zum manuellen Erstellen einer Konfigurationsdatei finden Sie in der Dokumentation unter Using a Configuration File.

Aktualisieren Sie die Konfigurationsdatei.

  1. (Auf ocne-operator) Zeigen Sie den Inhalt der Konfigurationsdatei an.

    cat ~/myenvironment.yaml
    
  2. (Unter ocne-operator) Fügen Sie den Adresswert für Load Balancer IPv4 zur Datei myenvironment.yaml hinzu.

    LB_IP=$(oci lb load-balancer list --auth instance_principal --compartment-id $COMPARTMENT_OCID | jq -r '.data[]."ip-addresses"[]."ip-address"')
    sed -i "14i\          load-balancer: $LB_IP:6443" ~/myenvironment.yaml
    

    Damit der obige Befehl erfolgreich ausgeführt wird, müssen die folgenden vorbereitenden Schritte auf dem Operatorknoten ausgeführt werden. Diese Schritte werden im Rahmen der Bereitstellung der kostenlosen Übung für Sie ausgeführt.

    • Oracle Cloud Infrastructure-CLI wurde installiert.

    • Suchen Sie die OCID des Compartments, in dem Oracle Cloud Native Environment bereitgestellt wird.

    • Diese Umgebungsvariablen wurden der Datei ~/.bashrc des Benutzers hinzugefügt.

      • COMPARTMENT_OCID=<compartment_ocid>
      • LC_ALL=C.UTF-8
      • LANG=C.UTF-8
  3. (Bei ocne-operator) Vergewissern Sie sich, dass der Load Balancer-Wert zur Datei myenviroment.yaml hinzugefügt wurde.

    cat ~/myenvironment.yaml
    

Umgebung und Kubernetes-Modul erstellen

  1. (Bei ocne-operator) Erstellen Sie die Umgebung.

    cd ~
    olcnectl environment create --config-file myenvironment.yaml
    

    Beispielausgabe:

    [oracle@ocne-operator ~]$ olcnectl environment create --config-file myenvironment.yaml
    Environment myenvironment created.
    
  2. (Auf ocne-operator) Erstellen Sie das Kubernetes-Modul.

    olcnectl module create --config-file myenvironment.yaml
    

    Beispielausgabe:

    [oracle@ocne-operator ~]$ olcnectl module create --config-file myenvironment.yaml
    Modules created successfully.
    
  3. (Auf ocne-operator) Validieren Sie das Kubernetes-Modul.

    olcnectl module validate --config-file myenvironment.yaml
    

    Beispielausgabe:

    [oracle@ocne-operator ~]$ olcnectl module validate --config-file myenvironment.yaml
    Validation of module mycluster succeeded.
    

    In dieser freien Übungsumgebung gibt es keine Validierungsfehler. Wenn Fehler auftreten, werden die Befehle, die zum Beheben der Knoten erforderlich sind, als Ausgabe dieses Befehls bereitgestellt.

  4. (Installieren Sie auf ocne-operator das Kubernetes-Modul.

    olcnectl module install --config-file myenvironment.yaml
    

    Hinweis: Das Deployment von Kubernetes auf den Knoten dauert einige Minuten.

    Beispielausgabe:

    [oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml
    Modules installed successfully.
    
  5. (Auf ocne-operator) Prüfen Sie das Deployment des Kubernetes-Moduls.

    olcnectl module instances --config-file myenvironment.yaml
    

    Beispielausgabe:

    [oracle@ocne-operator ~]$ olcnectl module instances --config-file myenvironment.yaml
    INSTANCE           	MODULE    	STATE    
    mycluster          	kubernetes	installed
    ocne-control01:8090	node      	installed
    ocne-control02:8090	node      	installed
    ocne-control03:8090	node      	installed
    ocne-worker01:8090 	node      	installed
    ocne-worker02:8090 	node      	installed
    [oracle@ocne-operator ~]$
    

kubectl einrichten

  1. (Richten Sie auf dem Knoten ocne-controlxx den Befehl kubectl ein.

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    export KUBECONFIG=$HOME/.kube/config
    echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
    
  2. (Unter sysop01) Richten Sie den Befehl kubectl ein.

    1. Kopieren Sie die Konfigurationsdatei von einem der Control-Plane-Knoten.

      mkdir -p $HOME/.kube
      ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
      
    2. Exportieren Sie die Konfiguration zur Verwendung durch den Befehl kubectl.

      sudo chown $(id -u):$(id -g) $HOME/.kube/config
      export KUBECONFIG=$HOME/.kube/config
      echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
      
  3. (Unter sysop01) Prüfen Sie, ob kubectl funktioniert.

    kubectl get nodes
    

    Beispielausgabe:

    [oracle@sysop01 ~]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE     VERSION
    ocne-control01   Ready    control-plane,master   5m10s   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   3m33s   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   4m29s   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 3m15s   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 3m8s    v1.23.7+1.el8
    [oracle@sysop01 ~]$
    

Bestätigen, dass der Load Balancer einen Control-Plane-Knotenausfall verwaltet

Die Installation von Oracle Cloud Native Environment mit drei Control-Plane-Knoten hinter einem externen Load-Balancer ist abgeschlossen.

Im nächsten Abschnitt wird bestätigt, dass der externe Load Balancer erkennt, wenn ein Control-Plane-Knoten ausfällt, und ihn aus der Trafficverteilungs-Policy Round Robin entfernt. Der letzte Testschritt zeigt, dass der Knoten, der "fehlende" wiederherstellt, automatisch wieder mit dem Cluster verbunden wird und wieder verfügbar wird, um clusterbasierten Traffic zu verarbeiten.

Bestätigen, dass der Load Balancer aktiv ist

Wenn Sie die kostenlose Übungsumgebung verwenden, melden Sie sich wie in der Dokumentation zu Oracle Linux-Übungen beschrieben bei der Cloud-Konsole an.

Auf die Load Balancer-Details zugreifen

  1. Melden Sie sich bei der Cloud-Konsole an, falls noch nicht geschehen.

    public_ip_address

  2. Klicken Sie oben links auf das Hamburger-Menü und dann auf Networking und Load Balancer.

    public_ip_address

  3. Daraufhin wird die Seite Load Balancer angezeigt.

    public_ip_address

  4. Suchen Sie das verwendete Compartment in der Dropdown-Liste.

    public_ip_address

    Wenn Sie Anweisungen zu diesem Schritt benötigen, finden Sie weitere Informationen unter Oracle Linux Lab - Grundlagen.

  5. Die im Voraus erstellten Details der Load Balancer-Zusammenfassung sollten diesem Image ähneln.

    public_ip_address

  6. Klicken Sie auf den Link ocne-load-balancer.

  7. Scrollen Sie nach unten zum Link Backend-Sets (links im Browser unter der Überschrift Ressourcen).

  8. Klicken Sie auf den Link Backend-Sets.

    public_ip_address

  9. Ein Link zum vorhandenen Backend-Set wird angezeigt. Klicken Sie auf den Link (in diesem Beispiel ocne-lb-backend-set).

    public_ip_address

  10. Klicken Sie auf den Link Backends (links im Browser unter der Überschrift Ressourcen).

    public_ip_address

  11. Auf dem Bildschirm wird bestätigt, dass drei fehlerfreie Knoten vorhanden sind.

    public_ip_address

Eine der Control-Plane-Knoteninstanzen stoppen

  1. Klicken Sie auf das Hamburger-Menü (oben links), und navigieren Sie zu Compute und dann zu Instanzen.

    public_ip_address

  2. Die Seite Instanzen wird angezeigt.

    public_ip_address

  3. Klicken Sie auf einen der aufgeführten Control-Plane-Knoten (Beispiel: ocne-control01).

  4. Die Instanzdetails werden angezeigt.

    public_ip_address

  5. Klicken Sie auf die Schaltfläche *Stoppen.

  6. Aktivieren Sie im Popup-Dialogfeld das Kontrollkästchen Stopp der Instanz durch sofortiges Ausschalten erzwingen, und klicken Sie dann auf die Schaltfläche Stopp der Instanz erzwingen.

    Hinweis: Führen Sie diesen Vorgang NICHT für ein Produktionssystem aus, da es zu Datenverlust, Beschädigung oder schlechterem Datenverlust im gesamten System führen kann.

    public_ip_address

  7. Warten Sie, bis auf der Seite "Instanzdetails" bestätigt wird, dass die Instanz Gestoppt ist.

    public_ip_address

Prüfen Sie, ob der Oracle Cloud Infrastructure Load Balancer den Fehler auf dem Control-Plane-Knoten registriert

  1. Navigieren Sie zu Networking > Load Balancer.

  2. Klicken Sie auf den Link ocne-load-balancer.

  3. Klicken Sie unter Ressourcen im unteren linken Bereich auf Backend-Sets.

  4. Klicken Sie anschließend auf den angezeigten Namen in der Tabelle Backend-Sets (Beispiel: ocne-lb-backend-set).

  5. Klicken Sie auf Backends, um die Knoten anzuzeigen.

    Der Status dieser Seite sollte automatisch aktualisiert werden. Die Änderung des angezeigten Status dauert in der Regel 2-3 Minuten.

  6. Die anfänglich gemeldete Phase muss den Status Warnung aufweisen.

    public_ip_address

  7. Einige Minuten später (~2-3 Minuten) wird der Status auf Kritisch aktualisiert. Das bedeutet, dass der Knoten vom Load Balancer-Prozess von Oracle Cloud Infrastructure als nicht reagiert. Daher leitet der Load Balancer eingehende Anforderungen nicht mehr an den nicht verfügbaren Backend-Kontrollplanknoten weiter.

    public_ip_address

Bestätigen Sie, dass das Oracle Cloud Native Environment-Cluster reagiert

Da mindestens zwei aktive Member im Cluster verbleiben, müssen die aktiven Control-Plane-Knoten auf kubectl-Befehle reagieren.

  1. (Bei sysop01) Stellen Sie sicher, dass kubectl reagiert und den Control-Plane-Knoten, der gerade gestoppt wurde, als NotReady (nicht verfügbar) meldet.

    kubectl get nodes
    

    Beispielausgabe:

    [oracle@sysop01 ~]$ kubectl get nodes
    NAME             STATUS     ROLES                  AGE   VERSION
    ocne-control01   NotReady   control-plane,master   26m   v1.23.7+1.el8
    ocne-control02   Ready      control-plane,master   25m   v1.23.7+1.el8
    ocne-control03   Ready      control-plane,master   24m   v1.23.7+1.el8
    ocne-worker01    Ready      <none>                 24m   v1.23.7+1.el8
    ocne-worker02    Ready      <none>                 26m   v1.23.7+1.el8
    [oracle@sysop01 ~]$
    

    Hinweis:* Es dauert wahrscheinlich 2 bis 3 Minuten, bis der Status **NotReady angezeigt wird. Wiederholen Sie den kubectl get nodes-Befehl in regelmäßigen Abständen, bis sich der Status von Bereit zu NotReady ändert.

Gestoppten Control-Plane-Knoten neu starten

  1. Navigieren Sie zu Compute > Instanzen.

  2. Klicken Sie auf den Knoten der Control Plane, der zuvor gestoppt wurde.

  3. Starten Sie die Instanz, indem Sie auf die Schaltfläche Starten klicken.

    Warten Sie, bis im Abschnitt "Status" Grün angezeigt wird, und bestätigen Sie, dass die Instanz Wird ausgeführt ist.

    public_ip_address

Prüfen, ob der Control-Plane-Knoten erneut mit dem Oracle Cloud Infrastructure-Load-Balancer-Cluster verknüpft wird

  1. Navigieren Sie zu Networking > Load Balancer.

  2. Klicken Sie auf den Link ocne-load-balancer.

  3. Klicken Sie unter Ressourcen im unteren linken Bereich auf Backend-Sets.

  4. Klicken Sie anschließend auf den angezeigten Namen in der Tabelle Backend-Sets (Beispiel: ocne-lb-backend-set).

  5. Klicken Sie auf Backends, um die Knoten anzuzeigen.

    Der Status dieser Seite sollte automatisch aktualisiert werden. Die Änderung des angezeigten Status dauert in der Regel 2-3 Minuten.

  6. Der Gesamtzustand zeigt den Status Warnung an, bis der neu gestartete Knoten erkannt wird.

    public_ip_address

  7. Nach der Erkennung meldet der Gesamtzustand OK.

    public_ip_address

In dieser Phase hat der Kontrollknoten erneut mit dem Cluster verknüpft, und alle drei Control-Plane-Knoten sind an der Round-Robin-Aufteilung des eingehenden Traffics zum Cluster beteiligt.

Control-Plane-Knotenstatus abrufen

  1. (Bei sysop01) Prüfen Sie, ob kubectl reagiert und den Knoten der Control Plane meldet, der neu gestartet wurde, hat den Status Ready (Verfügbar).

    kubectl get nodes
    

    Beispielausgabe:

    [oracle@sysop01 ~]$ kubectl get nodes
    NAME             STATUS     ROLES                  AGE   VERSION
    ocne-control01   Ready      control-plane,master   26m   v1.23.7+1.el8
    ocne-control02   Ready      control-plane,master   25m   v1.23.7+1.el8
    ocne-control03   Ready      control-plane,master   24m   v1.23.7+1.el8
    ocne-worker01    Ready      <none>                 24m   v1.23.7+1.el8
    ocne-worker02    Ready      <none>                 26m   v1.23.7+1.el8
    [oracle@sysop01 ~]$
    

    *Hinweis: Statusänderungen können 2-3 Minuten dauern, bevor der aktualisierte Status angezeigt wird. Wiederholen Sie den Befehl kubectl get nodes in regelmäßigen Abständen, bis sich der Status ändert.

    Dadurch wird bestätigt, dass der Load Balancer korrekt konfiguriert wurde und Anforderungen erfolgreich akzeptiert.

Weitere Informationen

Weitere Lernressourcen

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

Die Produktdokumentation finden Sie im Oracle Help Center.