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.
Hinweis: Sie können dieses Tutorial auch verwenden, wenn Sie Minikube lokal installiert haben.
Dieses Lernprogramm enthält ein aus den folgenden Dateien erstelltes Container-Image:
minikube/server.js
|
---|
|
minikube/Dockerfile
|
---|
|
Weitere Informationen zum docker build
Befehl, lesen Sie die Docker Dokumentation.
Klicken Sie auf Launch Terminal.
Hinweis: Wenn Sie Minikube lokal installiert haben, führen Sieminikube start
aus.
Öffnen Sie das Kubernetes-Dashboard in einem Browser:
minikube dashboard
In 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 30000
ein und klicken Sie dann auf Display Port.
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=gcr.io/hello-minikube-zero-install/hello-node
Anzeigen des Deployments:
kubectl get deployments
Ausgabe:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-node 1 1 1 1 1m
Den Pod anzeigen:
kubectl get pods
Ausgabe:
NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
Cluster Events anzigen:
kubectl get events
Die Konfiguration von kubectl
anzeigen:
kubectl config view
Hinweis: Weitere Informationen zukubectl
-Befehlen finden Sie im kubectl Überblick.
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 expose
im öffentlichen Internet bereit:
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
Das Flag --type = LoadBalancer
zeigt an, dass Sie Ihren Service außerhalb des Clusters verfügbar machen möchten.
Zeigen Sie den gerade erstellten Service an:
kubectl get services
Ausgabe:
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 23m
Bei 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 LoadBalancer
den Dienst über den Befehl minikube service
verfuügbar zu machen.
Führen Sie den folgenden Befehl aus:
minikube service hello-node
In 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.
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 list
Ausgabe:
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: enabled
Aktivieren Sie ein Addon, zum Beispiel heapster
:
minikube addons enable heapster
Ausgabe:
heapster was successfully enabled
Sehen Sie sich den Pod und den Service an, den Sie gerade erstellt haben:
kubectl get pod,svc -n kube-system
Ausgabe:
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 26s
Deaktivieren Sie heapster
:
minikube addons disable heapster
Ausgabe:
heapster was successfully disabled
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
War diese Seite hilfreich?
Danke für die Rückmeldung. Wenn Sie eine spezifische, beantwortbare Frage zur Verwendung von Kubernetes haben, stellen Sie diese unter Stack Overflow. Öffnen Sie ein Problem im GitHub-Repo, wenn Sie möchten Ein Problem melden oder Eine Verbesserung vorschlagen.