What is Kubernetes?
Kubernetes is open-source orchestration software for deploying, managing and scaling containers
Modern applications are increasingly built using containers, which are microservices packaged with their dependencies and configurations. Kubernetes (pronounced “koo-ber-net-ees”) is open-source software for deploying and managing those containers at scale—and it is also the Greek word for helmsmen of a ship or pilot. Build, deliver and scale containerised apps faster with Kubernetes, sometimes referred to as “k8 s” or “k-eights.”
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.
Kubernetes orchestrates clusters of virtual machines and schedules 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 and those pods scale to your desired state.
Kubernetes also automatically manages service discovery, incorporates load balancing, tracks resource allocation and scales based on compute utilisation. And, it checks the health of individual resources and enables apps to self-heal by automatically restarting or replicating containers.Watch more videos on Kubernetes basics
Why use Kubernetes?
Keeping containerised apps up and running can be complex because they often involve many containers deployed across different machines. Kubernetes provides a way to schedule and deploy those containers—plus scale them to your desired state and manage their lifecycles. Use Kubernetes to implement your container-based applications in a portable, scalable and extensible way.
Make workloads portable
Because container apps are separate from their infrastructure, they become portable when you run them on Kubernetes. Move them from local machines to production among on-premises, hybrid and multiple cloud environments—all while maintaining consistency across environments.
Scale containers easily
Define complex containerised applications and deploy them across a cluster of servers or even multiple clusters with Kubernetes. As Kubernetes scales applications according to your desired state, it automatically monitors and maintains container health.
Build more extensible apps
A large open-source community of developers and companies actively builds extensions and plugins that add capabilities such as security, monitoring and management to Kubernetes. Plus, the Certified Kubernetes Conformance Program requires every Kubernetes version to support APIs that make it easier to use those community offerings.
Build on a complete Kubernetes platform
While Kubernetes itself offers portability, scalability, and extensibility, adding end-to-end development, operations and security control allows you to deploy updates faster—without compromising security or reliability—and save time on infrastructure management. As you adopt Kubernetes, also consider implementing:
Infrastructure automation or serverless Kubernetes to eliminate routine tasks like provisioning, patching and upgrading.
Tools for containerised app development and continuous integration and continuous deployment (CI/CD) workflows.
Services to manage security, governance, identity and access.
Harness Kubernetes with DevOps practices
As a Kubernetes app grows—adding containers, environments and teams—release frequency tends to increase, along with developmental and operational complexity. Employing DevOps practices in Kubernetes environments allows you to move quickly at scale with enhanced security.
Deliver code faster with 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.
Manage resources effectively with infrastructure as code
Infrastructure as code establishes consistency and visibility of compute resources across teams—reducing the likelihood of human error. This practice works 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.
Accelerate the feedback loop with constant monitoring
Shorten the time between bugs and fixes with a complete view of your resources, cluster, Kubernetes API, containers and code—from container health monitoring to centralised logging. That view helps you prevent resource bottlenecks, trace malicious requests and keep your Kubernetes applications healthy.
Balance speed and security with DevOps
Bring real-time observability into your DevOps workflow without sacrificing velocity. Apply compliance checks and reconfigurations automatically to secure your build and release pipeline—and your Kubernetes application as a result.
Example DevOps workflow with Kubernetes
- Rapidly iterate, test and debug different parts of an application together in the same Kubernetes cluster.
- Merge and check code into a GitHub repository for continuous integration. Then, run automated builds and tests as a part of continuous delivery.
- Verify the source and integrity of container images. Images are held in quarantine until they pass scanning.
- Provision Kubernetes clusters with tools like Terraform. Helm charts installed by Terraform define the desired state of app resources and configurations.
- Enforce policies to govern deployments to the Kubernetes cluster.
- The release pipeline automatically executes pre-defined deployment strategy with each code.
- Add 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.
- Enable app telemetry, container health monitoring and real-time log analytics.
- Address 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.
Draw inspiration and innovation from the Kubernetes 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 contributions.
Microsoft contributions to Kubernetes
Bringing open-source ingenuity to enterprises
To make Kubernetes easier for organisations 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.
FAQs – Kubernetes
Follow this curated journey to begin learning Kubernetes.
Kubernetes is useful in scenarios ranging from moving applications to the cloud to simplifying challenges in machine learning and AI.
Key use cases include:
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.See Kubernetes deployment strategies
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 and Docker work together.
Docker provides an open standard for packaging and distributing containerised applications. Using Docker, you can build and run containers and store and share container images.
Kubernetes orchestrates and manages the distributed, containerised applications that Docker creates. It also provides the infrastructure needed to deploy and run those applications on a cluster of machines.Learn more about Kubernetes vs. Docker