Looking for kubernetes Keywords? Try Ask4Keywords

kubernetesErste Schritte mit kubernetes


Bemerkungen

Kubernetes ist eine Open-Source-Plattform zur Automatisierung der Bereitstellung, Skalierung und des Betriebs von Anwendungscontainern über Hostcluster hinweg und stellt eine auf Container zentrierte Infrastruktur bereit.

Mit Kubernetes können Sie schnell und effizient auf die Kundenanforderungen reagieren:

  • Stellen Sie Ihre Anwendungen schnell und vorhersehbar bereit.
  • Skalieren Sie Ihre Anwendungen im Handumdrehen.
  • Nahtlose Einführung neuer Funktionen.
  • Optimieren Sie die Verwendung Ihrer Hardware, indem Sie nur die Ressourcen verwenden, die Sie benötigen.

Warum brauche ich Kubernetes und was kann ich tun?

Kubernetes können Anwendungscontainer in Clustern physischer oder virtueller Maschinen planen und ausführen. Mit Kubernetes können Entwickler jedoch auch die Verbindung zwischen physischen und virtuellen Maschinen herstellen, indem sie von einer Host-basierten Infrastruktur zu einer Container- Infrastruktur wechseln , die alle Vorteile und Vorteile von Containern bietet. Kubernetes bietet die Infrastruktur zum Aufbau einer wirklich auf Container konzentrierten Entwicklungsumgebung.

Kubernetes erfüllt eine Reihe allgemeiner Anforderungen von Anwendungen, die in der Produktion ausgeführt werden, z.

  • Helferprozesse gemeinsam lokalisieren, Verbundanwendungen vereinfachen und das Ein-Anwendungs-pro-Container-Modell beibehalten
  • Lagerungssysteme montieren,
  • Geheimnisse verteilen,
  • Überprüfung der Anwendungsgesundheit
  • Anwendungsinstanzen replizieren,
  • horizontale automatische Skalierung
  • Benennung und Entdeckung,
  • Lastverteilung,
  • laufende Updates,
  • Ressourcenüberwachung,
  • Log-Zugriff und -Aufnahme
  • Unterstützung für Introspection und Debugging und
  • Identität und Ermächtigung.

Dies bietet die Einfachheit von Platform as a Service (PaaS) mit der Flexibilität von Infrastructure as a Service (IaaS) und erleichtert die Portabilität zwischen Infrastrukturanbietern.

Versionen

Ausführung Veröffentlichungsdatum
1.7 2017-06-28
1.6 2017-02-22
1,5 2016-12-13
1.4 2016-09-26
1.3 2016-07-06
1.2 2016-03-17
1.1 2015-09-09
1,0 2015-07-18

Kubectl konfigurieren

Ein Kubernetes-Cluster wird mit dem Befehl kubectl gesteuert. Die Methode zur Konfiguration von kubectl hängt davon ab, wo Kubernetes installiert ist.

Google Cloud (Container Engine)

So installieren Sie kubectl mithilfe des Google Cloud SDK:

gcloud components install kubectl
 

So konfigurieren Sie kubectl zur Steuerung eines vorhandenen Kubernetes-Clusters in Container Engine:

gcloud container clusters get-credentials $CLUSTER_NAME
 

Minikube

Bei Verwendung von Minikube muss die kubectl-Binärdatei manuell heruntergeladen und in den Pfad eingefügt werden.

# Version of Kubernetes.
K8S_VERSION=$(curl -sS https://storage.googleapis.com/kubernetes-release/release/stable.txt)
# Operating System. Can be one of {linux, darwin}
GOOS=linux
# Architecture. Can be one of {386, amd64, arm64, ppc641e}
GOARCH=amd64

# Download and place in path.
curl -Lo kubectl http://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/${GOOS}/${GOARCH}/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
 

Die Minikube-Binärdatei konfiguriert kubectl beim Starten eines Clusters automatisch.

minikube start
# kubectl is now ready to use!
 

Hallo Welt

Sobald Ihr Kubernetes-Cluster ausgeführt und kubectl konfiguriert ist, können Sie Ihre erste Anwendung mit wenigen Schritten ausführen. Dies kann mithilfe der imperativen Befehle erfolgen, für die keine Konfigurationsdateien erforderlich sind.

Um eine Anwendung auszuführen, müssen Sie einen Implementierungsnamen ( bootcamp ), den Speicherort des Container-Images ( docker.io/jocatalin/kubernetes-bootcamp:v1 ) und den Port ( 8080 ) docker.io/jocatalin/kubernetes-bootcamp:v1

$ kubectl run bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080
 

Bestätigen Sie, dass es funktioniert hat mit:

$ kubectl get deployments
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
bootcamp               1         1         1            1         6s
 

So machen Sie Ihre Anwendung verfügbar und machen sie von außen zugänglich:

$ kubectl expose deployment/bootcamp --type="LoadBalancer" --port 8080
 

Bestätigen Sie, dass es funktioniert hat mit:

$ kubectl get services
NAME                  CLUSTER-IP   EXTERNAL-IP         PORT(S)    AGE
kubernetes            10.0.0.1     <none>              443/TCP    3m
bootcamp              10.3.245.61  104.155.111.170     8080:32452/TCP   2m
 

Um auf die Dienste zuzugreifen, verwenden Sie die externe IP-Adresse und den Anwendungsport, z. B. wie folgt:

$ export EXTERNAL_IP=$(kubectl get service bootcamp --output=jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ export PORT=$(kubectl get services --output=jsonpath='{.items[0].spec.ports[0].port}')
$ curl "$EXTERNAL_IP:$PORT"
Hello Kubernetes bootcamp! | Running on: bootcamp-390780338-2fhnk | v=1
 

Das Gleiche könnte manuell mit den Daten geschehen, die in angegeben sind:

$ kubectl describe service bootcamp
Name:                   bootcamp
Namespace:              default
Labels:                 run=bootcamp
Selector:               run=bootcamp
Type:                   LoadBalancer
IP:                     10.3.245.61
LoadBalancer Ingress:   104.155.111.170
Port:                   <unset> 8080/TCP
NodePort:               <unset> 32452/TCP
Endpoints:              10.0.0.3:8080
... events and details left out ....

$ export NODE=104.155.111.170
$ export PORT=8080
 

Sobald dies funktioniert hat, können Sie Ihre Anwendung skalieren mit:

$ kubectl scale deployments/bootcamp --replicas=4
 

Und überprüfe das Ergebnis mit:

$ kubectl get deployments
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
bootcamp               4         4         4            4         30s

$ curl "$EXTERNAL_IP:$PORT"
Hello Kubernetes bootcamp! | Running on: bootcamp-390780338-2fhnk | v=1
$ curl "$EXTERNAL_IP:$PORT"
Hello Kubernetes bootcamp! | Running on: bootcamp-390780338-gmtv5 | v=1
 

Beachten Sie die sich ändernde Pod-ID.

Um eine neue Anwendungsversion auszuführen, führen Sie Folgendes aus:

kubectl set image deployments/bootcamp bootcamp=jocatalin/kubernetes-bootcamp:v2
 

Und bestätige es mit:

$ curl "$EXTERNAL_IP:$PORT"
Hello Kubernetes bootcamp! | Running on: bootcamp-284539476-gafwev3 | v=2
 

Aufräumen ist endlich fertig mit:

$ kubectl delete deployment bootcamp
$ kubectl delete service bootcamp
 

Installieren Sie in der Google Cloud

Kubernetes wurde ursprünglich von Google entwickelt, um die Container-Engine zu betreiben. Daher sind Kubernetes-Cluster bei Google ein erstklassiger Bürger.

Das Erstellen eines Kubernetes-Clusters in der Container-Engine erfordert gcloud Befehl gcloud aus dem Google Cloud SDK . Verwenden Sie eine der folgenden Optionen, um diesen Befehl lokal zu installieren:

  • Verwenden Sie das interaktive Installationsprogramm (der einfachste Weg für Neuankömmlinge):
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
 
  • Laden Sie das SDK von https://cloud.google.com/sdk/ herunter und führen Sie die entsprechende Installationsdatei aus.

    Um beispielsweise in Linux (x86_64) zu installieren:

curl -Lo gcloud-sdk.tar.gz https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-142.0.0-linux-x86_64.tar.gz
tar xvf ./gcloud-sdk.tar.gz
./google-cloud-sdk/install.sh
gcloud init
 

Wenn gcloud installiert ist, erstellen Sie einen Kubernetes-Cluster mit:

# Give our cluster a name
CLUSTER_NAME=example-cluster

# Number of machines in the cluster.
NUM_NODES=3
    
gcloud container clusters create $CLUSTER_NAME --num_nodes=$NUM_VMS
 

Minikube installieren

Minikube erstellt ein lokales Cluster von virtuellen Maschinen, auf dem Kubernetes ausgeführt wird. Dies ist die einfachste Methode, um sich mit Kubernetes auf der lokalen Maschine die Hände zu schälen.

Dokumentation für Minikube finden Sie unter http://kubernetes.io/docs/getting-started-guides/minikube/

Bedarf

Um zu überprüfen, ob die Virtualisierungsunterstützung aktiviert ist, führen Sie den entsprechenden Befehl von unten aus. Der Befehl gibt etwas aus, wenn die Virtualisierung aktiviert ist.

# On Linux
cat /proc/cpuinfo | grep 'vmx\|svm'
# On OSX
sysctl -a | grep machdep.cpu.features | grep VMX
 

Installation

Minikube ist eine einzelne Binärdatei. Daher ist die Installation so einfach wie das Herunterladen der Binärdatei und das Platzieren in Ihrem Pfad.

# Specify the version of minikube to download.
# Latest version can be retrieved from 
# https://github.com/kubernetes/minikube/releases
VERSION=v0.16.0

# If on Linux
OS=linux  
# If on OSX
# OS=darwin

# URL to download minikube binary from
URL=https://storage.googleapis.com/minikube/releases/$VERSION/minikube-$OS-amd64

# Download binary and place in path.
curl -Lo minikube $URL 
chmod +x minikube 
sudo mv minikube /usr/local/bin/
 

Verwendungszweck

So starten Sie einen neuen Cluster:

minikube start
 

Dadurch wird ein neues Cluster von lokalen virtuellen Maschinen erstellt, auf denen Kubernetes bereits installiert und konfiguriert sind.

Sie können auf das Kubernetes-Dashboard zugreifen:

minikube dashboard
 

Minikube erstellt einen verwandten Kontext für kubectl der verwendet werden kann mit:

kubectl config use-context minikube
 

Sobald fertig, können die lokalen Kubernetes verwendet werden:

kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
kubectl expose deployment hello-minikube --type=NodePort
curl $(minikube service hello-minikube --url)
 

So stoppen Sie den lokalen Cluster:

minikube stop
 

Um den lokalen Cluster zu löschen, beachten Sie, dass eine neue IP nach der Erstellung zugewiesen wird:

minikube delete
 

Kubectl in der Befehlszeile

Nachdem Sie einen Cluster ausgeführt haben, können Sie ihn mit dem Befehl kubectl . Die meisten Befehle erhalten Sie mit dem Befehl kubectl --help Ich zeige Ihnen jedoch die gebräuchlichsten Befehle zum Verwalten und Abrufen von Informationen zu Cluster, Knoten, Pods, Services und Labels.


Um Informationen über den Cluster zu erhalten, können Sie den folgenden Befehl verwenden

kubectl cluster-info
 

Es zeigt Ihnen die laufende Adresse und den Port an.


Um kurze Informationen zu Knoten, Pods, Services usw. oder Ressourcen zu erhalten, die einen Platz im Cluster haben, können Sie den folgenden Befehl verwenden

kubectl get {nodes, pods, services, ...}
 

Die Ausgabe ist meist eine Zeile pro Ressource.


Um eine detaillierte Beschreibung der Ressourcen zu erhalten, können Sie das describe für das kubectl

kubectl describe {nodes, pods, ...}
 

Die bereitgestellten Apps sind nur innerhalb des Clusters sichtbar. Wenn Sie die Ausgabe außerhalb des Clusters erhalten möchten, sollten Sie eine Route zwischen dem Terminal und dem Kubernetes-Cluster erstellen.

kubectl proxy
 

Es wird eine API geöffnet, über die wir alles aus dem Cluster erhalten können. Wenn Sie den Namen der Pods abrufen möchten, um Informationen darüber zu erhalten, sollten Sie den folgenden Befehl verwenden:

kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
 

Die Pods werden zur späteren Verwendung aufgelistet.

curl http://localhost:8001/api/v1/proxy/namespaces/default/pods/{pod_name}/
 

Zwei weitere gebräuchliche Befehle sind das Holen von Protokollen und das Ausführen eines Befehls von / in der containerisierten App.

kubectl logs {pod_name}
kubectl exec {pod_name} {command}
 

Das Konfigurieren der Tab-Vervollständigung für Ihre Shell kann wie folgt durchgeführt werden:

source <(kubectl completion zsh)   # if you're using zsh
source <(kubectl completion bash)  # if you're using bash
 

oder programmgesteuert:

source <(kubectl completion "${0/-/}")