A deep dive into Kubernetes Deployment strategies

A deep dive into Kubernetes Deployment strategies

20 mins read
Jun 10, 2026
Share
editor-page-cover

Key takeaways:

  • Kubernetes Deployments automate application updates, manage ReplicaSets, and ensure application stability.

  • ReplicaSets maintains the desired number of Pods and ensures application availability.

  • The rolling update strategy is the default strategy that minimizes downtime by incrementally updating Pods, making it ideal for production systems requiring high availability.

  • The recreate update strategy applies updates by stopping all Pods, causing downtime but ensuring consistency, which might be acceptable in controlled environments where some downtime is better than causing errors.

  • Canary updates gradually roll out to a subset of users to minimize risk and test changes. It is ideal for controlled testing but requires separate Deployments.

  • Deployment YAML files define update strategies and desired configurations and facilitate rollbacks.

With the use of containerized applications and microservices on the rise, there’s never been a better time to become a Kubernetes expert. Whether you’re a developer eager to learn Kubernetes or a seasoned Docker expert looking to expand your skill set, this blog will help you take the next step toward Kubernetes expertise.

We’ll start by exploring the Deployment object,  which is the key to managing ReplicaSets and enabling smooth, live system updates. Next, we’ll explore Kubernetes Deployment strategies.

Choosing the right deployment strategy can mean the difference between a seamless user experience and a disastrous outage. While Kubernetes provides several options, this blog will focus on three core strategies:

  • The rolling update strategy

  • The recreate update strategy

  • The canary update strategy

Before we examine these strategies in detail, let’s first understand the fundamentals of Kubernetes Deployments and the vital role ReplicaSets play in maintaining application stability.

What is Kubernetes?#

Kubernetes is an open-source container orchestration system that automates application scaling and management. Kubernetes is widely used to manage clusters of containers, ensuring applications are resilient, scalable, and efficiently distributed.

While Kubernetes is incredibly powerful, it’s also notoriously difficult to learn.

What is Deployment in Kubernetes?#

A Deployment is a resource object in Kubernetes that defines the desired state for your program.

Deployments are declarative, meaning you don’t specify the exact steps to achieve the desired state. Instead, you define what you want, and the Deployment controller makes it happen efficiently. Think of it like ordering omelets at a restaurant: you simply tell the chef how many omelets you need, and they ensure you get them without worrying about how they’re cooked.

Once a Deployment is running, it continuously monitors the application’s current state and compares it to the desired state. If there’s a mismatch, the Deployment controller automatically adjusts the current state to align with the desired configuration. This automatic state maintenance is what gives Kubernetes its beloved self-healing properties.

Desired states can include the number of Pods running, the type of Pods, the container images available to the program, and the desired workload for each Pod. If any aspect of the desired state is missing, the Deployment Controller will alter the program until it is met.

Deployments are incredibly useful for automatically managing updates to the Kubernetes applications. Without Deployments, you’d have to manually end all old Pods, start new Pods, and manually check to see if any problems occurred during Pod creation.

This brings us to an important question: How does the Deployment controller maintain the application’s state? Deployments maintain a program’s desired state mainly by using ReplicaSets.

Quick Start Kubernetes

Cover
Quick Start with Kubernetes

Kubernetes helps deploy and manage containerized applications at scale. It abstracts the underlying infrastructure, so it doesn’t matter if you’re deploying your applications to Amazon Web Services, Google Cloud, Linode, or your own on-premises data center. In this course, you’ll learn why we have Kubernetes, what it is, where it’s going, and how to create containerized applications. By the end of this course, you’ll be ready to tackle more advanced concepts and take your Kubernetes skills to the next level.

10hrs
Beginner
18 Playgrounds
8 Quizzes

What is a ReplicaSet?#

A ReplicaSet is a core Kubernetes object that ensures that a specified number of identical Pods are running at any given time. If a user-facing Pod fails or becomes overworked, the Deployment allocates work to a Pod from the ReplicaSet to maintain responsiveness. If a Pod from the ReplicaSet fails, it automatically creates an additional Pod from the template.

It’s best practice not to manage ReplicaSets directly. You should perform all actions against the Deployment object and leave the Deployment to manage ReplicaSets.

Here’s an overview of Deployments, ReplicaSets, and Pods:

  • Pods: The basic unit in Kubernetes that holds your application and its workload.

  • ReplicaSets: Ensure the correct number of Pods are running and match the desired state.

  • Deployments: Define the desired state of the application, manage ReplicaSets, and handle workload updates and scaling.

A Deployment manages only one type of Pod with a specific configuration, but it can create multiple copies (replicas) of that Pod.

If you need to manage Pods with different setups, you must create separate Deployments for each type. This keeps things organized and allows Kubernetes to handle each group of Pods separately for scaling and updates.

What Deployment strategies does Kubernetes provide?#

Kubernetes provides different Deployment strategies that allow you to update your applications based on the system’s specific needs. The three most common strategies are:

  • Rolling update strategy: Minimizes downtime but takes longer to update.

  • Recreate strategy: Causes downtime but updates quickly.

  • Canary strategy: Updates a small portion of users first, with a full rollout later.

Let’s take a deeper look at each of these three strategies!

The rolling update strategy (Default)#

The rolling update strategy is a gradual process that allows you to update your system with only a minor effect on performance and no downtime.

In this strategy, instead of taking down the entire application at once, Pods are replaced incrementally, one by one, or in small batches, ensuring that some instances of the application are always running.

The flow of the rolling update strategy
The flow of the rolling update strategy
Pros and cons#

There is a minor performance reduction during this update process because the system consistently has one active Pod short of the desired number. This is often preferred to a full system deactivation, but this strategy isn’t suited for all situations.

Factors to consider:#

Some considerations when deciding to use a rolling update strategy are as follows:

  • Question: How will my system react to momentarily duplicated Pods?

    • Answer: The rolling update strategy is suitable if your system can handle temporarily duplicated Pods without impacting performance or causing conflicts. For example, e-commerce websites.

  • Question: Is the update substantial enough to malfunction with some Pods still running old specifications?

    • Answer: For updates that require all Pods to be on the same version to function correctly, avoid the rolling update strategy and consider the recreate strategy instead. For example, banking systems.

  • Question: Will a minor performance reduction greatly affect my system’s usability? How finely time-sensitive is it?

    • Answer: If your system is highly sensitive to performance drops or requires real-time processing, carefully evaluate whether the rolling update strategy aligns with your requirements. For example, stock trading platforms.

For example, imagine we wanted to change the specifications for our Pods. We’d first change the Pod template to new specifications, passed from the Deployment to the ReplicaSet. The Deployment would then recognize that the current program state (Pods with old specifications) differs from the desired state (Pods with new specifications). The Deployment would create Pods and a ReplicaSet with the updated specifications and transfer workload one by one from the old Pods to the new Pods. By the end, we’ll have an entirely new set of Pods and ReplicaSet without any service downtime.

Rolling update strategy implementation#

To illustrate the rolling update strategy, let’s examine the following YAML file. This file creates 10 replicas of an application. Notice that the value of the spec.strategy.type is RollingUpdate.

YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-deploy
spec:
replicas: 10
selector:
matchLabels:
app: hello-world
minReadySeconds: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-Pod
image: educative/k8sbook:latest
ports:
- containerPort: 8080

Finally, we can create the Deployment with the following command:

$ kubectl apply -f deploy.yml

If we want to change some configuration, let’s say, change the number of replicas to 5, we’d change the value of spec.replicas to 5 and then use the kubectl apply command again. As the value of spec.strategy is RollingUpdate, the number of replicas would gradually decrease.

Try the Deploying a Web Application over Kubernetes project, where we containerize and deploy a Web application onto a Kubernetes cluster.

The recreate update strategy#

The recreate update strategy is an all-or-nothing process that allows you to update all aspects of the system at once with a brief downtime period.

The flow of the recreate update strategy
The flow of the recreate update strategy

In this strategy, the Deployment selects all outdated Pods and deactivates them simultaneously. Once all old Pods are deactivated, the Deployment creates updated Pods for the entire system. The system is inoperable during this process.

The recreate strategy is used for systems that cannot function in a partially updated state or if you would rather have downtime than provide users with a lesser experience.

Note: The bigger the update, the more likely a rolling update will cause an error. Therefore, a recreate strategy is better for large updates and overhauls.

Factors to consider:#

Here are some factors to consider when choosing a recreate update strategy for your system:

  • Question: Would the users have a better experience with downtime or temporarily reduced performance?

    • Answer: Consider the recreate strategy if a brief downtime provides a better user experience than a degraded performance. For example, banking systems during maintenance windows.

  • Question: Could the system function during a recreate update?

    • Answer: The recreate strategy can be considered if the system can tolerate temporary downtime without impacting critical operations. For example, internal tools or non-urgent services.

  • Question: Is there a time we could update the system without affecting a significant number of users?

    • Answer: If updates can be scheduled during periods of low user activity, downtime caused by the recreate strategy can be minimized. For example, e-commerce or banking websites during late-night hours.

Recreate update strategy implementation#

Let’s look at the following YAML file to see how the recreate update strategy is implemented. The Deployment is identical to the above file except that the value of spec.strategy.type is now Recreate instead of RollingUpdate.

YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-deploy
spec:
replicas: 10
selector:
matchLabels:
app: hello-world
minReadySeconds: 10
strategy:
type: Recreate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-Pod
image: educative/k8sbook:latest
ports:
- containerPort: 8080

Just as last time, we can create the Deployment using the following command:

$ kubectl apply -f deploy.yml

If we want to make any changes to the configuration, we’ll edit the YAML file and then use the kubectl apply command to apply those changes. When the deployment controller detects a difference between the desired and the current configuration, it will delete all the current (running Pods) and create new Pods with the new configuration until the desired configuration is achieved.

Get hands-on experience by trying our Fault-Tolerant Web Hosting on Kubernetes project, where we’ll unleash Kubernetes’ ability to continue hosting the web services when one or more of the system components leads to failure.

The canary update strategy#

A canary update Deployment is a gradual rollout strategy in which updates are introduced to a small subset of users first. This allows you to monitor the changes in a controlled environment before rolling them out to everyone. This approach minimizes risks by testing the update’s impact on a smaller scale.

The canary update strategy
The canary update strategy

In this strategy, the Deployment creates a few new Pods while keeping most Pods on the previous version. The ratio can vary based on the desired rollout speed and risk tolerance. Most users still use the previous version, but a small subset unknowingly uses the new version to act as testers.

If we don’t detect bugs from this subset, we can scale up the updated ReplicaSet to produce a full rollout. If we find a bug, we can easily roll back the few updated Pods until we’ve fixed the bug.

Pros and cons#

The advantage of the canary update strategy is it allows you to test a new version without the risk of a full system failure. In the worst-case scenario, all users from the test subset experience critical errors while 75% or more of the user base continues without interruption.

The rollback process is also much quicker than the rolling update strategy because you only have to roll back a portion of the Pods rather than the entire system.

The downside is that the updated Pods will require a separate Deployment, which can be hard to manage at scale. Also, the canary update strategy results in a slower rollout due to the waiting period between rolling out to our initial subset and completing a full rollout.

Factors to consider:#

When considering the canary strategy, some key considerations are:

  • Question: What’s the worst-case scenario if this update fails?

    • Answer: If the potential impact of a failure is severe (e.g., financial losses, user dissatisfaction), the canary strategy is ideal as it limits the exposure of the new release to a small group, allowing quick rollback if issues arise. For example, e-commerce checkout systems.

  • Question: How soon do I need to finish the full rollout?

    • Answer: If a rapid rollout is necessary, the canary strategy may not be suitable due to the monitoring period required. In such cases, prioritize thorough internal testing before deployment. For example, critical updates during a high-traffic event.

  • Question: How much internal testing have I done?

    • Answer: If extensive internal testing has been conducted, the canary strategy can serve as a final safeguard to verify changes in a real-world environment before full deployment, such as feature updates for a mobile app.

Canary update strategy implementation#

Let’s look at the following two YAML files to understand how the canary update strategy is implemented. We’ll need to create two different versions of a Deployment with some changes to the application. We can use different values of the same label to differentiate between two different releases. In our case, we’re using the label track.

First version (Outdated)#

Our first file, k8s-deployment.yaml, will be our outdated version that most of our Pods will run.

YAML
name: helloworld
...
spec:
replicas: 3
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: helloworld
track: stable
...
image: educative/helloworld:1.0

This will create 3 Pods of our application using the educative/helloworld:1.0 image and keeping the value of the label track as stable, meaning that these Pods will be based on the old Pod specifications.

Notice: Unlike the previous implementations, the canary is not listed under strategy as its implementation is more complicated. Instead, both versions are listed as rollingUpdates because updates within each version will be rolled out while the overall system’s strategy is canary.

Second version (Updated)#

Now, let’s look at the following snippet containing our updated configuration. Here, the value of the track label is canary, and we’re also using a different version of the image. We’re also creating only a single Pod to maintain the 75:25 ratio. This ensures that most users will interact with the old configuration.

YAML
name: helloworld-canary
...
spec:
replicas: 1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: helloworld
track: canary
...
image: educative/helloworld:2.0

Also, notice that both Deployments have a common label with a common value, i.e., app: helloworld. The Service will use this label to identify that both sets of Pods belong to the same application, and the traffic will be redirected to both versions.

Once you’re satisfied that the updated release works as intended, we can replace the image in our first release (stable) and remove the second one (canary). We can use the kubectl delete command to remove the canary Deployment.

All of our Pods will now have the updated configuration with minor chances of any bugs.

Try the Deploy a Full Stack Web Application over Kubernetes project to get hands-on practice with Kubernetes Services and ConfigMaps and start your journey to become a Kubernetes expert.

To summarize the deployment strategies, let’s have a look at the following table:

Strategy

Pros

Cons

Ideal Use Case

Rolling Update

Minimal downtime

Slower updates

High-availability systems

Recreate

Ensures consistency

Temporary downtime

Systems with non-critical workloads

Canary

Reduces risk of failures

Requires complex setup

Testing changes on a subset

Modern Kubernetes deployments with GitOps#

As Kubernetes adoption has grown, deployment practices have evolved beyond manually running kubectl apply commands. Modern teams often manage application deployments through GitOps, a workflow that uses Git repositories as the single source of truth for both infrastructure and application configuration.

GitOps combines Kubernetes' declarative model with automated deployment tools such as Argo CD and Flux. Instead of making changes directly in a cluster, engineers update YAML files in Git repositories. GitOps tools then detect those changes and automatically synchronize the cluster state.

This approach improves reliability, auditability, and collaboration while reducing the risk of configuration drift between environments.

What is GitOps?#

GitOps is an operational framework that uses Git repositories as the authoritative source of configuration for Kubernetes environments.

Key principles include:

  • Git as the source of truth

  • Declarative infrastructure and application manifests

  • Automated synchronization between Git and clusters

  • Version-controlled deployment history

  • Continuous delivery through Git workflows

Traditional workflow:

kubectl apply -f deployment.yaml

GitOps workflow:

Update deployment.yaml↓Commit changes to Git↓Push to repository↓GitOps tool detects change↓Cluster automatically updates

In a GitOps environment, engineers typically never make direct production changes. Instead, every deployment is triggered through a Git commit.

GitOps has become one of the most widely adopted Kubernetes deployment models because it solves several operational challenges.

Benefits include:

  • Reduced deployment errors

  • Better change tracking and auditability

  • Easier rollbacks using Git history

  • Improved collaboration through pull requests

  • Consistent environments across teams

  • Stronger compliance and governance controls

Because every change is stored in Git, teams can quickly determine who made a change, when it was made, and why it was introduced.

Argo CD#

Argo CD is one of the most popular GitOps platforms for Kubernetes. It continuously monitors Git repositories and automatically synchronizes cluster state whenever changes occur.

Key capabilities include:

  • Pull-based deployment model

  • Automated synchronization

  • Visual deployment dashboard

  • Rollback support

  • Multi-cluster management

  • RBAC and enterprise integrations

Typical Argo CD workflow:

Git Commit↓Argo CD detects change↓Cluster synchronization↓Deployment update↓Application rollout

One reason Argo CD is widely adopted is its rich user interface. Teams can easily visualize deployment status, synchronization health, application versions, and rollout progress from a centralized dashboard.

Flux#

Flux is another popular GitOps solution and a graduated CNCF project. Like Argo CD, Flux continuously reconciles Kubernetes clusters with Git repositories.

Key characteristics include:

  • Kubernetes-native architecture

  • Lightweight deployment model

  • Automated reconciliation

  • Git and Helm support

  • Strong integration with cloud-native tooling

Flux is often preferred by teams that want a more minimal GitOps experience while still benefiting from automated deployments and configuration management.

Common use cases include:

  • Kubernetes platform engineering

  • Multi-environment deployments

  • Infrastructure-as-code workflows

  • Continuous delivery pipelines

Argo CD vs Flux#

Feature

Argo CD

Flux

User Interface

Rich dashboard

Minimal

Learning Curve

Moderate

Moderate

CNCF Project

Yes

Yes

GitOps Automation

Yes

Yes

Multi-cluster Support

Yes

Yes

Enterprise Adoption

High

High

Both tools solve similar problems and are widely used in production environments. The choice often depends on team preferences, operational requirements, and existing tooling.

How deployment strategies work with GitOps#

A common misconception is that GitOps replaces Kubernetes deployment strategies. In reality, GitOps and deployment strategies solve different problems.

GitOps determines how changes reach the cluster, while Kubernetes determines how updates are applied to running workloads.

Rolling updates#

Rolling updates remain the most common deployment strategy in GitOps environments.

Workflow:

Git change↓Argo CD / Flux sync↓Deployment updated↓Rolling update executed by Kubernetes

The GitOps tool updates the Deployment resource, and Kubernetes performs the rollout.

Recreate deployments#

Recreate strategies can also be managed through GitOps.

Example:

strategy:type: Recreate

Once committed to Git, the GitOps platform applies the updated configuration and Kubernetes performs the deployment according to the specified strategy.

Canary deployments#

Canary deployments are frequently combined with GitOps workflows.

Popular tools include:

  • Argo Rollouts

  • Flagger

  • Service mesh integrations

Workflow:

Git commit↓GitOps sync↓Canary deployment begins↓Traffic gradually shifts↓Full rollout or rollback

Blue-green deployments#

Advanced GitOps environments often support blue-green deployments.

Benefits include:

  • Near-zero downtime

  • Fast rollback capability

  • Safer production releases

Again, GitOps manages configuration changes while Kubernetes and deployment tooling handle traffic switching.

Example GitOps deployment workflow#

A typical production deployment might look like this:

Step 1: Developer updates image version in deployment.yaml

image: myapp:v2.1.0

Step 2: Commit changes to Git

git commit -m "Upgrade application to v2.1.0"

Step 3: Push changes to the repository

git push origin main

Step 4: Argo CD or Flux detects the change

Step 5: Cluster state automatically synchronizes

Step 6: Kubernetes begins a rolling update

Step 7: Monitoring systems verify deployment health

Developer↓Git Repository↓Argo CD / Flux↓Kubernetes Cluster↓Rolling Update↓Monitoring & Validation

No engineer needs to manually log into the cluster and execute deployment commands.

GitOps and certification relevance#

GitOps is not currently a major hands-on focus of the CKA or CKAD exams, but it has become increasingly important in production Kubernetes environments.

Why it matters:

  • GitOps appears frequently in Kubernetes job descriptions

  • Argo CD is one of the most requested Kubernetes ecosystem tools

  • Modern platform engineering teams commonly adopt GitOps workflows

  • GitOps concepts complement deployment and rollout knowledge tested on certification exams

Understanding GitOps can help bridge the gap between certification preparation and real-world Kubernetes operations.

Best practices#

When implementing GitOps workflows, consider the following recommendations:

  • Treat Git as the single source of truth

  • Avoid manual production changes whenever possible

  • Use pull requests for deployment approvals

  • Monitor synchronization status continuously

  • Automate rollback procedures

  • Store environment configurations separately

  • Use progressive delivery for high-risk deployments

  • Integrate observability into deployment workflows

These practices improve reliability while maintaining clear deployment history and operational transparency.

Deployment strategies and GitOps work together rather than compete with each other. Deployment strategies such as RollingUpdate, Recreate, Canary, and Blue-Green determine how Kubernetes performs updates, while GitOps tools determine how deployment changes reach the cluster.

Modern Kubernetes teams often combine GitOps platforms such as Argo CD or Flux with Kubernetes deployment strategies to create reliable, auditable, and automated delivery pipelines. As cloud-native adoption continues to grow, understanding both concepts is becoming an increasingly valuable skill for platform engineers, DevOps engineers, and Kubernetes practitioners.

GitOps callout: Many Kubernetes teams rarely run kubectl apply manually in production. Instead, Git commits become deployment events, and GitOps platforms automatically synchronize those changes to the cluster.

Deployment strategies for CKA and CKAD exam preparation#

Kubernetes Deployments are among the most heavily tested workload management topics on both the Certified Kubernetes Administrator (CKA) and Certified Kubernetes Application Developer (CKAD) exams. Whether you're creating applications, scaling workloads, or troubleshooting failed rollouts, understanding Deployment strategies is essential for certification success.

The good news is that the concepts tested on the exams closely mirror real-world Kubernetes operations. If you're comfortable creating Deployments, performing rolling updates, checking rollout status, and rolling back failed releases, you'll be well prepared for many deployment-related exam tasks.

CKA vs CKAD: Where deployment strategies fit#

Certification

Focus

CKA

Cluster administration and operations

CKAD

Application development and deployment

Deployment strategies appear in both certifications, but the emphasis differs slightly. CKAD focuses more heavily on application lifecycle management, including creating, updating, scaling, and rolling back Deployments. CKA focuses on operational reliability, troubleshooting, and ensuring applications remain healthy during updates.

Exam objective mapping#

Deployments

High

High

ReplicaSets

High

High

Rolling Updates

High

High

Rollbacks

High

High

Recreate Strategy

Medium

Medium

Canary Deployments

Medium

High

Scaling Deployments

High

High

Deployment YAML

High

High

CKAD exam scenarios#

The CKAD exam focuses on deploying and managing applications. You should expect hands-on tasks that require you to create, update, and troubleshoot Deployments directly from the command line.

Common CKAD tasks include:

  • Creating a new Deployment

  • Updating a container image

  • Scaling a Deployment

  • Performing a rolling update

  • Verifying rollout status

  • Rolling back a failed deployment

  • Editing Deployment manifests

Common commands:

# Create a deploymentkubectl create deployment web-app --image=nginx# Scale deploymentkubectl scale deployment web-app --replicas=5# Update container imagekubectl set image deployment/web-app nginx=nginx:1.25# Check rollout progresskubectl rollout status deployment/web-app# Roll back deploymentkubectl rollout undo deployment/web-app

For CKAD candidates, it's important to be comfortable making these changes quickly without relying heavily on documentation.

CKA exam scenarios#

While CKAD focuses on building and updating applications, CKA often tests your ability to operate and troubleshoot them.

Common CKA scenarios include:

  • Diagnosing failed Deployments

  • Investigating unavailable Pods

  • Verifying ReplicaSet health

  • Managing rolling updates safely

  • Ensuring high availability during upgrades

  • Troubleshooting rollout failures

You may be given a cluster where an application is failing to update successfully and asked to identify the root cause. Understanding the relationship between Deployments, ReplicaSets, and Pods is critical.

For example:

# View deployment statuskubectl get deployment# Inspect deployment detailskubectl describe deployment web-app# View ReplicaSetskubectl get rs# View Podskubectl get pods# Inspect failing Podkubectl describe pod pod-name

Commands you should memorize#

These commands appear frequently in both certification exams and day-to-day Kubernetes operations.

kubectl get deployment

View Deployments

kubectl describe deployment

Inspect Deployment

kubectl rollout status

Check rollout progress

kubectl rollout history

View revisions

kubectl rollout undo

Roll back changes

kubectl scale deployment

Scale replicas

kubectl set image

Update container images

Common exam mistakes#

Even candidates who understand Deployments conceptually can lose points due to simple operational mistakes.

Forgetting to verify rollout status

After updating an image or modifying a Deployment, always confirm the rollout completed successfully.

kubectl rollout status deployment/web-app

Editing the wrong Deployment

Carefully verify resource names before making changes, especially in clusters containing multiple applications.

Confusing ReplicaSets and Deployments

Remember that Deployments manage ReplicaSets, and ReplicaSets manage Pods. Most application updates should be performed through the Deployment.

Ignoring Pod readiness

A Deployment may exist but still fail to serve traffic if Pods never become Ready.

kubectl get podskubectl describe pod pod-name

Forgetting rollback commands

If an update fails, quickly reverting to a previous version is often the fastest solution.

kubectl rollout undo deployment/web-app

Deployment strategy exam cheat sheet#

RollingUpdate

None or minimal

Very High

Recreate

Yes

Moderate

Canary

Minimal

Moderate to High

RollingUpdate is the default Deployment strategy and the most important one to understand for both exams. You should know how Kubernetes gradually replaces Pods while maintaining application availability.

Recreate removes all existing Pods before starting new ones. It's simpler but introduces downtime and appears less frequently on exams.

Canary deployments gradually expose new versions to users and are becoming increasingly relevant in production environments, particularly for CKAD candidates.

Final takeaway#

Rolling updates, rollbacks, ReplicaSets, and Deployment troubleshooting are among the most important workload management topics on both the CKA and CKAD exams. You should be comfortable creating, updating, scaling, inspecting, and rolling back Deployments entirely from the command line.

More importantly, understand how Deployments interact with ReplicaSets and Pods behind the scenes. This knowledge not only helps you pass certification exams but also prepares you for real-world Kubernetes operations, where safe application rollouts are a daily responsibility.

Exam tip: If you're unsure what's wrong with a Deployment, start with kubectl describe deployment, check the associated ReplicaSet, inspect the Pods, and review rollout status. Most deployment issues can be diagnosed quickly using these commands.

By now, you probably have a good grasp of the deployment strategies. For a much deeper dive into Kubernetes and deployment strategies, explore the following courses:

Learn Kubernetes: A Deep Dive

Cover
Learn Kubernetes: A Deep Dive

The course covers key Kubernetes concepts, including pods, services, and deployments. Once you become proficient in these important areas, you will learn about Kubernetes architecture, building clusters, and deploying and managing applications. In the last part of the course, you explore threat modeling and real-world security practices. By completing the course, you can effectively use Kubernetes in your projects.

16hrs
Advanced
48 Playgrounds
18 Quizzes

Kubernetes in Practice

Cover
Kubernetes in Practice

Kubernetes in Practice is your one-stop shop for learning how to build, deploy, scale, and manage Kubernetes in a step-by-step process. You will learn all the most important concepts including: architecture, pods, deployments, services, ingress, and a whole lot more. Once you have the fundamentals out of the way, you will get the opportunity to put your skills to work in a project where you will create and run an application in a real Kubernetes cluster. By the time you finish this course, you will have complete confidence when it comes to deploying and managing kubernetes clusters.

5hrs 20mins
Beginner
37 Playgrounds
11 Quizzes

Frequently Asked Questions

What is a Deployment strategy?

A Deployment strategy is an approach that defines how the current release will be transitioned to a new release while considering factors like downtime, risk mitigation, and user experience.

How many types of deployment strategies are there?

In general, several deployment strategies in Kubernetes and software development are tailored to different use cases and system requirements. The most common ones include:

  • Rolling update
  • Recreate
  • Canary Deployment
  • Blue-Green Deployment
  • A/B Testing
  • Shadow Deployment
  • Rolling with partition
  • Progressive delivery
  • Immutable infrastructure

Which is the default Deployment strategy in Kubernetes?

The rolling update is the default Deployment strategy in Kubernetes.

Which Kubernetes Deployment strategies should I prefer?

The choice of Kubernetes Deployment strategy depends on your application’s scale and its need for downtime, risk tolerance, and update complexity.


Written By:
Nimra Mubashir