Master Server Role
– One server or a pod functions as the master server
– Master server role has these jobs/components:
- Gateway and control panel for the cluster via API
- Perform health checks on other nodes
- Schedule workloads and manage scaling
- Link all components and adjust networking
- Authenticate clients and nodes
– Declaration plan (JSON or YAML format)
- Start user-defined application or service
- Master server executes plan by examining current state of system
- etcd is a protocol to distribute configuration values within the cluster. Its methods allow applications to select, update, delete shits programmatically.
- Kubernetes uses etcd to allow nodes to reconfigure themselves.
– kube-apiserver provides RESTful interface for kubectl (clients)
– kube-scheduler assigns workloads
– kube-controller-manager regulates the cluster
– cloud-controller-manager connects to various cloud environments to provide a uniform dashboard
Node Server Components
– Container Runtime can be serviced by Docker, rkt, or runc
– kubelet authenticates to the cluster and receive manifest (work) and controls Container Runtime. Report state of node to Master server.
– kube-proxy: run on each node to ensure networking is streamlined
– Pod is a group of nodes that perform similar functions, share life cycle. These nodes share environment, volumes, and supernets
– Replication Controller defines pod template to scale replicas horizontally. It can perform updates on sets of pods without affecting availability.
– Replication Sets are the run-time copies of Replication Controller design. It’s meant to be selected by Deployments (workloads)
– Deployments are high-level objects accessible to the user. Similar to Replication Controller in functionality while differing in the easy of roll-back features.
– Stateful Sets is a specialized pod controller, often associated with persistent databases. It acts as a pod controller to guarantee stability in networking and storage. It does this by tracking IDs for each pod
– Daemon Sets is a type of pod controller, often associated with node services such as collecting metrics, gathering logs. These can bypass pod restrictions to ensure essential services are available to nodes.
– Jobs are one-off tasks. Kubernetes also has Cron Jobs that function just like the sub-system Cron.
– Service is a group of pods that performs the same functionality. There are Internal (SQL) and External Services (Apache/Nginx)
– NodePort maps the node’s external IP with the cluster IP service
– LoadBalancer creates external balancer route to Services
– Volumes are Kubernetes construct that allow all containers in a pod to share. These exist until the Pod is terminated
– Persistent Volumes are made to survive the pod’s life cycle as defined by their reclaimation policy
– Labels are tags on Controller-based objects and Services. Each unit can have multiple labels, but it can only have 1 key entry. Semantics such as DEV, QA, STAGE, PROD, VERSION-X, etc are good examples of usage
– Annotations are aggregates of Labels. They’re useful for metadata and expanded descriptions
Practical illustration is posted here.