You are viewing documentation for Kubernetes version: v1.24
Kubernetes v1.24 Die Dokumentation wird nicht mehr aktiv gepflegt. Die aktuell angezeigte Version ist eine statische Momentaufnahme. Aktuelle Dokumentation finden Sie unter aktuelle Version.
Hallo Minikube
Dieses Tutorial zeigt Ihnen, wie Sie eine einfache "Hallo Welt" Node.js-Anwendung auf Kubernetes mit Minikube und Katacoda ausführen. Katacoda bietet eine kostenlose Kubernetes-Umgebung im Browser.
Ziele
- Stellen Sie eine Hallo-Welt-Anwendung für Minikube bereit.
- Führen Sie die App aus.
- Betrachten Sie die Log Dateien.
Bevor Sie beginnen
Dieses Lernprogramm enthält ein aus den folgenden Dateien erstelltes Container-Image:
var http = require('http');
var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD node server.js
Weitere Informationen zum docker build Befehl, lesen Sie die Docker Dokumentation.
Erstellen Sie einen Minikube-Cluster
Klicken Sie auf Launch Terminal.
Hinweis: Wenn Sie Minikube lokal installiert haben, führen Sieminikube startaus.Öffnen Sie das Kubernetes-Dashboard in einem Browser:
minikube dashboardIn einer Katacoda-Umgebung: Klicken Sie oben im Terminalbereich auf das Pluszeichen und anschließend auf Select port to view on Host 1.
In einer Katacoda-Umgebung: Geben Sie
30000ein und klicken Sie dann auf Display Port.
Erstellen eines Deployments
Ein Kubernetes Pod ist eine Gruppe von einem oder mehreren Containern, die zu Verwaltungs- und Netzwerkzwecken miteinander verbunden sind. Der Pod in diesem Tutorial hat nur einen Container. Ein Kubernetes Deployment überprüft den Zustand Ihres Pods und startet den Container des Pods erneut, wenn er beendet wird. Deployments sind die empfohlene Methode zum Verwalten der Erstellung und Skalierung von Pods.
Verwenden Sie den Befehl
kubectl create, um ein Deployment zu erstellen, die einen Pod verwaltet. Der Pod führt einen Container basierend auf dem bereitgestellten Docker-Image aus.kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4Anzeigen des Deployments:
kubectl get deploymentsAusgabe:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-node 1 1 1 1 1mDen Pod anzeigen:
kubectl get podsAusgabe:
NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1mCluster Events anzeigen:
kubectl get eventsDie Konfiguration von
kubectlanzeigen:kubectl config viewHinweis: Weitere Informationen zukubectl-Befehlen finden Sie im kubectl Überblick.
Erstellen Sie einen Service
Standardmäßig ist der Pod nur über seine interne IP-Adresse im Kubernetes-Cluster erreichbar. Um den "Hallo-Welt"-Container außerhalb des virtuellen Netzwerks von Kubernetes zugänglich zu machen, müssen Sie den Pod als Kubernetes Service verfügbar machen.
Stellen Sie den Pod mit dem Befehl
kubectl exposeim öffentlichen Internet bereit:kubectl expose deployment hello-node --type=LoadBalancer --port=8080Das Flag
--type = LoadBalancerzeigt an, dass Sie Ihren Service außerhalb des Clusters verfügbar machen möchten.Zeigen Sie den gerade erstellten Service an:
kubectl get servicesAusgabe:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23mBei Cloud-Anbietern, die Load-Balancer unterstützen, wird eine externe IP-Adresse für den Zugriff auf den Dienst bereitgestellt. Bei Minikube ermöglicht der Typ
LoadBalancerden Dienst über den Befehlminikube serviceverfügbar zu machen.Führen Sie den folgenden Befehl aus:
minikube service hello-nodeIn einer Katacoda-Umgebung: Klicken Sie auf das Pluszeichen und dann auf Select port to view on Host 1.
In einer Katacoda-Umgebung: Geben Sie "30369" ein (siehe Port gegenüber "8080" in der service ausgabe), und klicken Sie dann auf
Daraufhin wird ein Browserfenster geöffnet, in dem Ihre App ausgeführt wird und die Meldung "Hello World" (Hallo Welt) angezeigt wird.
Addons aktivieren
Minikube verfügt über eine Reihe von integrierten Add-Ons, die in der lokalen Kubernetes-Umgebung aktiviert, deaktiviert und geöffnet werden können.
Listen Sie die aktuell unterstützten Addons auf:
minikube addons listAusgabe:
addon-manager: enabled coredns: disabled dashboard: enabled default-storageclass: enabled efk: disabled freshpod: disabled heapster: disabled ingress: disabled kube-dns: enabled metrics-server: disabled nvidia-driver-installer: disabled nvidia-gpu-device-plugin: disabled registry: disabled registry-creds: disabled storage-provisioner: enabledAktivieren Sie ein Addon, zum Beispiel
heapster:minikube addons enable heapsterAusgabe:
heapster was successfully enabledSehen Sie sich den Pod und den Service an, den Sie gerade erstellt haben:
kubectl get pod,svc -n kube-systemAusgabe:
NAME READY STATUS RESTARTS AGE pod/heapster-9jttx 1/1 Running 0 26s pod/influxdb-grafana-b29w8 2/2 Running 0 26s pod/kube-addon-manager-minikube 1/1 Running 0 34m pod/kube-dns-6dcb57bcc8-gv7mw 3/3 Running 0 34m pod/kubernetes-dashboard-5498ccf677-cgspw 1/1 Running 0 34m pod/storage-provisioner 1/1 Running 0 34m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/heapster ClusterIP 10.96.241.45 <none> 80/TCP 26s service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m service/kubernetes-dashboard NodePort 10.109.29.1 <none> 80:30000/TCP 34m service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26sDeaktivieren Sie
heapster:minikube addons disable heapsterAusgabe:
heapster was successfully disabled
Aufräumen
Jetzt können Sie die in Ihrem Cluster erstellten Ressourcen bereinigen:
kubectl delete service hello-node
kubectl delete deployment hello-node
Stoppen Sie optional die virtuelle Minikube-Maschine (VM):
minikube stop
Löschen Sie optional die Minikube-VM:
minikube delete
Nächste Schritte
- Lernen Sie mehr über Bereitstellungsobjekte.
- Lernen Sie mehr über Anwendungen bereitstellen.
- Lernen Sie mehr über Serviceobjekte.