- Published on
Kubernetes Ecosystem 2026 Deep-Dive — Helm, Kustomize, Argo CD, Flux, KEDA, Karpenter, Cluster API, Operator Framework
- Authors

- Name
- Youngju Kim
- @fjvbn20031
"Kubernetes is no longer a platform — it's the kernel you build platforms on. The real 2026 competition is over the shape of the control plane that Argo CD, Flux, and Crossplane draw on top of it." — KubeCon NA 2025 keynote
It has been eleven years since Kubernetes hit 1.0 in July 2015. The latest stable release as of May 2026 is 1.33 (Octarine), with 1.30 through 1.33 shipping on the usual four-month cadence and 1.34 entering RC soon. Over that time the central question has shifted from "how do I build a cluster?" to "how do I run workloads on top of one with GitOps, autoscale them, autoprovision nodes, federate across clusters, and extend the API with CRDs?"
You can simplify the 2026 Kubernetes ecosystem into six layers. (1) Manifest tools — Helm, Kustomize, Carvel, Jsonnet, cdk8s. (2) GitOps controllers — Argo CD and Flux v2. (3) Autoscaling — KEDA, Karpenter, Cluster Autoscaler. (4) Cluster lifecycle — Cluster API, kOps, Talos Linux, k3s/k0s/microk8s/kind/k3d, vCluster, KubeVirt. (5) Extension model — Operator Framework, Kubebuilder, Operator SDK, KCC, Crossplane. (6) Operator UX — k9s, Lens, Headlamp, Komodor, Pixie.
This post walks through all six layers in one pass, with real adoption stories from Korean and Japanese companies along the way.
1. The 2026 Kubernetes Map — Six Layers, Four Currents
The Kubernetes ecosystem is best understood as six layers, with four big currents flowing across them.
| Layer | Representative tools | Core role |
|---|---|---|
| Manifests | Helm, Kustomize, Carvel ytt, Jsonnet, cdk8s | YAML generation and reuse |
| GitOps | Argo CD, Flux v2 | Git to cluster sync |
| Autoscaling | KEDA, Karpenter, CAS | Workload and node scaling |
| Lifecycle | Cluster API, kOps, Talos | IaC for clusters themselves |
| Extension (CRD) | Operator Framework, Kubebuilder, KCC, Crossplane | Controller patterns |
| Operator UX | k9s, Lens, Headlamp, Pixie | Human interfaces |
The four currents cutting across these layers are clear. First, declarative has won outright — the kubectl-apply era is over and Git plus Argo or Flux is the default. Second, node scheduling has been simplified — Karpenter is the de facto default on AWS, replacing ASG/MIG/MSS with a single NodePool. Third, the OS is becoming Kubernetes-specific — Talos Linux, Bottlerocket, and Flatcar are growing fast. Fourth, the "CRD for everything" mindset is retreating — small controllers are great, but not every config option should become a CRD, and Crossplane v2 was redesigned to be lighter as a response.
2. Kubernetes 1.30 to 1.33 — What Changed
The line from 1.30 (Uwubernetes, April 2024) to 1.33 (Octarine, early 2026) is best summarized as "sidecars went GA, ImageVolume went GA, Dynamic Resource Allocation marched toward GA, and in-place pod resize hit beta."
The detail is roughly this. In 1.29 to 1.30, sidecar containers entered beta via init containers with restartPolicy: Always, and Istio ambient mesh and OpenTelemetry sidecars quickly adopted the pattern. 1.31 promoted AppArmor and PersistentVolume Last Phase Transition Time to GA and shipped kube-proxy's nftables mode in beta. 1.32 brought In-Place Pod Vertical Scaling to beta and Dynamic Resource Allocation (DRA) to v1beta1. 1.33 promoted ImageVolume (mounting container images as volumes) to beta and Sidecar Containers to full GA.
3. Helm 3.18 — Charts, OCI Registries, Helmfile
Helm is still the de facto standard for manifest packaging in 2026. OCI registry push and pull stabilized fully in 3.18+, so helm push oci://registry.example.com/charts/myapp --version 1.2.3 is enough to publish charts to ECR, GHCR, or Harbor. Helm 4 entered alpha in late 2025, but production is still on 3.x as of May 2026.
# Chart.yaml — chart metadata
apiVersion: v2
name: myapp
description: A Helm chart for myapp
type: application
version: 1.2.3
appVersion: "2.5.0"
dependencies:
- name: postgresql
version: "15.3.1"
repository: oci://registry-1.docker.io/bitnamicharts
- name: redis
version: "20.0.0"
repository: oci://registry-1.docker.io/bitnamicharts
condition: redis.enabled
The values file and templates split like this.
# values.yaml — per-environment defaults
replicaCount: 2
image:
repository: ghcr.io/myorg/myapp
tag: "" # falls back to appVersion
pullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 20
targetCPUUtilizationPercentage: 70
redis:
enabled: true
auth:
enabled: false
Operational tips. (1) Keep values-prod.yaml, values-stg.yaml, etc. per environment and compose them via Argo CD ApplicationSet. (2) Encrypt sensitive values with helm-secrets plus SOPS plus KMS. (3) sealed-secrets (Bitnami) is great for cluster-scoped GitOps, while External Secrets Operator is stronger when your source of truth is Vault, AWS Secrets Manager, or GCP Secret Manager. The 2026 best practice is "ESO for external SoT, helm-secrets for non-sensitive per-env values in Git."
4. Kustomize — Overlays, Components, Replacements
Kustomize is built into kubectl, so it has zero install friction, and the base-plus-overlay model is intuitive. In 2026 the recommended structure is three tiers: base/, overlays/dev|stg|prod/, and components/ for shared variations.
# base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
- configmap.yaml
commonLabels:
app.kubernetes.io/name: myapp
images:
- name: myapp
newName: ghcr.io/myorg/myapp
newTag: 2.5.0
---
# overlays/prod/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: prod
resources:
- ../../base
components:
- ../../components/hpa
- ../../components/podsecurity-restricted
replicas:
- name: myapp
count: 10
patches:
- target:
kind: Deployment
name: myapp
patch: |-
- op: replace
path: /spec/template/spec/containers/0/resources/limits/memory
value: 2Gi
The Helm-vs-Kustomize debate has largely subsided in 2026. The conclusion is "Helm is best for pulling and redistributing external OSS charts, Kustomize is best for env-branching your own internal manifests," and both Argo CD and Flux now treat Helm-wrapped-in-Kustomize as a first-class hybrid.
5. Carvel, Jsonnet, and cdk8s — Beyond Helm
The third group of manifest tools is the "programmable YAML" camp. Carvel (VMware/Broadcom) ships a four-piece set — ytt (YAML templating), kapp (applier), kbld (image pinning), and vendir (dependency lockfile). Unlike Helm it transforms YAML structurally rather than via string substitution, so indentation bugs disappear.
Jsonnet plus Tanka is how Grafana Labs runs its own fleet, with manifests authored in Jsonnet as code. Loki, Mimir, and Tempo are all deployed via Tanka. The learning curve is steep, but the leverage is huge at scale.
cdk8s (AWS, CNCF Sandbox) generates Kubernetes manifests from TypeScript, Python, Go, or Java. The cdk8s+ standard library provides high-level components like Deployment, Service, and Ingress, so it suits teams that want "type-safe YAML." Adoption in 2026 is still in the single-digit percent range compared to Helm and Kustomize.
6. Argo CD vs Flux v2 — The Two GitOps Camps
Both CNCF Graduated projects — Argo CD (Intuit, now Akuity) and Flux v2 (originally Weaveworks, now ControlPlane) — are the two de facto GitOps standards. As of 2026, the market split is roughly 70% Argo CD, 25% Flux v2, and 5% custom controllers.
# Argo CD Application — the simplest case
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp-prod
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/myorg/manifests
targetRevision: main
path: overlays/prod
destination:
server: https://kubernetes.default.svc
namespace: prod
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
retry:
limit: 5
backoff:
duration: 5s
factor: 2
maxDuration: 3m
---
# ApplicationSet — many clusters and environments in one shot
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: myapp-fleet
namespace: argocd
spec:
generators:
- matrix:
generators:
- list:
elements:
- cluster: prod-asia
region: ap-northeast-2
- cluster: prod-us
region: us-east-1
- list:
elements:
- env: prod
template:
metadata:
name: '{{cluster}}-myapp'
spec:
project: default
source:
repoURL: https://github.com/myorg/manifests
targetRevision: main
path: 'overlays/{{env}}'
destination:
server: 'https://{{cluster}}.example.com'
namespace: myapp
Flux v2's strength is its four-controller microkernel (Source/Kustomize/Helm/Notification). Argo CD's strength is UI, multi-tenancy, RBAC, and ApplicationSet. The general rule is "small teams that use Helm charts directly should pick Flux; large multi-tenant orgs that need a UI should pick Argo CD."
Companion projects under Argo — Argo Rollouts (Canary/Blue-Green), Argo Workflows (K8s-native workflow engine), and Argo Events (event sources to triggers) — are also commonly adopted alongside. Argo Rollouts' AnalysisTemplate ramps canary traffic or rolls back automatically based on Prometheus metrics.
7. KEDA — Event-Driven Autoscaling
KEDA (Kubernetes Event-Driven Autoscaling, CNCF Graduated) scales pods from 0 to N based on external signals HPA cannot reach — Kafka lag, RabbitMQ queue depth, AWS SQS, Pub/Sub, cron schedules, and so on. As of May 2026 it supports more than 70 scalers.
# KEDA ScaledObject — scale on Kafka lag
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: order-consumer
namespace: orders
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: order-consumer
minReplicaCount: 0
maxReplicaCount: 100
cooldownPeriod: 60
pollingInterval: 15
triggers:
- type: kafka
metadata:
bootstrapServers: kafka.kafka.svc:9092
consumerGroup: order-consumer
topic: orders
lagThreshold: "1000"
offsetResetPolicy: latest
- type: prometheus
metadata:
serverAddress: http://prometheus.monitoring.svc:9090
threshold: "100"
query: sum(rate(http_requests_total{service="order-api"}[1m]))
KEDA's headline feature is scaling to zero. Nightly batch jobs and rarely-triggered event workers can sit at 0 replicas during quiet periods, which compounds into real cost savings. Cold-start latency does exist, so SLA-bound APIs typically set minReplicaCount to 2 or more.
8. Karpenter — The Default Node Autoscaler on AWS
Karpenter moved through CNCF Incubating in November 2025 and was promoted to Graduated in early 2026, and on AWS it has effectively replaced Cluster Autoscaler as the default. The differences that matter are (1) it is not tied to ASG/MIG and selects the EC2 instance type based on actual pod requirements, (2) it reacts in roughly 30 seconds, (3) Spot, On-Demand, Graviton, and x86 mix freely in a single NodePool, and (4) Bottlerocket, Amazon Linux 2023, and Ubuntu AMIs get auto-patched.
# Karpenter NodePool — Spot first, Graviton first
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
spec:
template:
metadata:
labels:
team: platform
spec:
requirements:
- key: karpenter.k8s.aws/instance-category
operator: In
values: ["c", "m", "r"]
- key: karpenter.k8s.aws/instance-generation
operator: Gt
values: ["5"]
- key: kubernetes.io/arch
operator: In
values: ["arm64", "amd64"]
- key: karpenter.sh/capacity-type
operator: In
values: ["spot", "on-demand"]
nodeClassRef:
group: karpenter.k8s.aws
kind: EC2NodeClass
name: default
expireAfter: 720h # force re-create every 30 days for patching
limits:
cpu: "10000"
memory: 10000Gi
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
consolidateAfter: 30s
budgets:
- nodes: "10%"
A Karpenter Provider for GCP went beta in 2025 and AKS Karpenter went GA the same year, but as of May 2026 Cluster Autoscaler is still the leader outside AWS.
9. Cluster API — Clusters as Kubernetes Objects
Cluster API (CAPI, SIG Cluster Lifecycle) introduces a meta model: a "management cluster that creates clusters." You describe workload clusters with CRDs like Cluster, MachineDeployment, and ClusterClass, and infrastructure providers (CAPA = AWS, CAPG = GCP, CAPZ = Azure, CAPV = vSphere, the k0s-bootstrap provider, and others) materialize the actual machines.
CAPI is at 1.10+ as of May 2026, and ClusterClass (cluster templates) has stabilized, so it is now common to stamp out tens or hundreds of identical clusters declaratively. AWS EKS Anywhere is built on CAPI, and VMware Tanzu Kubernetes Grid, Rancher RKE2 Provisioner, Giant Swarm, and Mirantis have all converged on CAPI as the base.
# ClusterClass — one cluster template
apiVersion: cluster.x-k8s.io/v1beta1
kind: ClusterClass
metadata:
name: aws-eks-1-33
spec:
controlPlane:
ref:
apiVersion: controlplane.cluster.x-k8s.io/v1beta2
kind: AWSManagedControlPlaneTemplate
name: aws-eks-1-33-cp
infrastructure:
ref:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
kind: AWSManagedClusterTemplate
name: aws-eks-1-33-infra
workers:
machineDeployments:
- class: default-worker
template:
bootstrap:
ref:
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
kind: EKSConfigTemplate
name: aws-eks-1-33-worker-boot
infrastructure:
ref:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
kind: AWSMachineTemplate
name: aws-eks-1-33-worker
The CAPI learning curve is steep, but for organizations running 50+ clusters it is close to mandatory because it makes "GitOps for the cluster itself" possible.
10. Cluster Distros — vanilla, Talos, k3s, k0s, microk8s
Kubernetes distros split into five categories. (1) vanilla (kubeadm) — the most standard, used as the core of EKS, GKE, and AKS. (2) Talos Linux (Sidero Labs) — a Kubernetes-only OS with no SSH and no package manager, where everything is an API. The fastest-growing distro in 2026. (3) k3s (SUSE/Rancher) — a single ~60MB binary, the standard for edge, IoT, and homelabs. (4) k0s (Mirantis) — similar to k3s but with no hostPath dependency and simpler controlplane HA. (5) microk8s (Canonical) — Ubuntu-friendly and snap-based.
| Distro | Binary size | etcd | Recommended use |
|---|---|---|---|
| kubeadm | Modular | External etcd | Standard production |
| Talos | Whole OS | Built-in etcd | K8s-only OS |
| k3s | ~60MB | sqlite/etcd | Edge/homelab |
| k0s | ~70MB | Built-in etcd | Embedded/edge |
| microk8s | snap | dqlite | Ubuntu desktop/edge |
| kind/k3d | Docker container | Built-in etcd | CI/local |
| minikube | VM | Built-in etcd | Learning |
Talos started seeing real adoption by Japanese big tech like LINE and Mercari in 2026, and in Korea Toss and NAVER are experimenting with it for selected workloads.
11. vCluster and KubeVirt — Clusters Inside Clusters, VMs Inside K8s
vCluster (Loft Labs) spins up a lightweight virtual control plane inside a host cluster, giving each tenant a "fake cluster." Inside their vCluster the user is cluster-admin, but isolation is enforced by a dedicated namespace on the host. This shift from "namespace isolation" to "fake-cluster isolation" has been growing quickly since 2025 as a way to multi-tenant Kubernetes.
KubeVirt does the opposite: it runs VMs inside Kubernetes. It is the core of Red Hat OpenShift Virtualization and puts VMs and containers under one control plane. It sees heavy adoption in finance, public sector, and telecom where legacy Windows or RHEL VMs need to coexist with cloud-native workloads.
12. Operator Framework, Kubebuilder, and Operator SDK
The CRD-plus-controller pattern is Kubernetes' most powerful extension mechanism. In 2026 the de facto standard is to start a project with controller-runtime (sigs.k8s.io) scaffolded by either Kubebuilder or Operator SDK (Red Hat). The four cardinal rules of the controller pattern are:
- Level-triggered — react to the difference between desired and actual state, not to events. Missing an event is fine; the next reconcile recovers.
- OwnerReferences — when the parent resource is deleted, children are garbage-collected automatically.
- Finalizers — block deletion until external resources are cleaned up.
- Idempotent Reconcile — same input must produce the same output. Never store intermediate state.
// controller-runtime Reconcile skeleton
func (r *MyAppReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
log := log.FromContext(ctx)
var app v1alpha1.MyApp
if err := r.Get(ctx, req.NamespacedName, &app); err != nil {
if apierrors.IsNotFound(err) {
return ctrl.Result{}, nil
}
return ctrl.Result{}, err
}
// register finalizer
if app.DeletionTimestamp.IsZero() {
if !controllerutil.ContainsFinalizer(&app, "myapp.example.com/finalizer") {
controllerutil.AddFinalizer(&app, "myapp.example.com/finalizer")
return ctrl.Result{}, r.Update(ctx, &app)
}
} else {
if err := r.cleanupExternal(ctx, &app); err != nil {
return ctrl.Result{RequeueAfter: 30 * time.Second}, err
}
controllerutil.RemoveFinalizer(&app, "myapp.example.com/finalizer")
return ctrl.Result{}, r.Update(ctx, &app)
}
// build desired Deployment and apply via SSA
desired := r.buildDeployment(&app)
if err := controllerutil.SetControllerReference(&app, desired, r.Scheme); err != nil {
return ctrl.Result{}, err
}
if err := r.Patch(ctx, desired, client.Apply, client.FieldOwner("myapp-controller"), client.ForceOwnership); err != nil {
return ctrl.Result{}, err
}
// update status
app.Status.Ready = true
if err := r.Status().Update(ctx, &app); err != nil {
return ctrl.Result{}, err
}
log.Info("reconciled", "name", app.Name)
return ctrl.Result{RequeueAfter: 5 * time.Minute}, nil
}
Operational tips. (1) Use Server-Side Apply (SSA) by default — fieldManager resolves conflicts automatically. (2) Lean on RequeueAfter rather than relying purely on watches. (3) Standardize Status.Conditions (Ready/Progressing/Degraded) across all your CRDs.
13. KCC and Crossplane — Cloud Resources as Kubernetes Objects
Using the K8s control plane as "the interface for cloud resources" has split into two camps. KCC (Config Connector, GCP) exposes GCP resources as K8s CRDs, while Crossplane (CNCF Incubating) wraps multi-cloud (AWS, GCP, Azure, and external SaaS) into a single abstraction. Crossplane v2 (announced late 2025) made Composition lighter and promoted function-based patterns to first-class.
The choice is simple. GCP-only means KCC. Multi-cloud or external SaaS means Crossplane. AWS-only typically means AWS Controllers for Kubernetes (ACK). That said, Crossplane still has a steep learning curve in 2026, and without a clear boundary against Terraform or OpenTofu the operational overhead can be significant.
14. K8s Security — PSS, OPA Gatekeeper, Kyverno, Falco, KubeArmor
PodSecurityPolicy (PSP) was removed in 1.25 and Pod Security Standards (PSS) took its place. PSS applies three profiles (privileged, baseline, restricted) via namespace labels. Because PSS is intentionally low-expressiveness, most organizations layer a dedicated policy engine on top.
| Tool | Language | Strength | Weakness |
|---|---|---|---|
| OPA Gatekeeper | Rego | Most expressive, CNCF Graduated | Rego learning curve |
| Kyverno | YAML | K8s-native, easy to learn | Caps out on complex policies |
| KubeArmor | YAML + LSM | Runtime BPF/LSM | Kernel dependent |
| Falco | YAML | Runtime anomaly detection | No enforcement |
The 2026 trend is "Kyverno for enforcement, Falco for runtime detection." OPA Gatekeeper is still powerful, but Kyverno's YAML-native ergonomics are taking share fast.
# Kyverno ClusterPolicy — ban latest tags, require resource limits
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-image-tag
spec:
validationFailureAction: Enforce
background: true
rules:
- name: validate-image-tag
match:
any:
- resources:
kinds:
- Pod
validate:
message: "Image tag must not be latest or missing"
pattern:
spec:
containers:
- image: "!*:latest"
- name: require-resources
match:
any:
- resources:
kinds:
- Pod
validate:
message: "All containers must declare resources.limits"
pattern:
spec:
containers:
- resources:
limits:
memory: "?*"
cpu: "?*"
15. K8s Networking — NetworkPolicy, Gateway API, Cilium
NetworkPolicy has been around since 1.7 but has always been limited in expressiveness. The 2026 standard is Gateway API (GA) plus CiliumNetworkPolicy. Gateway API is the successor to Ingress and covers both L4 and L7 via GatewayClass, Gateway, HTTPRoute, GRPCRoute, and TCPRoute. Since its GA in 2024, most cloud LB controllers now support a Gateway API mode.
Cilium has become the de facto CNI standard. It is eBPF-based, can fully replace kube-proxy, and bundles Cilium Service Mesh (sidecar-less L7), Hubble (observability), and Tetragon (security) into one stack. In 2026 Cilium is a first-class option on EKS, GKE, and AKS, and at roughly 40% share it leads the CNI market.
16. K8s Storage — CSI, OpenEBS, Longhorn, Rook
The storage interface has unified around CSI (Container Storage Interface). The 2026 options are (1) cloud-native (EBS/EFS/PD/Azure Disk/Files CSI drivers), (2) OpenEBS (Mayastor) — eBPF/NVMe-oF local storage, (3) Longhorn (SUSE/Rancher) — distributed block storage, (4) Rook (Ceph) — large-scale block/object/file, and (5) Portworx (Pure Storage) — enterprise commercial.
The selection criteria are simple. In the cloud, use that cloud's CSI. Bare metal or on-prem at small scale, use Longhorn. Bare metal at large scale, use Rook.
17. Multi-Cluster — Karmada, Liqo, Submariner, Skupper
Once an organization grows past a single cluster, federation becomes necessary. The four leading 2026 options are:
Karmada (Huawei, now CNCF Incubating) is a "policy-based multi-cluster scheduler." PropagationPolicy and OverridePolicy distribute workloads across clusters. Chinese big tech and some Korean companies use it heavily.
Liqo (Polito Italy, CNCF Sandbox) takes the opposite approach: it surfaces a remote cluster as a single virtual kubelet node on the local cluster. Its strength is dynamic peering.
Submariner (Red Hat) and Skupper (Red Hat) focus on cluster interconnect. Submariner directly bridges Pod CIDRs, while Skupper relies on L7 proxying.
Admiralty is another multi-cluster scheduler. KubeFed was archived in 2024 and Karmada and Liqo have largely filled that gap.
18. Service Mesh — Istio Ambient, Linkerd, Cilium
The service mesh landscape shifted significantly during 2024 and 2025. Istio released ambient mesh (no-sidecar mode) to GA, eliminating the per-pod 200 MB memory overhead and splitting traffic handling into ztunnel (L4) and waypoint (L7). Linkerd is still the lightest option, but Buoyant's license change drove some OSS users away. Cilium Service Mesh, which handles L7 in eBPF without sidecars, is growing fast.
The 2026 recommendation is (1) simple and free — Linkerd OSS or Cilium Service Mesh, (2) feature-rich and large-scale — Istio ambient, (3) already running Cilium CNI — extend it to Cilium Service Mesh.
19. Operator UX — k9s, Lens, Headlamp, Komodor, Pixie
The CLI and UI tools are still rich in 2026. k9s (Fernand Galiana) is the de facto terminal UI and lives in the dotfiles of nearly every SRE.
# ~/.config/k9s/skins/default.yaml — a simple dark theme
k9s:
body:
fgColor: dodgerblue
bgColor: black
logoColor: orange
prompt:
fgColor: cadetblue
bgColor: black
suggestColor: dodgerblue
info:
fgColor: orange
sectionColor: white
views:
table:
fgColor: aqua
bgColor: black
cursorFgColor: black
cursorBgColor: aqua
header:
fgColor: white
bgColor: black
sorterColor: aqua
Lens (Mirantis) was the GUI king but after a 2023 license change the OSS fork OpenLens appeared, and Headlamp (Kinvolk, now CNCF Sandbox) has emerged as the full-OSS alternative. Octant (VMware) was sunset in 2022. Komodor and Devtron focus on workflow rather than raw inspection. Pixie (New Relic, now CNCF) auto-collects traces via eBPF with no sidecars.
The recommended 2026 stack is usually "k9s for the terminal, Headlamp for the GUI, Pixie for deep debugging."
20. K8s CI/CD — Tekton vs Argo Workflows vs GitHub Actions
CI/CD on top of Kubernetes is roughly (1) Tekton (CD Foundation) — Pipeline and Task CRDs, (2) Argo Workflows — DAG-based and K8s-native, (3) GitHub Actions Runner Controller (ARC) — runs GitHub Actions runners as K8s pods, (4) Jenkins X (in decline), and (5) Drone (changed after Harness acquisition).
The 2026 trend is clear. Builds on GitHub Actions or GitLab CI (ARC), deploys via Argo CD or Flux, with K8s-native workflow engines (Tekton, Argo Workflows) reserved for ML training pipelines or data processing where jobs are long.
21. Observability Stack — Prometheus, Grafana, OpenTelemetry, Loki, Tempo
The standard K8s observability stack is (1) metrics — Prometheus plus Thanos/Mimir/Cortex, (2) logs — Loki/OpenSearch/Elastic, (3) traces — Tempo/Jaeger, (4) collection — OpenTelemetry Collector, and (5) visualization — Grafana. Prometheus 3.0 (November 2024) strengthened OTel compatibility and OTLP is now effectively the standard collection protocol in 2026.
eBPF-based auto-observability tools — Pixie, Coroot, and Parca (continuous profiling) — are creating a new "no-sidecar observability" wave, and Grafana Labs' Beyla (eBPF auto-instrumentation) is growing fast.
22. Korean Adoption Stories — NAVER, Coupang, Toss, Kakao
NAVER runs NKS (NAVER Kubernetes Service) on its NCP cloud, and internally operates NBP (NAVER Build Platform) — an in-house PaaS layered with Argo CD and a custom multi-cluster controller. Large services like Search, Shopping, and Webtoon all run on top of K8s, and parts of the ML training stack are isolated with vCluster.
Coupang is a heavy AWS EKS user. A 2024 talk disclosed a roughly 30% EC2 cost saving after adopting Karpenter, and dawn-delivery traffic peaks are absorbed by a KEDA-plus-Karpenter combo. GitOps is centered on Argo CD.
Toss (Viva Republica) runs multi-region EKS underneath its own Toss Cloud PaaS. The KubeCon EU 2024 talk on "managing hundreds of microservices via Argo CD ApplicationSet" is well known. Talos Linux is in experimental use on selected workloads.
Kakao runs an in-house K8s platform called DKOS (D2 Kubernetes Service) that hosts KakaoTalk, Daum, and Kakao Pay. Internal tenants reportedly get multi-tenant access via a vCluster-plus-Argo-CD pattern in some areas.
23. Japanese Adoption Stories — LINE Verda, Mercari, ZOZO, CyberAgent, SoftBank
LINE Verda is the in-house cloud of LINE and Yahoo Japan (now LY Corporation), running LINE Kubernetes Engine on top of OpenStack and presenting regularly at KubeCon. In 2024 and 2025 the hot topics were Talos experiments and multi-tenant vCluster patterns.
Mercari is GCP GKE first. The 2023 and 2024 KubeCon talks on "GitOps for 1,000 microservices via Argo CD" are well known, and from 2025 they are migrating their ML platform off KubeFlow onto a self-hosted Argo Workflows stack.
ZOZO (ZOZOTOWN) runs on AWS EKS with Argo CD plus Karpenter. The ZOZO TECH BLOG documents many Argo Rollouts canary patterns.
CyberAgent (CA Group) has many subsidiaries on different clouds, but the in-house common platforms AKE (AbemaTV Kubernetes Engine) and CIU (CyberAgent Internal Unit) define the K8s standard. ABEMA TV is GKE-plus-Argo-CD primarily.
SoftBank runs K8s on its own OpenStack and leans on the Operator pattern, and they have presented at KubeCon on applying K8s to a B2B 5G packet core.
24. K8s Antipatterns — Ten Common Mistakes
A recurring list from production:
- Using the
latesttag — image caching makes deployments nondeterministic. Always pin by digest or SemVer. - Treating liveness as readiness — liveness failures restart the container. Wiring a DB-connection check to liveness causes infinite restart loops.
- Missing resource requests and limits — the cluster is at the mercy of noisy neighbors.
- Overusing
hostNetwork: true— both security and portability suffer. - Using Deployment for one-off tasks instead of Job — finished pods stick around forever.
- Editing live with kubectl apply -f — once GitOps is in place, manual edits get reverted by self-heal.
- One Helm chart for all services — a one-line change redeploys everything.
- Draining nodes without a PDB — downtime.
- CRDs for everything — if kubectl apply is enough, you do not need a CRD. Complexity climbs fast.
- Plaintext secrets — in ConfigMap or in Git. Use ESO, SOPS, or sealed-secrets.
25. Recommended 2026 Stacks — By Org Size
The recommended stack varies with org size.
Small (1–3 people, 1–3 clusters): k3s or managed EKS/GKE/AKS, Helm plus Argo CD, Cilium CNI, Karpenter (on AWS) or Cluster Autoscaler, k9s plus Headlamp.
Medium (10–50 people, 5–20 clusters): managed K8s plus partial Cluster API adoption, Helm plus Kustomize hybrid, Argo CD ApplicationSet, KEDA plus Karpenter, Kyverno policies, OpenTelemetry plus Grafana, ESO plus sealed-secrets.
Large (100+ people, 50+ clusters): full Cluster API or Talos Linux adoption, multi-instance Argo CD or Flux-plus-Argo, Karmada or Liqo for multi-cluster, many in-house Operators, Crossplane for cloud abstraction, Pixie plus Beyla for auto-observability, and Karpor for workload inventory.
26. Migration Guide — Where to Start
For a team already running Kubernetes that wants to align with 2026 standards, here is the recommended order.
- PSP to PSS plus Kyverno (immediate, since PSP is gone in 1.25+).
- Cluster Autoscaler to Karpenter (on AWS, large cost win).
- Ingress to Gateway API (gradual, starting with new services).
- HPA only to HPA plus KEDA (identify event-driven workloads and scale to zero).
- No GitOps to Argo CD or Flux (biggest single ops improvement).
- Sidecar Istio to Ambient Mesh (drastic memory savings).
- Ad-hoc bash scripts to Operators (start with small ones).
- Single cluster to CAPI standardization (once you cross five clusters).
27. Conclusion — Kubernetes in 2026 is "The Platform for Building Platforms"
Kubernetes in 2026 is no longer a "workload orchestrator" — it is the "control plane you build platforms on." Argo CD and Flux for declarative ops, Karpenter and KEDA for autoscaling, Cluster API and Talos for cluster IaC, Operator and Crossplane for abstraction, and k9s, Headlamp, and Pixie for human UX — those five axes are the 2026 standard.
The key is to "not adopt every tool, but pick a minimum stack matched to your org size and grow it gradually." For most organizations, knowing Helm, Argo CD, Karpenter, Cilium, and k9s well is more than enough.
References
- kubernetes.io — official docs and 1.33 release notes
- helm.sh — Helm official docs (3.18)
- kustomize.io — Kustomize official
- argo-cd.readthedocs.io — Argo CD docs
- fluxcd.io — Flux v2 official
- keda.sh — KEDA official, 70+ scalers
- karpenter.sh — Karpenter official
- cluster-api.sigs.k8s.io — Cluster API docs
- talos.dev — Talos Linux official
- k3s.io — k3s official
- k0sproject.io — k0s official
- k9scli.io — k9s official
- github.com/lensapp/lens — Lens GitHub
- headlamp.dev — Headlamp official
- github.com/cncf/sandbox — CNCF Sandbox list
- sigs.k8s.io/controller-runtime — controller-runtime
- book.kubebuilder.io — Kubebuilder Book
Kubernetes has stayed true to its origin as "a loosely-coupled collection of controllers" for the eleven years since its first commit in 2014. The 2026 ecosystem keeps building new layers on that same foundation, and the six layers laid out in this post are the skeleton that will not change for the next several years.