Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch spezifische Werte für Ihre Cloud-Umgebung.
Mit dem CNI-Plug-in für OCI-VCN-native Pods Networking können Sie Networking-Services für Oracle Cloud Infrastructure Container Engine for Kubernetes bereitstellen
Einführung
Standardmäßig verwendet Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) das Oracle Cloud Infrastructure-(OCI-)VCN-Native Container Network Interface-(CNI-)Plug-in, um Netzwerk- oder Sicherheitsfeatures für containerisierte Anwendungen bereitzustellen. In diesem Tutorial zeigen wir Ihnen, wie Sie prüfen können, welches CNI-Plug-in verwendet wird und wie wir dieses Standard-CNI-Plug-in (OCI-VCN-natives CNI-Plug-in) verwenden können, um einen OCI Load Balancer-Service zu konfigurieren und an eine Anwendung anzuhängen, die in einem Container ausgeführt wird.
Der Vorteil der Verwendung des CNI-Plug-ins für OCI-VCN-native Pods Networking besteht darin, dass die Pods oder Container eine IP-Adresse aus dem privaten Subnetz im VCN erhalten. Das bedeutet, dass sich Ihre Kubernetes-Pods im selben Netzwerk wie Ihre VMs (Instanzen) oder Ihre baremetalen Knoten oder andere Workloads befinden.
Ziele
- Wir werden sehen, wie wir das Standard-CNI-Plugin überprüfen können, das von OKE verwendet wird. Wir werden eine neue containerisierte Nginx-Anwendung bereitstellen, um einige grundlegende Netzwerkfeatures des standardmäßigen OCI-VCN-nativen CNI-Plug-ins zu testen, und das CNI-Plug-in für OCI-VCN-native Pods Networking nutzen, um einen neuen Netzwerkservice vom Load-Balancer-Typ zu erstellen und diesen Service für unsere bereitgestellte Nginx-Anwendung bereitzustellen. Am Ende werden die Anwendung und der Load-Balancer-Service gelöscht.
Aufgabe 1: Kubernetes-Cluster mit OKE bereitstellen
Weitere Informationen zu den verschiedenen OKE-Deployment-Modellen, die wir auswählen können, finden Sie unter Beispielkonfigurationen für Netzwerkressourcen.
Beispiele für OKE-Deployment-Modelle:
-
Beispiel 1: Cluster mit Flannel-CNI-Plug-in, öffentlichem Kubernetes-API-Endpunkt, privaten Worker-Knoten und öffentlichen Load Balancern.
-
2. Beispiel: Cluster mit Flannel-CNI-Plug-in, privatem Kubernetes-API-Endpunkt, privaten Worker-Knoten und öffentlichen Load Balancern.
-
Beispiel 3: Cluster mit OCI-CNI-Plug-in, öffentlichem Kubernetes-API-Endpunkt, privaten Worker-Knoten und öffentlichen Load Balancern.
-
Beispiel 4: Cluster mit OCI-CNI-Plug-in, privatem Kubernetes-API-Endpunkt, privaten Worker-Knoten und öffentlichen Load Balancern.
Sie wählen das Deployment-Modell Beispiel 3 aus. Weitere Informationen finden Sie unter Oracle Cloud Infrastructure Container Engine for Kubernetes mit drei Worker-Knoten einrichten.
Aufgabe 2: Installiertes CNI-Plug-in prüfen
Wenn das Kubernetes-Cluster mit OKE vollständig bereitgestellt ist und Sie Zugriff darauf haben, können Sie den folgenden Befehl ausführen.
-
Führen Sie den folgenden Befehl aus.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ **kubectl get all -n kube-system** NAME READY STATUS RESTARTS AGE pod/coredns-64ffdf5cf7-lvrhq 1/1 Running 0 2d pod/coredns-64ffdf5cf7-rmxt8 1/1 Running 0 2d pod/coredns-64ffdf5cf7-vq76p 1/1 Running 0 2d pod/csi-oci-node-ghff6 1/1 Running 0 2d pod/csi-oci-node-jrjpr 1/1 Running 0 2d pod/csi-oci-node-r68qz 1/1 Running 1 (2d ago) 2d pod/kube-dns-autoscaler-5bb955d5c-r2j2q 1/1 Running 0 2d pod/kube-proxy-5cznp 1/1 Running 0 2d pod/kube-proxy-fddrd 1/1 Running 0 2d pod/kube-proxy-sb769 1/1 Running 0 2d pod/proxymux-client-7s7f9 1/1 Running 0 2d pod/proxymux-client-lngrm 1/1 Running 0 2d pod/proxymux-client-qxlf2 1/1 Running 0 2d **pod/vcn-native-ip-cni-hkfjz 1/1 Running 0 2d pod/vcn-native-ip-cni-pdv4c 1/1 Running 0 2d pod/vcn-native-ip-cni-qfvk8 1/1 Running 0 2d** NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kube-dns ClusterIP 10.96.5.5 <none> 53/UDP,53/TCP,9153/TCP 2d NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/csi-oci-node 3 3 3 3 3 <none> 2d daemonset.apps/kube-proxy 3 3 3 3 3 beta.kubernetes.io/os=linux 2d daemonset.apps/node-termination-handler 0 0 0 0 0 oci.oraclecloud.com/oke-is-preemptible=true 2d daemonset.apps/nvidia-gpu-device-plugin 0 0 0 0 0 <none> 2d daemonset.apps/proxymux-client 3 3 3 3 3 node.info.ds_proxymux_client=true 2d **daemonset.apps/vcn-native-ip-cni 3 3 3 3 3 <none> 2d** NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/coredns 3/3 3 3 2d deployment.apps/kube-dns-autoscaler 1/1 1 1 2d NAME DESIRED CURRENT READY AGE replicaset.apps/coredns-64ffdf5cf7 3 3 3 2d replicaset.apps/kube-dns-autoscaler-5bb955d5c 1 1 1 2d iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Beachten Sie, dass der Name in der Ausgabe im Podabschnitt
vcn-native
lautet. -
Beachten Sie, dass der Name in der Ausgabe im Daemonset-Abschnitt
vcn-native
lautet.
Dadurch wird angezeigt, dass das CNI-Plug-in für OCI-VCN-native Pods Networking derzeit für dieses bereitgestellte OKE-Deployment verwendet wird.
Aufgabe 3: Beispielanwendung bereitstellen
Wir verwenden diese Beispielanwendung zusammen mit dem CNI-Plug-in für OCI-VCN-native Pods Networking und aktivieren den OCI Load Balancer-Servicetyp in der nächsten Aufgabe.
-
Führen Sie den folgenden Befehl aus, um eine Nginx-Beispielanwendung in OKE bereitzustellen.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl apply -f https://k8s.io/examples/application/deployment.yaml deployment.apps/nginx-deployment created
-
Führen Sie den folgenden Befehl aus, um die Details der bereitgestellten Nginx-Beispielanwendung zu prüfen.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl describe deployment nginx-deployment Name: nginx-deployment Namespace: default CreationTimestamp: Fri, 08 Mar 2024 07:57:02 +0000 Labels: <none> Annotations: deployment.kubernetes.io/revision: 1 Selector: app=nginx Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: app=nginx Containers: nginx: Image: nginx:1.14.2 Port: 80/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: nginx-deployment-86dcfdf4c6 (2/2 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 14s deployment-controller Scaled up replica set nginx-deployment-86dcfdf4c6 to 2 iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Beachten Sie, dass die Anwendung mit zwei Pods bereitgestellt wird.
-
Führen Sie den folgenden Befehl aus, um die bereitgestellten Pods genauer zu betrachten.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-86dcfdf4c6-fdxgz 1/1 Running 0 3m46s nginx-deployment-86dcfdf4c6-fqrkh 1/1 Running 0 3m46s iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Beachten Sie, dass zwei Instanzen oder Pods oder Replikate der Nginx-Anwendung vorhanden sind und der Status auf Wird ausgeführt gesetzt ist.
Eine visuelle Darstellung der Bereitstellung finden Sie im folgenden Diagramm. Konzentrieren Sie sich auf die beiden bereitgestellten Pods innerhalb der Worker-Knoten.
Der Vorteil der Verwendung des CNI-Plug-ins für OCI-VCN-native Pods Networking besteht darin, dass die Pods oder Container eine IP-Adresse aus dem privaten Subnetz im VCN erhalten. Das bedeutet, dass sich Ihre Kubernetes-Pods im selben Netzwerk wie Ihre VMs (Instanzen) oder Ihre baremetalen Knoten oder andere Workloads befinden.
Aufgabe 4: Kubernetes-Services des Load-Balancer-Typs konfigurieren
Unsere Beispielanwendung wird in OKE ausgeführt. Es ist an der Zeit, die Anwendung dem Netzwerk oder dem Internet zugänglich zu machen, indem der Anwendung ein Netzwerkservice vom Typ Load Balancer zugeordnet wird.
-
Prüfen Sie die vorhandenen ausgeführten Services im Kubernetes-Cluster.
-
Führen Sie den folgenden Befehl aus, um die vorhandenen ausgeführten Services im Kubernetes-Cluster zu prüfen.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP,12250/TCP 2d23h iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Beachten Sie, dass der einzige ausgeführte Service zur Kubernetes-Control Plane gehört.
-
-
Fügen Sie der Anwendung einen Netzwerkservice hinzu.
-
Führen Sie den folgenden Befehl aus, um einen neuen CNI-Plug-in-Netzwerkservice für OCI-VCN-native Pods Networking vom Typ Load Balancer bereitzustellen und diesen neuen Service der Anwendung bereitzustellen.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl expose deployment nginx-deployment --type=LoadBalancer --name=my-service service/my-service exposed iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Beachten Sie, dass der Service erfolgreich bereitgestellt wurde.
-
-
Prüfen Sie die vorhandenen ausgeführten Services im Kubernetes-Cluster.
-
Führen Sie den folgenden Befehl aus, um die vorhandenen ausgeführten Services im Kubernetes-Cluster zu prüfen.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP,12250/TCP 2d23h my-service LoadBalancer 10.96.209.132 xxx.xxx.xxx.167 80:32291/TCP 53s iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Beachten Sie, dass der soeben konfigurierte Service jetzt auf der Liste steht.
-
Beachten Sie die
EXTERNAL-IP
(öffentliche IP-Adresse), die dem Load Balancer mit der Endung.167
zugewiesen wurde. -
Klicken Sie auf das Symbol "Minimieren", um die OCI Cloud Shell zu minimieren.
-
-
Kopieren Sie die öffentliche IP-Adresse, und fügen Sie sie in den Webbrowser ein. Sie können jetzt auf den Nginx-Webserver zugreifen, der in einem Container in Oracle Cloud Infrastructure Container Engine for Kubernetes bereitgestellt ist.
-
Außerdem können wir uns mit der OCI-Konsole die Ereignisse im Hintergrund genauer ansehen.
-
Klicken Sie auf Networking.
-
Klicken Sie auf Load Balancer.
-
-
Klicken Sie auf Load Balancer.
- Beachten Sie, dass ein neuer Load Balancer bereitgestellt wird, dessen öffentliche IP-Adresse auf
.167
endet. - Klicken Sie auf den Load Balancer.
- Beachten Sie, dass der Load Balancer AKTIV ist.
- Blättern Sie nach unten.
- Prüfen Sie die Konfigurationsdetails des bereitgestellten Load Balancers.
- Klicken Sie auf Wiederherstellen, um die OCI Cloud Shell wiederherzustellen.
- Beachten Sie, dass ein neuer Load Balancer bereitgestellt wird, dessen öffentliche IP-Adresse auf
Eine visuelle Darstellung des Load Balancer Deployments finden Sie im folgenden Diagramm. Konzentrieren Sie sich auf den Load Balancer.
Aufgabe 5: Beispielanwendung und Kubernetes-Services vom Load-Balancer-Typ entfernen
Wir haben eine Beispielanwendung bereitgestellt und einen neuen Kubernetes-Netzwerkservice vom Load-Balancer-Typ erstellt. Es ist an der Zeit, die Anwendung und den Service zu bereinigen.
-
Entfernen Sie den Load Balancer-Service.
-
Führen Sie den folgenden Befehl aus, um den Load-Balancer-Service zu löschen.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl delete service my-service -n default service "my-service" deleted
-
Beachten Sie, dass der Load-Balancer-Service erfolgreich gelöscht wurde.
-
Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Load-Balancer-Service gelöscht wurde.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP,12250/TCP 2d23h iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Beachten Sie, dass der Load-Balancer-Service gelöscht wurde.
-
-
Entfernen Sie die Beispielanwendung.
-
Führen Sie den folgenden Befehl aus, um die vorhandenen Pods abzurufen.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-86dcfdf4c6-fdxgz 1/1 Running 0 36m nginx-deployment-86dcfdf4c6-fqrkh 1/1 Running 0 36m
-
Beachten Sie, dass die Nginx-Anwendung noch ausgeführt wird.
-
Führen Sie den folgenden Befehl aus, um das Deployment der Nginx-Anwendung zu löschen.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl delete deployment nginx-deployment --namespace default deployment.apps "nginx-deployment" deleted
-
Führen Sie den folgenden Befehl aus, um die vorhandenen Pods erneut abzurufen und zu prüfen, ob das Deployment gelöscht wurde.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods No resources found in default namespace. iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Beachten Sie, dass die Nginx-Anwendung gelöscht wurde.
-
Klicken Sie auf das Symbol "Minimieren", um die OCI Cloud Shell zu minimieren.
- Beachten Sie, dass die OCI-Konsole eine Meldung anzeigt, dass der Load Balancer gelöscht wurde.
- Klicken Sie auf Schließen.
-
Beachten Sie, dass kein Load Balancer mehr bereitgestellt ist.
Eine visuelle Darstellung des Löschens des Load Balancers finden Sie im folgenden Diagramm. Konzentrieren Sie sich auf den Teil, in dem der Load Balancer nicht mehr bereitgestellt wird.
Verwandte Links
Danksagungen
- Autor - Iwan Hoogendoorn (OCI Network Specialist)
Weitere Lernressourcen
Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Use OCI VCN-Native Pods Networking CNI Plugin to Provide Networking Services to Oracle Cloud Infrastructure Container Engine for Kubernetes
F95772-01
March 2024