How I think about Kubernetes
- Kubernetes functions as a runtime for declarative infrastructure with a type system, rather than just a container orchestrator.
- Users declare desired state via manifests; the system continuously reconciles actual state to match intent through a cycle: declare → persist → reconcile → place → execute.
- Kubernetes provides a type system with resource kinds like Pod, Deployment, Service—each with strict definitions, semantics, and behaviors; CRDs extend this by defining custom types.
- API server validates and persists declarations as durable state; controllers watch for changes, compare spec (desired) vs. status (observed), and act to converge them.
- Continuous reconciliation prevents drift: manual changes get reverted if they conflict with declared intent.
- GitOps integrates naturally—Git holds source of truth, GitOps controller reconciles cluster state to Git, treating
kubectlas a debugging tool for managed resources. - Practical advice: change desired state not symptoms, let reconciliation handle work, make ownership explicit, use the type system properly.