English English French French Spanish Spanish German German
Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

So stellen Sie Anwendungen in Kubernetes bereit

How-to-Deploy-Applications-in-Kubernetes
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Kubernetes ist eine der beliebtesten Automatisierungsplattformen für die Bereitstellung, Skalierung und den Betrieb von Anwendungscontainern auf einem Cluster von Hosts oder Knoten.

Dieser Artikel behandelt eines der zentralen Objekte in Kubernetes: die Bereitstellung. Das Ziel besteht darin, sein Verhalten zu verstehen und zu erfahren, wie es erstellt, aktualisiert und gelöscht wird.

What is a Deployment?

Eine Bereitstellung ist eines der Objekte, die zum Starten von Pods verwendet werden. Kubernetes Best Practices fördern die Verwendung von Bereitstellungen für zustandslose Anwendungen. Ohne eine Bereitstellung müssten Sie mehrere Pods manuell erstellen, aktualisieren und löschen, was für viele Pods mühsam und nicht durchführbar wäre.

Eine Bereitstellung deklariert ein einzelnes Objekt in YAML die nicht nur die Pods erstellt, sondern auch sicherstellt, dass sie auf dem neuesten Stand sind und ausgeführt werden. Sie können Ihre Anwendungen auch einfach automatisch skalieren, indem Sie eine Bereitstellung auf Kubernetes verwenden. Daher wird eine Bereitstellung verwendet, um Versionen Ihrer Anwendungen in Pods zu skalieren, bereitzustellen und zurückzusetzen.

Ein Deployment teilt Kubernetes auch mit, wie viele Kopien eines Pods wir ausführen möchten, und Kubernetes kümmert sich um den Rest. Der zugeordnete Controller erstellt beim Erstellen einer Bereitstellung ein ReplicaSet aus Ihrer Konfiguration. Der dem ReplicaSet zugeordnete Controller erstellt eine Reihe von Pods aus der ReplicaSet-Konfiguration.

Die Vorteile der Verwendung einer Bereitstellung anstelle der direkten Erstellung eines ReplicaSets sind:

  • Historisierung des Objekts: Jede Änderung am Objekt (durch „Anwenden“ oder „Bearbeiten“) erstellt ein Backup der vorherigen Version.
  • Rollout- und Rollback-Management: Sie können in Verbindung mit dem vorherigen Punkt zu einer Konfiguration zurückkehren.

Creating a Deployment

Es gibt zwei Methoden, mit denen wir eine Kubernetes-Bereitstellung erstellen können:

Imperative Methode

Die Kubernetes-APIs ermöglichen einen direkteren und zwingenderen Ansatz, ohne dass Konfigurationsdateien oder Manifeste im YAML-Format erforderlich sind. Bei diesem Ansatz müssen wir nur sagen, was wir tun möchten, und Kubernetes übernimmt die Verantwortung dafür, zu definieren, was getan werden muss, um das erwartete Ergebnis zu erzielen.

Um die imperative Methode zu verwenden, verwenden Sie einfach den folgenden Befehl:

kubectl create deployment nginx-deployment --image nginx --port=80

Deklarative Methode

Bei dieser Methode müssen Sie alles deklarieren, und wenn Sie diesen Code verwenden, liest Kubernetes einfach Ihre Definitionen und erstellt genau wie dargestellt oder deklariert.

Um die deklarative Bereitstellung zu verwenden, müssen Sie eine YAML-Datei erstellen.

YAML-Datei für die Bereitstellung mit dem Namen new_deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  #Specifies the number of Pod Copies
  replicas: 3
 #Selects the Pod to be managed by the deployment
  selector:
    #Matches the defined labels
    matchLabels:
      deploy: example
  template:
    metadata:
      #Specifies the labels on the Pod.
       labels:
         deploy: example
    spec:
      containers:
        - name: nginx
          image: nginx:1.20.2 

In dieser YAML-Datei befindet sich nach dem Definieren der Kubernetes-API-Version, des Objekttyps, den Sie erstellen, und des Namens der Bereitstellung der Abschnitt spec. In diesem Abschnitt definieren Sie zunächst den Replicas-Schlüssel, der die Anzahl der Pod-Instanzen angibt, die die Bereitstellung aktiv halten muss.

Verwenden Sie eine Auswahlbezeichnung, um die Pods in der Bereitstellung zu identifizieren. Dazu können Sie das Deployment-Label verwenden, das angibt, dass alle Pods, die mit diesen Labels übereinstimmen, in der Bereitstellung gruppiert werden.

Danach haben Sie das Vorlagenobjekt, in dem Sie ein Pod-Modell in Ihrer Bereitstellungsspezifikation haben. Wenn die Bereitstellung Pods erstellt, werden sie mithilfe dieser Vorlage erstellt. Die Spezifikation eines regulären Pods finden Sie unter dem Vorlagenschlüssel.

Bei dieser Bereitstellung werden Nginx-Images mit Labels auf Pods bereitgestellt. Darüber hinaus müssen Sie auch in diesem Punkt vorsichtig sein, und der Pod ist die Skalierbarkeitseinheit in Kubernetes, also müssen Sie sich überlegen, welches Muster Sie verwenden möchten, wenn Sie mehrere Container in denselben Pod stellen.

Als nächstes wenden Sie die an new_deployment.yaml YAML-Datei verwenden Sie den folgenden Befehl:

kubectl apply -f new_deployment.yaml

Nach einigen Sekunden können Sie den Bereitstellungsstatus wie folgt abrufen: 

kubectl get all
einsetzen

Retrieve and Update Deployment

Beachten Sie, dass Sie die Pods erstellt haben, die Bereitstellung und auch ein Replicaset. Eine Bereitstellung erstellt und verwaltet also immer ein Replikatset. Jetzt können Sie den folgenden Befehl verwenden, um die Bereitstellung zu beschreiben:

kubectl describe deployment nginx-deployment 
beschreiben

Jetzt haben Sie eine vollständige Beschreibung der Bereitstellung. Es hebt die Strategie hervor, die verwendet wird, um die Pods zu erstellen/neu zu erstellen, wenn ein Update als RollingUpdate definiert wurde.

Das RollingUpdate Strategie ermöglicht eine geordnete Migration einer Version einer Anwendung auf eine neuere Version. Dies ist die in Kubernetes verwendete Standardstrategie.

Darüber hinaus haben wir auch die folgenden Strategien:

  • Neu erstellen: Beendet die derzeit laufenden Pod-Instanzen und „erstellt“ sie mit der neuen Version neu;
  • Blau Grün: Diese Strategie erstellt zwei separate, aber identische Umgebungen. In der blauen Umgebung läuft die Anwendung so, wie sie ist, während die Anwendung in der grünen Umgebung so läuft, wie sie in Zukunft sein wird;
  • Kanarienvogel: Eine Bereitstellungsstrategie, bei der eine Teilmenge von Benutzern an der inkrementellen Veröffentlichung einer Anwendung oder eines Dienstes beteiligt ist.

Wenn Sie sich für „Rolling-Update“ entscheiden, können Sie sein Verhalten über die Anzahl der gewünschten Replikate konfigurieren.

  • maxSurge können Sie (in Prozent oder absolut) angeben, wie viele Pods zusätzlich zu der Anzahl der derzeit konfigurierten Replikate erstellt werden können.
  • maxUnavailable können Sie (in Prozent oder absolut) angeben, wie viele Pods während der Aktualisierung „nicht verfügbar“ sein können, abhängig von der Anzahl der konfigurierten Replikate.

Abhängig von Ihrer Anwendung und Ihrem Autoscaler können Sie mit diesen Konfigurationen QoS sicherstellen oder Ihre Bereitstellungen beschleunigen.

Als nächstes müssen Sie die Pods auf 10 skalieren und das Nginx-Image-Tag auf das neueste ändern.

kubectl scale deployment nginx-deployment --replicas=10
Skala-1

Beachten Sie, dass 5 Container erstellt werden und von 10 Pods 5 verfügbar sind.

Verwenden Sie nach einigen Sekunden den folgenden Befehl: 

kubectl get all

Hier sehen Sie, dass alle Pods erstellt wurden und die Container ausgeführt werden.

alle-1

Deleting your Deployment

Um eine Kubernetes-Bereitstellung zu löschen, können Sie die folgenden Befehle verwenden:

kubectl delete deploy nginx-deployment 
kubectl delete deploy new_deployment.yaml

Helm: Simplify Deployments

Wenn Sie eine komplexe Anwendung bereitstellen möchten, die Dutzende oder sogar Hunderte von Kubernetes-Ressourcen verwendet, ist die kubectl ungeeignet, weshalb das Helm-Tool entwickelt wurde. Helm ist ein Paketmanager für Kubernetes, der auf kubectl aufbaut und die Anwendungsbereitstellung vereinfacht.

Im Helm-Vokabular wird eine Anwendung als Release bezeichnet. Es ist mit einem Diagramm verknüpft, dh einer Sammlung von Konfigurationsdateien im YAML-Format, die globale Variablen und Vorlagen enthalten, die Kubernetes-Ressourcen beschreiben.

Fazit

Die Bereitstellung ist ein wesentliches Kubernetes-Objekt. Da eine große Macht eine große Verantwortung mit sich bringt, müssen Sie vorsichtig sein, wenn Sie sie konfigurieren, oder riskieren Sie unerwartetes Verhalten. Weitere Informationen zu den Bereitstellungskonfigurationen finden Sie unter Kubernetes Dokumentation.

Sie können auch einige der besten erkunden Kubernetes-Tutorials von Grund auf neu lernen und Experte werden.

Danke an unsere Sponsoren
Weitere großartige Lektüre zu DevOps
Macht Ihr Geschäft
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder