Real-world platforms
Platform comparison
71 / 82

Deployments and Services are portable; the plumbing around them is not.

The left column is stable Kubernetes. The three right columns are what each platform plugs in.

Concerngooglecloud logo GKEamazonaws logo EKSrancher logo On-prem RKE2 / k3s
type: LoadBalancerGoogle Cloud load balancerAWS load balancer through the AWS Load Balancer ControllerMetalLB (layer 2 or BGP) or kube-vip
Default StorageClassPersistent Disk or Hyperdisk CSIEBS CSI (gp3)Longhorn, Rook-Ceph or NFS: you install it
Gateway or IngressGKE Gateway controllerAWS Load Balancer Controller, VPC LatticeEnvoy Gateway, NGINX, Traefik
Workload to cloud identityWorkload Identity FederationIRSA or EKS Pod IdentityOIDC, Vault, SPIFFE: you design it
Node scalingAutopilot or cluster autoscalerKarpenter, managed node groups, Auto ModeRancher or Cluster API machine pools
Control-plane upgradeRelease channels, automaticYou trigger it, AWS performs itYou run it: kubeadm, RKE2 upgrade plan

Keep portable

Deployment, Service, ConfigMap, HPA, NetworkPolicy, PDB, probes and requests are identical everywhere.

Isolate in overlays

Annotations for load balancers, StorageClass names and identity bindings. Use Kustomize overlays or Helm values per platform.

Verify per platform

Product names and defaults evolve quickly. Check the current docs of each provider before committing a design.