What is Kubernetes?
Kubernetes (often abbreviated as K8s) is an open-source platform designed to automate deploying, scaling, and operating application containers.
Key Features
- Leading container orchestration tool
- Loosely coupled collection of components
- Vendor-neutral (runs on all cloud providers)
- Backed by a huge community
History
- Originated from Google
- v1.0 released on July 2015
- 3rd gen container scheduler from Google
- Donated to the Cloud Native Computing Foundation (CNCF)
What Kubernetes Can Do
Kubernetes provides a robust framework to run distributed systems resiliently.
Service Discovery & Load Balancing
K8s can expose containers using DNS or IP address and distribute network traffic.
Storage Orchestration
Automatically mount storage systems from local or cloud providers.
Automated Rollouts & Rollbacks
Gradually roll out changes while monitoring application health.
Self-Healing
Restarts containers that fail, replaces them, and kills unresponsive containers.
Secret & Configuration Management
Store and manage sensitive information like passwords and API keys securely.
Cross-Platform API
Use the same API across on-premise and every cloud provider.
What Kubernetes Can't Do
It's important to understand Kubernetes limitations to set proper expectations.
Does Not Deploy Source Code
K8s works with container images, not source code directly.
Does Not Build Your Application
You need CI/CD pipelines to build and package applications into containers.
Does Not Provide Application-Level Services
Services like message buses, databases, caches must be deployed separately.
Key Kubernetes Concepts
Understanding these concepts is crucial for working with Kubernetes.
Pods
The smallest deployable units that can be created and managed in Kubernetes.
Deployments
Manage the deployment and scaling of a set of Pods.
Services
An abstract way to expose an application running on a set of Pods.
Volumes
A way to persist data beyond the lifetime of a Pod.