Kubernetes (“k8s”) is an opensource container orchestration platform which allows for the deployment of scalable, fault-tolerant and diverse workloads in the form of containerised services/applications. It provides service-discovery, load-balancing, health monitoring and configuration management (including secrets) and provides compute, network and storage “infrastructure as a platform” which can be deployed to either cloud-based or traditional services/infrastructure.
- Prometheus / Thanos
- Awesome Kubernetes Devops
A Kubernetes cluster consists of several components, which can be grouped into “master” (cluster-level: scheduling, replication, state-maintenance, API) and “node” (i.e. run on every node in the cluster).
- kube-apiserver — provides programmatic access to the cluster to add, remove and modify pods, services, configuration, etc.
- etcd — distributed KVS used as configuration store
- kube-scheduler — the work scheduler, which determines which nodes a given pod should be run upon
- kube-controller-manager (KCM) — node controller which responds to node health and replication
- cloud-controller-manager (CCM) — analogous to the KCM above, but cloud-specific implementation
- cluster DNS (technically an “addon”, but essential) — provides in-cluster service naming
- kubelet — agent that ensures node and pods remain healthy
- kube-proxy — service abstraction via connection forwarding
- container runtime — e.g. docker