Webinar-Reihe: Erste Schritte mit Kubernetes

Einführung

In dem zuvor in dieser Serie beschriebenen https://www.digitalocean.com/community/tutorials/webinar-series-building-containerized-applications] haben wir uns mit der Verwaltung von Anwendungen mit mehreren Containern mit Docker Compose befasst. Während die Docker Command Line Interface (CLI) und Docker Compose Container bereitstellen und skalieren können, die auf einem einzelnen Computer ausgeführt werden, ist Kubernetes für die Verarbeitung von Anwendungen mit mehreren Containern ausgelegt, die auf mehreren Computern oder Hosts bereitgestellt werden.

Kubernetes ist ein Open-Source-Container-Orchestrierungs-Tool für die Verwaltung von containerisierten Anwendungen. Ein Kubernetes-Cluster hat zwei Schlüsselkomponenten: Hauptknoten und Arbeiterknoten. Eine Gruppe von Masterknoten fungiert als Steuerebene, die die Arbeitsknoten und bereitgestellten Anwendungen verwaltet. Die Arbeitsknoten sind die Arbeitspferde eines Kubernetes-Clusters, die für die Ausführung der containerisierten Anwendungen verantwortlich sind.

Die Masterknoten stellen eine API bereit, über die die Befehlszeilentools und Rich Clients einen Job senden, der die Definition einer Anwendung enthält. Jede Anwendung besteht aus einem oder mehreren containern, den Speicherdefinitionen und den internen und externen Ports, über die sie verfügbar gemacht werden. Die Steuerebene, die auf Masterknoten ausgeführt wird, plant die Container in einem der Arbeitsknoten. Wenn eine Anwendung skaliert wird, startet die Steuerebene zusätzliche Container auf einem der verfügbaren Arbeitsknoten.

Eine ausführliche Einführung in Kubernetes finden Sie im Tutorial An Introduction to Kubernetes.

https://stackpoint.io [StackPointCloud] stellt einen Kubernetes-Cluster in drei Schritten über eine webbasierte Schnittstelle bereit. Es verbirgt die Komplexität der Installation und Konfiguration von Kubernetes durch eine vereinfachte Benutzererfahrung. DigitalOcean ist eine der von StackPoint unterstützten Cloud-Plattformen. Entwickler, die mit Systemadministration und -konfiguration nicht vertraut sind, können mit StackPoint Kubernetes schnell auf DigitalOcean installieren. Einzelheiten zu den unterstützten Funktionen und Preisen finden Sie auf deren Website.

In diesem Lernprogramm werden Sie Kubernetes in DigitalOcean über StackPoint einrichten und konfigurieren und eine containerisierte Anwendung auf Ihrem Cluster bereitstellen.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie

  • Ein lokaler Computer mit dem installierten Befehl "+ curl ", mit dem Sie ein Befehlszeilentool zum Verwalten Ihres Kubernetes-Clusters herunterladen können. Der Befehl ` curl +` ist bereits auf macOS und Ubuntu 16.04 installiert.

  • Ein DigitalOcean-Konto. In diesem Lernprogramm stellen Sie mit StackPoint eine Verbindung zu Ihrem DigitalOcean-Konto her und stellen drei 1-GB-Droplets bereit.

Schritt 1 - Kubernetes installieren

Um die Installation von Kubernetes auf DigitalOcean zu starten, besuchen Sie Stackpoint.io und klicken Sie auf die Schaltfläche Anmelden.

Sie gelangen auf eine Seite, auf der Sie einen Identitätsanbieter auswählen und sich mit vorhandenen Anmeldeinformationen anmelden können. Wählen Sie DigitalOcean aus der Liste aus und melden Sie sich mit Ihrem DigitalOcean-Benutzernamen und Ihrem Kennwort an.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/vGNs8Fb.png [Provider auswählen]

Wählen Sie auf der nächsten Seite DigitalOcean aus der Liste der verfügbaren Cloud-Plattformen.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/PLSX1LC.png [Wählen Sie den DigitalOcean-Anbieter aus]

Sie können den Cluster jetzt konfigurieren. Klicken Sie auf die Schaltfläche BEARBEITEN, um die Einstellungen für den DigitalOcean-Anbieter zu bearbeiten:

Sie gelangen auf den Bildschirm Configure Provider.

Wählen Sie eine Region Ihrer Wahl aus der Dropdown-Liste * Region *. Sie können die anderen Einstellungen auf ihren Standardwerten belassen. Klicken Sie auf "Senden", wenn Sie fertig sind.

Geben Sie im nächsten Bildschirm einen Clusternamen Ihrer Wahl ein und klicken Sie auf * Senden *.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/tjZ7EM4.png [Geben Sie den Clusternamen ein]

Die Cluster-Installation wird nun gestartet und Sie werden zu einer Seite weitergeleitet, auf der Sie den Fortschritt des Clusters verfolgen können. Die Installation dauert ca. 15 Minuten.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/LlfpVjS.png [Der Status Ihres Clusters]

Sobald der Cluster konfiguriert ist, können wir ein Befehlszeilentool einrichten, um damit zu arbeiten.

Schritt 2 - Konfigurieren der Kubernetes-CLI

Um mit dem in DigitalOcean ausgeführten Kubernetes-Cluster zu kommunizieren, benötigen wir ein Befehlszeilentool in unserer Entwicklungsmaschine. Wir verwenden "+ kubectl +", die CLI für Kubernetes.

Führen Sie die folgenden Befehle aus, um "+ kubectl +" von den Servern von Google zu installieren:

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl

Sie sehen diese Ausgabe:

Output % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed

100 63.7M  100 63.7M    0     0  5441k      0  0:00:12  0:00:12 --:--:-- 4644k

Die Binärdatei "+ kubectl " wurde in Ihr aktuelles Verzeichnis heruntergeladen. Ändern Sie die Berechtigungen der heruntergeladenen Binärdatei und verschieben Sie sie in das Verzeichnis " / usr / local / bin +", damit wir sie von überall ausführen können:

chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

Zeigen wir nun mit der "+ kubectl +" - App auf unseren Kubernetes-Cluster. Dazu müssen wir eine Konfigurationsdatei von Stackpoint herunterladen. Kehren Sie in Ihrem Browser zur Cluster-Statusseite zurück. Nachdem Sie überprüft haben, ob der Cluster bereit und stabil ist, klicken Sie auf den Clusternamen, wie in der folgenden Abbildung dargestellt:

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/h84fVAg.png [Der Clustername]

Klicken Sie im linken Menü auf den Link * kubeconfig *, um die Konfigurationsdatei auf Ihren lokalen Computer herunterzuladen:

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/xwSsvWo.png [img]

Setzen Sie in Ihrem Terminal die Umgebungsvariable "+ KUBECONFIG " auf den Pfad der heruntergeladenen Datei. Vorausgesetzt, Ihre Datei wurde in den Ordner " Downloads +" in Ihrem Ausgangsverzeichnis heruntergeladen, geben Sie folgenden Befehl ein:

export KUBECONFIG=

Stellen wir mit "+ kubectl" configure sicher, dass wir mit unserem Cluster kommunizieren können.

Schritt 3 - Überprüfen der Kubernetes-Installation

Nachdem wir den vollständig konfigurierten Cluster zusammen mit dem Client haben, führen wir einige Befehle aus, um die Umgebung zu überprüfen.

Führen Sie den folgenden Befehl aus, um Informationen zum Cluster abzurufen.

kubectl cluster-info

Sie sehen diese Ausgabe:

OutputKubernetes master is running at https://139.59.17.180:6443

Heapster is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/heapster/proxy

KubeDNS is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/kube-dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Die Ausgabe bestätigt, dass der Cluster funktioniert und die Kubernetes-Master-Knoten aktiv sind.

Als Nächstes überprüfen wir den Zustand aller Komponenten, die auf den Master-Knoten ausgeführt werden. Wenn der Cluster gerade konfiguriert wurde, kann es eine Weile dauern, bis alle Komponenten einen fehlerfreien Status aufweisen. Diese Komponenten sind Teil der Kubernetes-Masterknoten, die als Steuerebene fungieren.

Führen Sie diesen Befehl aus:

kubectl get cs

Sie sehen diese Ausgabe:

OutputNAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health": "true"}

Lassen Sie uns zum Schluss alle Knoten des laufenden Kubernetes-Clusters auflisten.

kubectl get nodes

Die Ausgabe sieht folgendermaßen aus:

OutputNAME                  STATUS    ROLES     AGE       VERSION
spc52y2mk3-master-1   Ready     master    29m       v1.8.5
spc52y2mk3-worker-1   Ready     <none>    22m       v1.8.5
spc52y2mk3-worker-2   Ready     <none>    22m       v1.8.5

Dies bestätigt, dass der Cluster mit einem Master-Knoten und zwei Worker-Knoten für die Bereitstellung von Anwendungen bereit ist. Stellen wir also eine Anwendung im Cluster bereit.

Schritt 4 - Bereitstellung und Zugriff auf eine Anwendung

Starten Sie einen einfachen Nginx-Webserver und greifen Sie von unserem lokalen Computer aus auf dessen Standardwebseite zu. Führen Sie diesen Befehl aus, um das Nginx image von Docker Hub abzurufen und eine Bereitstellung mit dem Namen "+ myweb +" zu erstellen:

kubectl run --image=nginx:latest myweb

Dieser Befehl ähnelt dem Befehl + docker run +, mit der Ausnahme, dass er den Container in einem Kubernetes-spezifischen Artefakt namens Pod verpackt und bereitstellt. Weitere Informationen zu Pods finden Sie im nächsten Teil dieser Serie.

Wenn Sie den Befehl ausführen, wird folgende Ausgabe angezeigt:

Outputdeployment "myweb" created

Überprüfen Sie nun, ob der Pod mit dem Container "+ nginx +" erstellt wurde:

kubectl get pods

Sie sehen diese Ausgabe:

OutputNAME                     READY     STATUS    RESTARTS   AGE
myweb-59d7488cb9-jvnwn   1/1       Running   0          3m

Um auf den im Pod laufenden Webserver zugreifen zu können, müssen wir ihn dem öffentlichen Internet aussetzen. Das erreichen wir mit folgendem Befehl:

kubectl expose pod myweb-59d7488cb9-jvnwn --port=80 --target-port=80 --type=NodePort
Outputservice "myweb-59d7488cb9-jvnwn" exposed

Der Pod ist jetzt auf jedem Knoten des Clusters an einem beliebigen Port verfügbar. Die Schalter "+ - port" und "+ - target-port" geben die Ports an, über die der Webserver verfügbar wird. Der Schalter "+ - NodePort +" stellt sicher, dass wir jeden Knoten im Cluster verwenden können, um auf die Anwendung zuzugreifen.

Führen Sie den folgenden Befehl aus, um den NodePort der Bereitstellung von "+ myweb +" abzurufen.

kubectl get svc myweb-59d7488cb9-jvnwn
OutputNAME                     TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
myweb-59d7488cb9-jvnwn   NodePort   10.3.0.119   <none>        80:/TCP   6m

In diesem Fall ist der NodePort der Port "+ 31930 +". Jeder Worker-Knoten verwendet diesen Port, um auf HTTP-Anforderungen zu antworten. Probieren wir es aus.

Verwenden Sie die DigitalOcean-Konsole, um die IP-Adresse eines der Arbeitsknoten abzurufen.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/w9acP7y.png [Droplets]

Verwenden Sie den Befehl "+ curl ", um eine HTTP-Anforderung an einen der Knoten an Port " 31930 +" zu senden.

curl http://:31930/

Sie sehen die Antwort mit der Nginx-Standardhomepage:

Output<!DOCTYPE html>
<html>
 <head>
   <title>Welcome to nginx!</title>
...
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
   <p><em>Thank you for using nginx.</em></p>
 </body>
</html>

Sie haben erfolgreich eine containerisierte Anwendung in Ihrem Kubernetes-Cluster implementiert.

Fazit

Kubernetes ist eine beliebte Plattform für das Containermanagement. Mit StackPoint können Sie Kubernetes ganz einfach auf DigitalOcean installieren.

Im nächsten Teil dieser Reihe werden wir die Bausteine ​​von Kubernetes genauer untersuchen.