Optimizing Cluster Performance

1. Optimizing API Server

FlagUse
--max-requests-inflightConcurrent non-mutating (default 400)
--max-mutating-requests-inflightMutating (default 200)
--watch-cache-sizesPer-resource watch cache
--enable-priority-and-fairnessAPF (default on)

2. Tuning etcd Performance

RecommendationDetail
StorageNVMe SSD, dedicated disk
DB size≤ 8 GiB (compact + defrag)
Network< 10ms RTT between members
Compaction--auto-compaction-retention=8h

3. Optimizing Node Resources

SettingUse
kubeReserved / systemReservedReserve for daemons
evictionHardMemory/disk thresholds
cpuManagerPolicy: staticPin Guaranteed pods to cores
topologyManagerPolicy: single-numa-nodeNUMA alignment for low-latency

4. Configuring DNS Optimization

# CoreDNS Corefile
.:53 {
  errors
  health { lameduck 5s }
  ready
  kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure }
  prometheus :9153
  forward . /etc/resolv.conf { max_concurrent 1000 }
  cache 30
  loop
  reload
}

5. Using Node Local DNS Cache

kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/dns/nodelocaldns/nodelocaldns.yaml
Note: NodeLocalDNS reduces DNS latency and avoids conntrack races for UDP.

6. Reducing Image Pull Time

TechniqueDetail
Pull policyIfNotPresent for stable tags
Pre-pullDaemonSet warming images
Registry mirrorIn-region cache
Lazy pullstargz/eStargz snapshotter
imagePullSecretsAuthenticated mirror

7. Optimizing Pod Startup

LeverDetail
Small base imagesdistroless, alpine
Startup probeAvoid premature liveness kills
InitialDelaySecondsTune to match app warm-up
Init containersMinimize work, cache results

8. Using Pod Priority

See §30.10 — assign higher PriorityClass to critical workloads to ensure scheduling and preemption rights.

9. Right-Sizing Resources

ToolUse
VPA (recommend mode)Suggested requests/limits
GoldilocksVPA dashboard
KRR (Robusta)Prometheus-based recommendations

10. Monitoring Cluster Performance

MetricWatch
apiserver_request_duration_secondsAPI p99 latency
etcd_disk_backend_commit_duration_secondsetcd write latency
scheduler_e2e_scheduling_duration_secondsScheduler latency
node_load1Node pressure