Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
OCI-Kubernetes-Engine mit verschiedenen Kapazitätstypen verwalten und häufige Probleme auf präemptiven Knoten beheben
Einführung
Während wir jeden Zyklus der digitalen Transformation durchlaufen, werden Unternehmen weiterhin innovativ und iterativ sein und die Grenzen dessen, was für Infrastruktur, Anwendungen und Management in großem Maßstab möglich ist, erweitern. Eine der neueren und weit verbreiteten Technologien zur Unterstützung von Infrastruktur- und Anwendungsmanagement ist Kubernetes. Bevor wir uns weiter mit Kubernetes beschäftigen, müssen wir uns zunächst mit dem Konzept der Container befassen.
Container sind ein Softwarepaket, das eine Sammlung anwendungsspezifischen Codes sowie die erforderlichen Laufzeit- und Programmbibliotheken umfasst, um die zuverlässige Ausführung einer Anwendung zu unterstützen. Container sind so konfiguriert, dass sie in einem Benutzerbereich innerhalb des Betriebssystems (BS) des zugrunde liegenden Servers ausgeführt werden. Diese Architektur ermöglicht die Entkopplung von Coreservices und Abhängigkeiten beim leichten Deployment einer Anwendung. Zu den Vorteilen der Anwendungscontainerisierung gehören Verbesserungen bei Workload-Isolation, Ressourceneffizienz, Skalierbarkeit und Fehlertoleranz.
Um die Leistung und Effizienz von Containern in großem Maßstab zu nutzen, benötigen wir eine Art Tooling, um unsere containerbasierten Bereitstellungen zu koppeln oder zu verwalten. Kubernetes, auch als K8s bezeichnet, ist ein Open-Source-Containerorchestrierungstool, das die Containerbereitstellung automatisiert, indem ein Servercluster erstellt wird, für das Container ausgeführt, skaliert und an Ihre Benutzer geliefert werden können. Die Kubernetes-Clusterarchitektur umfasst einen Masterknoten (Control Plane) und mehrere Worker-Knoten. Jeder Worker hostet Pods (Collection of Containers), die Ihre Anwendung bereitstellen.
Ziele
- Arbeiten Sie mit der Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine oder OKE) für verschiedene Kapazitätstypen zusammen, und beheben Sie häufige Probleme bei präemptiven Faktoren.
Voraussetzungen
- Administratorzugriff auf einen ausgeführten OCI-Mandanten und OKE-Cluster.
Wie wird Oracle mit Containertechnologie positioniert?
OKE ist ein vollständig verwalteter, skalierbarer und hochverfügbarer Kubernetes-Service, mit dem Kunden containerisierte Anwendungen in der Cloud bereitstellen können. OKE gibt OCI-Kunden die Möglichkeit, die Compute-Ressourcenauslastung zu optimieren, um eindeutige Workload-Anforderungen zu erfüllen und sich schnell an sich ändernde Workload-Anforderungen anzupassen. OKE bietet eine nahtlose Kundenerfahrung, die Kunden ein beispielloses Preis-Leistungs-Verhältnis, Ressourceneffizienz, Portabilität und Zuverlässigkeit bietet. OKE bietet mehrere wichtige Integrationen mit verschiedenen Produkten für das Container Lifecycle Management, einschließlich Container-Registrys, CI/CD-Frameworks, Netzwerklösungen, Speicheroptionen und erstklassigen Sicherheitsfunktionen.
In OKE können Sie den Clustertyp entweder als Basiscluster oder als erweiterte Cluster angeben. Grundlegende Cluster unterstützen alle von OKE bereitgestellten Kernfunktionen. Um weitere Funktionen zu ermöglichen, unterstützen erweiterte Cluster alle verfügbaren Features, darunter virtuelle Knoten, selbstverwaltete Knoten, Cluster-Add-on-Verwaltung, granularere Oracle Cloud Infrastructure Identity and Access Management-(OCI IAM-)Konfigurationen usw.
OKE für verschiedene Kapazitätstypen
-
On-Demand-Kapazität: On-Demand-Kapazität ist die standardmäßige verfügbare Kapazität eines bestimmten Ausprägungstyps. Dies ist die Standardkapazitätsart und wird effektiv für Ihre Nutzung bezahlt. Dies ist zwar die Standardauswahl, je nach Ausprägungstyp und Timing kann es jedoch schwierig sein, diese Anforderungen für große Workloads mit mehreren Instanzen zu erfüllen.
-
Reservierte Kapazität: Kapazitätsreservierungen können zum Provisioning von OKE-verwalteten Knoten verwendet werden. Kapazitätsreservierungen werden im Allgemeinen verwendet, um während der Produktion genügend verfügbare Kapazität für geschäftskritische Workloads zu gewährleisten, die sich auf Ereignisse wie geplante Wartung, Wachstum der Benutzernachfrage und Disaster Recovery auswirken. Kapazitätsreservierungen verursachen Kosten von 85% des SKU-Listenpreises, während die reservierten Ressourcen nicht aktiv verwendet werden. Um eine Kapazitätsreservierung nutzen zu können, müssen Sie zuerst das Kapazitätsreservierungsobjekt erstellen und die Region/Availability-Domain sowie den Ausprägungstyp und die Größe angeben. Wenn Ihre Kapazitätsreservierung erstellt wurde, können Sie die spezifische Reservierung als Kapazitätstyp angeben, wenn Sie Knoten in Ihrem Knotenpool bereitstellen.
-
Präemptive Kapazität: OKE-verwaltete Knoten können jetzt mit präemptiven Compute-Ausprägungen bereitgestellt werden. Präemptive Ausprägungen können eine Quelle für Kosteneinsparungen sein (50% Rabatt vom SKU-Listenpreis). Oracle behält sich jedoch das Recht vor, diese Compute-Ressourcen zurückzufordern, wenn dies für einen Bedarf mit höherer Priorität erforderlich ist. Präemptives Computing kann eine gute Option sein, wenn Sie zustandslose fehlertolerante Workloads haben, die Unterbrechungen standhalten können. Zur Sichtbarkeit können Sie sich entscheiden, benachrichtigt zu werden, wenn eine Instanz beim Deployment präemptiver Compute-Auslastung beendet wird. Im OKE-Cluster versucht der erwartete Status des Knotenpools, eine oder mehrere neue Instanzen zu starten, um die freigegebenen Instanzen zu ersetzen.
OKE-Deployment mit präemptiven und OnDemand-Knotenpools
Bekannte Probleme mit präemptiven
Es gibt einige bekannte Probleme bei der Verwendung von präemptive mit OKE.
-
Problem: Einige Kunden erhalten den Fehler NonRetryable BmcException: Fehler, der vom Vorgang LaunchInstance im Compute-Service zurückgegeben wird. (400, InvalidParameter, false) Beim Erstellen der präemptiven Ausprägungen E3/E4 kann keine präemptive Instanz mit einer Kapazitätsreservierungs-ID gestartet werden.
- Lösung: Es gibt einen bekannten OKE-Bug mit leeren
<capacityreservationId>
- und präemptiven Worker-Knoten. Wenn Sie versuchen, präemptive Kapazität beim Erstellen eines Knotenpools über die Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI) oder Terraform zu verwenden, ohne den Parameter<capacityReservationId>
als Teil des Platzierungskonfigurationsabschnitts zu übergeben, können präemptive Worker-Knoten erstellt werden. Wenn Sie den Knotenpool jedoch über die Konsole erstellen, wird standardmäßig eine leere<capacityReservationId>
übergeben, die beim Versuch, präemptive Ausprägungen zu verwenden, einen Fehler auslöst. Umgehung besteht darin,<capacityReservationId>
in der Platzierungskonfiguration explizit auf Null zu setzen.
- Lösung: Es gibt einen bekannten OKE-Bug mit leeren
-
Problem: Wenn Sie zwei Knotenpools verwenden (einer verwendet Präemptive, der andere verwendet On-Demand) und prioritätsbasierte Expander für den Autoscaler nutzen. Konfiguration des präemptiven Knotenpools als On-Demand-Knotenpool mit der höchsten Priorität, die verwendet werden soll, wenn der präemptive Knotenpool aufgrund eines OutOfHostCapacity-Fehlers mit präemptiver Kapazität fehlerhaft ist. In einigen Fällen greift der automatische Scaler des Clusters nicht auf den On-Demand-Knotenpool zurück, selbst wenn der präemptive Knotenpool fehlerhaft ist, wenn der Knotenpool 0 Knoten aufweist.
- Lösung: Dieses Setup funktioniert jedoch nur, wenn beide Knotenpools jeweils mindestens 1 Knoten haben.
-
Problem: Wenn Sie präemptive Kapazität im OKE-Provisioningassistenten über die Konsole auswählen, sind die verfügbaren AMD-Ausprägungen auf E3 und E4 begrenzt. E5 wird dort nicht angezeigt. Die präemptive Kapazität von E5 wird jedoch für OKE unterstützt.
-
Lösung: Erstellen Sie verwaltete Knotenpools mit der präemptiven Ausprägung E5 mit der API oder CLI.
--node-shape VM.Standard.E5.Flex
-
Aufgabe 1: Schritte zum Erstellen des präemptiven OKE-Worker-Knotenpools E5 mit der Befehlszeilenschnittstelle (CLI)
-
Melden Sie sich bei der OCI-Konsole an, und klicken Sie auf das Menü "Services".
-
Navigieren Sie zu Entwicklerservices.
-
Klicken Sie unter Container und Artefakte auf Klicken Sie auf Kubernetes-Engine (OKE).
-
Klicken Sie auf OCI Cloud-Shell, um die CLI anzuzeigen.
-
Bearbeiten Sie die OCID
node-pool
, die OCIDcompartment
,subnet-id
,fault domain
, die Konfiguration und die Größe, bevor Sie die folgenden CLI-Befehle in Ihrem Mandanten ausführen.oci ce node-pool create --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaxlokvt2r25b6dmdxxxxxxxxxxxxxxxxxkhdilj7kpehc5vke2ve5gq --compartment-id ocid1.compartment.oc1..aaaaaaaaqufgrkgzr4zb3dxxxxxxxxxxxxxxxxxxp7jx7yckglghxppfrui6a --name E5_Preemtible --node-shape VM.Standard.E5.Flex --placement-configs '[{"availabilityDomain": "FZyT:US-ASHBURN-AD-2", "preemptibleNodeConfig": {"preemptionAction":{"isPreserveBootVolume":true, "type": "TERMINATE"}}, "subnet-id": "ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhu72xxxxxxxxxxxxxxxxxxxxtlkp4dmixebzhgrwdlmtteclq", "faultDomains":["FAULT-DOMAIN-1"]}]' --size 1 --node-image-id ocid1.image.oc1.iad.aaaaaaaajvtta4i5sq4xxxxxxxxxxxxxcskfxjwz4vwxz6ersmmax6q --node-shape-config '{"memoryInGBs": 6.0, "ocpus": 1.0}' --pod-subnet-ids '["ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhxxxxxxxxxxxxxxxkp4dmixebzhgrwdlmtteclq"]'
Dadurch wird die OCID der Arbeitsanforderung zum Erstellen des Knotenpools ausgegeben, und der präemptive Worker-Knoten E5 wird im vorhandenen Cluster erstellt, wie im folgenden Image dargestellt.
Verwandte Links
Danksagungen
- Autoren - Payal Sharma (Senior Enterprise Cloud Architect), Anthony Vernava IV (Senior Enterprise Cloud Architect)
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.
Manage OCI Kubernetes Engine with Different Capacity Types and Resolve Common Issues on Preemptible Nodes
G19909-01
November 2024