Main notes taken from the book Quick Start Kubernetes
Kubernetes is an orchestrator of cloud-native microservices applications.
A cloud-native app must:
- Scale on demand
- Self-heal
- Support rolling updates
- Run anywhere that has Kubernetes
K8s sometimes is referred to as the OS of the cloud.
A Kubernetes cluster is one or more machines with Kubernetes installed.
We normally refer to machines in a Kubernetes cluster as nodes.
Node types:
- Control plane nodes
- Worker nodes
Some services running on worker nodes:
- Kubelet: main Kubernetes agent
- Container runtime: starts and stops containers
Most of the day-to-day management of a Kubernetes cluster can be done using the Kubernetes command line tool: kubectl
.
Kubernetes runs containers inside of Pods.
Kubernetes uses a dedicated Service object to provide network connectivity to apps running in Pods.
Kubernetes uses a dedicated Deployments object to provide self-healing. It also enables scaling and rolling updates.
The container provides the OS and other app dependencies; the Pod provides metadata and other constructs for the container to run on Kubernetes; the Deployment provides cloud-native features, including self-healing.
The Deployment object is the YAML configuration that defines the Pod and container. It also defines things such as how many Pod replicas to deploy.
The Deployment controller is a process running on the control plane that is constantly monitoring the cluster making sure all Deployment objects are running as they are supposed to.
kubectl get pods -o wide
: lists all Pods on the cluster and the worker node each Pod is running on