What is Kubernetes?
Kubernetes is open-source orchestration software for deploying, managing, and scaling containers
Modern applications are increasingly built using containers—microservices packaged with their dependencies and configurations. Kubernetes, or k8s for short, is open-source software for deploying and managing those containers at scale. With Kubernetes, you can build, deliver, and scale containerized apps faster.Explore Kubernetes with this simple learning path
How Kubernetes works
As applications grow to span multiple containers deployed across multiple servers, operating them becomes more complex. To manage this complexity, Kubernetes provides an open source API that controls how and where those containers will run.
It also provides the ability to orchestrate a cluster of virtual machines and schedule containers to run on those virtual machines based on their available compute resources and the resource requirements of each container. Containers are grouped into pods, the basic operational unit for Kubernetes, which can be scaled to your desired state.
Kubernetes helps manage service discovery, incorporate load balancing, track resource allocation, scale based on compute utilization, check the health of individual resources, and enable apps to self-heal by automatically restarting or replicating containers.Learn more about Kubernetes basics
How Kubernetes works
Why use Kubernetes?
Implement container-based environments in a portable, scalable, and extensible way.
Move containerized workloads from local development machines to production—seamlessly. Orchestrate containers consistently in different environments across on-premises infrastructure and public and hybrid clouds.
Define complex containerized applications and deploy them globally across a cluster of servers—or even multiple clusters—as Kubernetes optimizes resources according to your desired state. With built-in auto-scaler, Kubernetes can easily scale your application horizontally while automatically monitoring and maintaining container health.
Access a wide and ever-growing collection of extensions and plugins created by the developers and companies that form the Kubernetes community. A conformant Kubernetes service allows you to take full advantage of these community offerings and add capabilities such as security, monitoring, management.
Containerized applications promise increased agility, but Kubernetes alone can’t realize the full benefits of that agility. In your journey of adopting Kubernetes, consider trying out the following together in your Kubernetes platform.
- Infrastructure automation or serverless Kubernetes to eliminate routine tasks like provisioning, patching, and upgrading.
- Tools for containerized app development and continuous integration and continuous deployment workflows.
- Services to manage security, governance, identity and access. An enterprise-grade platform with end-to-end development, operations and security control experience can save you time on infrastructure management and roll out updates faster without compromising security and reliability.
Achieve agility at scale with Kubernetes and DevOps
As containers, environments, and the teams that work with them multiply, release frequency can increase—along with developmental and operational complexity. Move quickly at scale with enhanced security by employing DevOps in Kubernetes environments, you can move quickly at scale with enhanced security.
Deliver code faster with continuous integration and continuous deployment (CI/CD)
While containers provide a consistent application packaging format that eases the collaboration between development and operations teams, CI/CD can accelerate the move from code to container and to Kubernetes cluster in minutes by automating those tasks.Set up CI/CD for Kubernetes
Manage resources effectively with infrastructure as code
Infrastructure as code promotes consistency and visibility of compute resources across teams—reducing the likelihood of human error. This practice works hand-in-hand with the declarative nature of Kubernetes applications powered by Helm. Combining the two allows you to define apps, resources, and configurations in a reliable, trackable, and repeatable way.Deploy a Kubernetes cluster with Terraform
Accelerate the feedback loop with constant monitoring
Immutable containers, frequent releases, and an abstracted orchestration layer make observability more challenging and even more critical. To shorten the time between bugs and fixes, you’ll need a complete view of your resources, cluster, Kubernetes API, containers, and code—from container health monitoring to centralized logging. That view helps to prevent resource bottlenecks, trace malicious requests, and keep your Kubernetes applications healthy.See how real-time container insights work
Balance speed and security with DevOps
Get built-in, real-time observability as part of the DevOps workflow. Apply compliance checks and reconfigurations automatically to secure your build and release pipeline—and your Kubernetes application as a result.See continuous security in action
Example DevOps workflow with Kubernetes
- 1Rapidly iterate, test, and debug different parts of an application together in the same Kubernetes cluster.
- 2Merge and check code into a GitHub repository for continuous integration. Then, run automated builds and tests as a part of continuous delivery.
- 3Verify the source and integrity of container images. Images are held in quarantine until they pass scanning.
- 4Provision Kubernetes clusters with tools like Terraform. Helm charts installed by Terraform define the desired state of app resources and configurations.
- 5Enforce policies to govern deployments to the Kubernetes cluster.
- 6The release pipeline automatically executes pre-defined deployment strategy with each code.
- 7Add policy audit and automatic remediation to the CI/CD pipeline. For example, only the release pipeline has permission to create new pods in your Kubernetes environment.
- 8Enable app telemetry, container health monitoring, and real-time log analytics.
- 9Address issues with insights and inform plans for the next sprint.
Build on the strengths of Kubernetes with Azure
Automate provisioning, upgrading, monitoring, and scaling with the fully managed Microsoft Azure Kubernetes Service (AKS). Get serverless Kubernetes, a simpler development-to-production experience, and enterprise-grade security and governance.Learn more about AKS
Kubernetes belongs to the community
Kubernetes was created by—and thrives because of—the thousands of individuals and hundreds of corporations who have given their wisdom, code, and effort to the project. Build the success of your software on top of their impassioned, continuing contributions.
Open source software with enterprise commitment
To make Kubernetes easier for organizations to adopt—and easier for developers to use—Microsoft has tripled the number of employees who participate in the open source project in just three years. Now the third-leading corporate contributor, Microsoft works to make Kubernetes more enterprise-friendly and accessible by bringing the latest learnings and best practices from working with diverse customers to the Kubernetes community.
Get started with Kubernetes on Azure
Create a CI/CD pipeline
Prepare your application
Deploy to Kubernetes
Create an Azure DevOps project to get started with CI/CD best practices.
Select a built-in application template or bring your own code.
Then, select Kubernetes as the deployment target.
Create a new AKS cluster—or choose an existing cluster.
When your cluster is ready, Azure DevOps deploys the container to the AKS cluster. Click on the external endpoint to view your application.
Once your application is live, follow the links to see how you can modify it.
FAQ – Kubernetes
Kubernetes and Docker work together.
Docker provides an open standard for packaging and distributing containerized applications. Using Docker, you can build and run containers, and store and share container images.
Kubernetes orchestrates and manages the distributed, containerized applications that Docker creates. It also provides the infrastructure needed to deploy and run those applications on a cluster of machines.
A Kubernetes deployment allows you to describe your desired application deployment state. Kubernetes scheduler ensures the actual state matches your desired state—and maintains that state in the event one or more pods crash. Kubernetes deployments also allow you to consistently upgrade your applications without downtime.Watch a full discussion of this topic
Deployment to Kubernetes using DevOps typically involves a respository such as Git for version management. The repository serves as the beginning of the CI/CD line. Depending on the approach you use, changes in the repository trigger integration, build, delivery, and deployment activities.See how AKS works with Azure DevOps in detail
Kubernetes is useful in scenarios ranging from moving applications to the cloud to simplifying challenges in machine learning and AI.
Key use cases include:
Follow this curated journey to begin learning Kubernetes.