Reference · Canonical nomenclature

Glossary

The shared vocabulary for this course. Every lesson uses these terms exactly as defined here. Bookmark it; it grows as we go.

Host
Your macOS machine. It runs multipass and the kubectl client — but not Kubernetes itself.
Multipass
Canonical's tool for launching lightweight Ubuntu VMs on your host. We use it to get one real Linux machine to run Kubernetes inside.
VM (the node)
The Ubuntu virtual machine Multipass creates (we name it microk8s-vm). In our single-node cluster this VM is the one and only Kubernetes node.
MicroK8s
A small, single-package ("snap") Kubernetes distribution from Canonical. Installed inside the VM. Ships extras as addons (dns, ingress, storage) you turn on with microk8s enable.
Cluster
A running Kubernetes installation: a control plane plus one or more nodes. Ours has exactly one node (the VM).
Control plane
The "brain" of the cluster: the API server, scheduler, controller manager, and the etcd datastore. You never talk to these directly — you talk to the API server, and it makes reality match your declared desire.
Node
A machine that actually runs your workloads (the kubelet + container runtime live here). Our single node is the VM.
kubelet
The agent on each node that talks to the API server and makes sure the containers that are supposed to run, run.
kubectl
The command-line client. It does one thing: send HTTP requests to the API server. Fluency in Kubernetes is largely fluency here.
kubeconfig
A YAML file (default ~/.kube/config) telling kubectl three things: which cluster (API server URL), who you are (client credentials), and the CA to trust. No magic — just an address book + keys. Introduced in Lesson 01.
Addon
An optional microk8s feature toggled with microk8s enable <name> (e.g. dns, ingress, hostpath-storage).
Pod
The smallest deployable unit: one or more containers sharing one IP and storage. Disposable — recreated freely, and its IP changes when it is. Never address a Pod by IP. Lesson 02.
Deployment
A controller declaring "keep N replicas of this Pod template running." It self-heals (replaces dead Pods) and rolls out changes gradually. You create Deployments, not Pods. Lesson 02.
Service
A stable virtual IP + in-cluster DNS name that load-balances to Pods chosen by label selector. Default type ClusterIP = internal-only. Lesson 02.
Ingress
An L7 (HTTP/S) routing rule mapping a hostname/path to a Service. Executed by an ingress controller (microk8s ingress addon = Traefik on 1.35+). The single public door to your sites. Lesson 02.
IngressClass
Names which controller handles an Ingress. microk8s offers public (default, NGINX-compatible), traefik, and nginx. Lesson 02.
Label & selector
Labels are key/value tags on objects (e.g. app: hello-site); a selector matches objects by their labels. This is how Deployments and Services find their Pods — the "glue" of the request path. Lesson 02.
Manifest
A YAML file declaring desired objects, applied with kubectl apply -f. Multiple objects in one file are separated by ---. Lesson 02.
Reconciliation
The core loop: you declare desired state; a controller continuously works to make actual state match it. Explains self-healing and rollouts. Lesson 02.
Service type (ClusterIP / NodePort / LoadBalancer)
How far a Service is reachable. ClusterIP = inside only (default); NodePort = a high port (30000–32767) on every node; LoadBalancer = its own external IP, if something fulfills the request. Lesson 03.
MetalLB
A load-balancer implementation for bare-metal/local clusters. It fulfills LoadBalancer Services by assigning each an IP from a pool you define and advertising it. microk8s addon: microk8s enable metallb:<range>. Lesson 03.
EXTERNAL-IP & <pending>
The address column of kubectl get svc. <pending> means a LoadBalancer Service has no fulfiller — the classic "no MetalLB / no cloud" symptom. Lesson 03.
Layer-2 mode (ARP)
MetalLB's default: one node "owns" each external IP and answers ARP requests for it on the local network, so the IP appears as just another host. Alternative is BGP. Lesson 03.
This is a living document. If a term is fuzzy, ask your teacher (me) to expand it — and I'll add it here.