A skeptic's first contact with Kubernetes
Vendor integrations, CSI/CNI, and extensibility
- Kubernetes is steadily removing in-tree, vendor-specific code (cloud providers, storage, etc.) in favor of out-of-tree components via CSI, CNI, and operators.
- Core idea: Kubernetes is a generic control-plane and control-loop framework; almost every subsystem (scheduler, kubelet, networking, autoscaling) can be swapped out.
- This extensibility is seen both as a strength (adaptable to many environments) and a cause of confusion and fragmentation.
Helm, YAML, and configuration tooling
- Strong dissatisfaction with Helm’s text-based YAML templating; failures can leave partial resources that must be cleaned up manually.
- Helm remains dominant mainly because of its massive chart ecosystem and packaging conventions, not because the templating model is liked.
- Many alternatives are mentioned: Kustomize, Jsonnet/Ksonnet, CUE, Dhall, RCL, KCL, CDK8s, Terraform’s HCL, Ruby/TypeScript/Python generators.
- Ongoing debate:
- One camp wants “real” programming languages (Python, Ruby, TypeScript, Starlark) to generate manifests.
- Another prefers constrained config/templating languages for safety, despite tooling pain.
- Some report success with GitOps flows (e.g., Flux + raw YAML + Kustomize) and strict separation between “generate manifests” and “deploy manifests.”
Kustomize in kubectl
- Kustomize is popular for simpler setups and is currently embedded in
kubectl. - There is a proposal to remove the embedded version (and use it as an external tool instead), but the outcome is unclear due to compatibility concerns.
Autoscaling, metrics, and observability
- Horizontal Pod Autoscaler can already use custom or external metrics (e.g., queue depth) via metrics adapters.
- KEDA extends this model with rich triggers (e.g., Prometheus metrics, database-backed queue depth).
- Karpenter provides advanced node autoscaling, especially for cloud “spot” fleets.
- Kubernetes exposes extensive metrics (kubelet, controllers, kube-state-metrics), enabling alerts on failed reconciliation and unstable states.
Complexity, suitability, and break-even
- Some argue Kubernetes is appropriate for “complex-domain” infrastructure (Cynefin), unknown or highly variable machine counts, or many heterogeneous tech stacks.
- Others see it frequently misapplied, noting projects that ran worse on Kubernetes and preferring simpler container hosts or a small number of well-managed servers.
- Suggested “break-even” heuristics: when you don’t know how many machines you’ll need, or when you have multiple distinct stacks that are painful to manage with ad-hoc tools.
Networking model and IPv6
- The standard pod/service networking abstraction is criticized by some as replicating “hard exterior, soft interior” corporate networks.
- One viewpoint favors globally routable IPv6 for all workloads with security handled at higher layers; others find that idea unsettling or unnecessary.
- Discussion touches on overlays vs L3/BGP-based CNIs; what counts as an “overlay” is contested.
Cluster uniqueness and distributions
- Pushing more functionality out-of-tree implies every cluster ends up unique in its exact mix of CNIs, CSIs, and controllers.
- Some see this as inevitable and argue that curated distributions and managed services exist precisely to standardize sane combinations and reduce operational burden.