Deployment Strategien in Kubernetes (2024)

Die deklarative Bereitstellung von Objekten ist eines der wichtigsten Features in Kubernetes. Wir stellen euch die wichtigsten Deployment-Strategien vor.

  • Was ist eine Deployment Strategie
  • Rolling Deployment
  • Recreate Update
  • Blue/Green Deployment
  • Canary Deployment
  • Fazit

Was ist eine Deployment Strategie?

Die Wahl einer geeigneten Deployment-Strategie kann Ausfallzeiten minimieren, die Zuverlässigkeit von Anwendungen verbessern und ganz allgemein dabei helfen, Kopfschmerzen im DevOps-Alltag zu verhindern. In diesem Beitrag beschäftigen wir uns deshalb mit den gängigen Deployment-Konzepten in Kubernetes.

Das Wichtigste zuerst – was genau bedeutet Deployment im Kubernetes-Ökosystem? Das Deployment beschreibt mittels einer deklarativen Anweisung – meist als YAML-Datei – den gewünschten Zustand des Systems. Nutzer geben nicht vor, wie ein Update ausgeführt wird, sondern deklarieren einen Endpoint, woraufhin der Kubernetes-Controller den Ist-Zustand dem Soll-Zustand anpasst. Über Deployments wird der Lifecycle von Pod-Instanzen und Clustern automatisiert. Sie ermöglichen eine schnellere Bereitstellung und helfen dabei, Fehler zu vermeiden.

Kubernetes bietet verschiedene Deployment-Strategien, mit denen Systeme auf unterschiedliche Weise und je nach Anforderungen aktualisiert werden können. Wir erklären die wichtigsten Strategien, zeigen Vor- und Nachteile und helfen euch dabei, eine geeignete Strategie für die Bereitstellung euerer Anwendungen zu finden.

Rolling Deployment

Das Rolling-Deployment ist Kubernetes default Strategie für Updates und dementsprechend einfach zu implementieren. Ausfallzeiten werden vermieden und die Performance-Einbußen sind meist überschaubar.

Nach und nach wird jeder einzelne Pod vom Kubernetes-Controller abgeschaltet und anschließend in der aktualisierten Version wieder neu gestartet. Dieser Prozess dauert an, bis alle Pods dem im Deployment deklarierten Zustand entsprechen. Aus diesem Vorgehen ergibt sich auch der größte Vorteil des Rolling Deployments – das System an sich bleibt die ganze Zeit über aktiv, wenn auch nicht bei voller Leistungsfähigkeit. Und sollte doch einmal etwas schiefgehen, sind Rollbacks verhältnismäßig einfach durchführbar. Mit steigender Größe der Anwendung steigt jedoch auch das Risiko, dass ein Rolling Update Fehler verursacht.

Beispiel:

spec: replicas: 10 strategy: type: RollingUpdate rollingUpdate: maxSurge: 3 maxUnavailable: 1

Recreate Update

Neben dem Rolling Deployment gehört Recreate zu den am häufigst genutzten Update-Strategien. In einem Recreate-Deployment werden alle bestehenden Instanzen eines Pods, die nicht dem deklarierten Zustand entsprechen, gleichzeitig deaktiviert. Anschließend erstellt der Kubernetes-Controller die neuen, aktualisierten Pods. Für die Dauer dieses Prozesses ist das System nicht erreichbar, weshalb diese Strategie meist in Entwicklungsumgebungen zum Einsatz kommt oder wenn eine kurze Downtime für das Unternehemen vorteilhafter ist, als eine Periode eingeschränkter Erreichbarkeit und Performance-Einbußen. Sind die genannten Nachteile für Anwender hinnehmbar, profitieren besonders umfangreiche und große Anwendungen von einem Recreate Update.

Beispiel:

spec: replicas: 3 strategy: type: Recreate

Blue/Green Deployment

Beim Blue/Green Deployment werden zwei Produktionsumgebungen parallel bereitgestellt. Die derzeitige stable v1 einer Anwendung nennt man Blue-Deployment, das Green-Deployment beinhaltet den neuen Code, bzw. den im Deployment deklarierten Soll-Zustand. Das Green-Deployment wird ausgiebig getestet und der eingehende Traffic bis auf Weiteres vollständig zum Blue-Deployment geroutet. Erst nach einer erfolgreich absolvierten Testphase, folgt die Umleitung des Traffics zum Green-Deployment und das Blue-Deployment wird für eventuelle, spätere Rollbacks archiviert.

Da der Zustand des Clusters in einem Schritt geändert wird, lassen sich Versionierungs-Fehler weitestgehend vermeiden und die Migration an sich ist schnell und unkompliziert. Allerdings birgt diese Strategie nicht unerhebliche Risiken, da auch Test-Protokolle sich immer wieder als fehlerhaft bzw. unvollständig herausstellen können. Der Einsatz von zwei vollwertigen Produktionsumgebungen erfordert natürlich auch den doppelten Ressourceneinsatz und ist dementsprechend kostenintensiv.

Beispiel Blue Deployment:

Service Selector

kind: Servicemetadata: name: frontend-01 labels: app: web-appselector: app: frontend version: v1.0.0

Deployment

kind: Deploymentmetadata: name: frontend-01spec: template: metadata: labels: app: frontend version: "v1.0.0"

Sobald die Test-Phase beendet ist, wird der Traffic auf das Green Deployment geroutet.

Beispiel Green Deployment:

Service Selector

kind: Servicemetadata: name: frontend-02 labels: app: web-appselector: app: frontend version: v2.0.0

Deployment

kind: Deploymentmetadata: name: frontend-02spec: template: metadata: labels: app: frontend version: "v2.0.0"

Canary Deployment

Das Canary-Deployment ähnelt in vielen Bereichen dem Rolling-Deployment, mit dem entscheidenden Unterschied, dass die Anwendung in kleinen Schritten einer festgelegten Anzahl von Nutzern (z.B. 5%, 10%, 25%) bereitgestellt wird. Im Unterschied zum Blue/Green-Deployment lassen sich Updates auf diesem Weg von echten Nutzern und unter realen Bedingungen testen. Im Vergleich zu allen anderen Deployment-Strategien ist das Canary-Deployment dank des hohen Maßes an Kontrolle mit dem geringsten Risiko verbunden.

Verlaufen die Tests zufriedenstellend, wird die neue Version schrittweise immer mehr Benutzern zugänglich gemacht und letztendlich wird das Canary-Deployment zur neuen Produktiv-Version. Canary-Deployments sind besonders hilfreich, wenn größere Updates, neue Features oder experimentelle Funktionen getestet werden sollen. Den Vorteilen stehen die hohen Ressourcen-Anforderungen gegenüber. Außerdem sind die Anforderungen an das Traffic Routing anspruchsvoll.

Original Deployment:

spec: replicas: 9

Neues Deployment:

 spec: replicas: 1

Fazit: die richtige Strategie finden

Wir haben in diesem Artikel einige der meistgenutzten Deployment-Strategien in Kubernetes besprochen und für euch die jeweiligen Vor- und Nachteile erörtert. Dabei wird deutlich, dass es bei der Wahl einer geeigneten Strategie darauf ankommt, die Ansprüche der eigenen Anwendungen und der Nutzer genau zu verstehen und darauf aufbauend eine Entscheidung zu treffen, die Vor- und Nachteile in der Wage hält.

Deployment Strategien in Kubernetes (2024)

FAQs

What is the deployment strategy in Kubernetes? ›

Kubernetes deployment has two common meanings: A resource object in Kubernetes that provides declarative updates to applications. It allows you to define the desired state of an application and handles the orchestration of changes to achieve that state. The process of deploying applications in a Kubernetes cluster.

What is deployment process in Kubernetes? ›

A Deployment manages a set of Pods to run an application workload, usually one that doesn't maintain state. A Deployment provides declarative updates for Pods and ReplicaSets. You describe a desired state in a Deployment, and the Deployment Controller changes the actual state to the desired state at a controlled rate.

What are the two common types of deployment strategies used in Devops? ›

The deployment configuration-based strategies are discussed in this section.
  • Rolling Strategy and Canary Deployments.
  • Recreate Strategy.
  • Custom Strategy.
  • Blue-Green Deployment using routes.
  • A/B Deployment and canary deployments using routes.
  • One Service, Multiple Deployment Configurations.

What is the simplest way to deploy Kubernetes? ›

Prerequisites for Kubernetes Deployment
  1. STEP 1: Installing of Kubernetes on master and work nodes:
  2. STEP 2: Clone a repository.
  3. STEP 3: Building an image from Dockfile.
  4. STEP 4: Push the Docker image to a Registry.
  5. Login to the Docker hub.
  6. Push the image to register.
  7. Command - Line Interface:
  8. Yaml Manifest.
Apr 12, 2024

What is another way to deploy applications in Kubernetes? ›

You can create and manage a Deployment by using the Kubernetes command line interface, kubectl. Kubectl uses the Kubernetes API to interact with the cluster. In this module, you'll learn the most common kubectl commands needed to create Deployments that run your applications on a Kubernetes cluster.

What is canary deployment in Kubernetes? ›

Imagine a scenario where you can test new features or updates in your software environment without risking a catastrophic failure. Enter Kubernetes canary deployment, a strategy that allows you to gradually roll out changes to a subset of users or nodes while monitoring their performance closely.

What is the CICD deployment strategy? ›

The Continuous Integration/Continuous Deployment (CI/CD) strategy is a crucial component of modern software development. It is an approach that allows developers to build, test, and deploy their code quickly and efficiently.

Can you name some deployment strategies? ›

Blue/green deployment, sometimes referred to as red/black deployment, is a technique for releasing applications by shifting traffic between two identical environments running differing versions of the application.

What are the three types of deployment model? ›

There are four cloud deployment models: public, private, community, and hybrid. Each deployment model is defined according to where the infrastructure for the environment is located. There are three main cloud service models: Software as a Service, Platform as a Service, and Infrastructure as a Service.

How to deploy a Kubernetes cluster? ›

Tutorial
  1. Step 1: Test the sample application locally. Fork and clone the sample notes application. ...
  2. Step 2: Containerize the application. ...
  3. Step 3: Create or get access to a Kubernetes cluster. ...
  4. Step 4: Make sure the Kubernetes manifest files are neat and clean. ...
  5. Step 5: Let's automate the deployment using Harness.
Feb 12, 2023

How do I deploy a node in Kubernetes? ›

Tutorial – Deploying a Node. js Application in Kubernetes
  1. Step 1: Creating the Node.js application. ...
  2. Step 2: Creating Dockerfile. ...
  3. Step 3: Building the image. ...
  4. Step 4: Checking our image. ...
  5. Step 5: Creating and running the container. ...
  6. Step 6: Running the web app. ...
  7. Step 7: Stopping and deleting the container.
Mar 11, 2024

What is resource deployment strategy? ›

Resource deployment is concerned with how an organization uses employees to achieve business goals. Think of it like a sports team. A coach strategically assigns players to different positions based on their individual skills – and how they work together as a team – hoping to bring home the trophy.

What is the blue-green deployment strategy? ›

A blue/green deployment is a deployment strategy in which you create two separate, but identical environments. One environment (blue) is running the current application version and one environment (green) is running the new application version.

Top Articles
Latest Posts
Article information

Author: Francesca Jacobs Ret

Last Updated:

Views: 6716

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Francesca Jacobs Ret

Birthday: 1996-12-09

Address: Apt. 141 1406 Mitch Summit, New Teganshire, UT 82655-0699

Phone: +2296092334654

Job: Technology Architect

Hobby: Snowboarding, Scouting, Foreign language learning, Dowsing, Baton twirling, Sculpting, Cabaret

Introduction: My name is Francesca Jacobs Ret, I am a innocent, super, beautiful, charming, lucky, gentle, clever person who loves writing and wants to share my knowledge and understanding with you.