- Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation.
- Kubernetes originates from Greek, meaning helmsman or pilot.
- Kubernetes provides an orchestration framework to run distributed systems resiliently. It takes care of scaling and failover for the application, provides deployment patterns, and more.
Container Deployment Model
- Containers are similar to VMs, but they have relaxed isolation properties to share the Operating System (OS) among the applications.
- Containers are lightweight and have their own filesystem, share of CPU, memory, process space, and more.
- Containers are decoupled from the underlying infrastructure, they are portable across clouds and OS distributions.
- Containers provide the following benefits
- Agile application creation and deployment
- Continuous development, integration, and deployment
- Dev and Ops separation of concerns
- Environmental consistency across development, testing, and production
- Cloud and OS distribution portability
- Application-centric management
- Loosely coupled, distributed, elastic, liberated micro-services
- Resource isolation & utilization
- Service discovery and load balancing
- Kubernetes can expose a container using the DNS name or using their own IP address.
- If traffic to a container is high, Kubernetes is able to load balance and distribute the network traffic so that the deployment is stable.
- Storage orchestration
- Kubernetes allows you to automatically mount a storage system of your choice, such as local storage, public cloud providers, and more.
- Automated rollouts and rollbacks
- Kubernetes can change the actual state of the deployed containers to the desired state at a controlled rate ensuring zero downtime.
- Automatic bin packing
- Kubernetes can fit containers onto the available nodes to make the best use of the resources as per the specified container specification.
- Self-healing & High Availability
- Kubernetes restarts containers that fail, replaces containers, kills containers that don’t respond to the user-defined health check, and doesn’t advertise them to clients until they are ready to serve.
- Kubernetes can help scale the application as per the load.
- Secret and configuration management
- Kubernetes helps store and manage sensitive information, such as passwords, OAuth tokens, and SSH keys.
- Secrets and application configuration can be deployed without rebuilding the container images, and without exposing secrets in the stack configuration.
Refer to detailed blog post @ Kubernetes Architecture
- Master components provide the cluster’s control plane.
- Master components make global decisions about the cluster (for example, scheduling), and that they detect and answer cluster events (for example, beginning a replacement pod when a deployment’s replicas field is unsatisfied).
- Master components include
- Kube-API server – Exposes the API.
- Etcd – key-value stores all cluster data. (Can be run on the same server as a master node or on a dedicated cluster.)
- Kube-scheduler – Schedules new pods on worker nodes.
- Kube-controller-manager – Runs the controllers.
- Cloud-controller-manager – Talks to cloud providers.
- Node components run on every node, maintaining running pods and providing the Kubernetes runtime environment.
- Kubelet – Agent that ensures containers in a pod are running.
- Kube-proxy – Keeps network rules and performs forwarding.
- Container runtime – Runs containers.
Refer to blog post @ Kubernetes Components
Refer to blog post @ Kubernetes Security