Know your Kubernetes object kinds
Kubernetes models everything as API objects, each identified by a kind and an
apiVersion. This reference lists the core resource kinds — the workload
controllers, networking, configuration, storage and RBAC objects you use every
day — with their apiVersion, whether they are namespaced or cluster-scoped, and
what each is for.
How it works
A manifest declares the object’s type and desired state; the control plane works to make reality match. The most important distinction is the controller you pick for a workload:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
selector:
matchLabels: { app: web }
template:
metadata:
labels: { app: web }
spec:
containers:
- name: web
image: nginx:1.27
A Deployment manages stateless replicas; a StatefulSet handles stateful ones with stable identity; a DaemonSet runs one Pod per node; Jobs and CronJobs handle batch and scheduled work.
Tips and notes
- Create Deployments rather than bare Pods so the control plane reschedules failed Pods automatically.
- Keep configuration in ConfigMaps and sensitive values in Secrets, then mount them as env vars or files.
- Remember Secrets are only base64-encoded by default — enable encryption at rest and tight RBAC to protect them.
- Run
kubectl api-resourcesto see the exact kinds, short names and scopes your cluster supports, including CRDs from installed operators.