kubernetes
✓Verified·Scanned 2/18/2026
Avoid common Kubernetes mistakes — resource limits, probe configuration, selector mismatches, and RBAC pitfalls.
from clawhub.ai·vcb1b3ec·3.5 KB·0 installs
Scanned from 1.0.0 at cb1b3ec · Transparency log ↗
$ vett add clawhub.ai/ivangdavila/kubernetes
Resource Management
requests= guaranteed minimum — scheduler uses this for placementlimits= maximum allowed — exceeding memory = OOMKilled, CPU = throttled- No limits = can consume entire node — always set production limits
requestswithoutlimits= burstable — can use more if available
Probes
readinessProbecontrols traffic — fails = removed from Service endpointslivenessProberestarts container — fails = container killed and restartedstartupProbefor slow starts — disables liveness/readiness until success- Don't use same endpoint for liveness and readiness — liveness should be minimal health check
Probe Pitfalls
- Liveness probe checking dependencies — if DB down, all pods restart indefinitely
initialDelaySecondstoo short — pod killed before app startstimeoutSecondstoo short — slow response = restart loop- HTTP probe to HTTPS endpoint — needs
scheme: HTTPS
Labels and Selectors
- Service selector must match Pod labels exactly — typo = no endpoints
- Deployment selector is immutable — can't change after creation
- Use consistent labeling scheme —
app,version,environment matchExpressionsfor complex selection —In,NotIn,Exists
ConfigMaps and Secrets
- ConfigMap changes don't restart pods — mount as volume for auto-update, or restart manually
- Secrets are base64 encoded, not encrypted — use external secrets manager for sensitive data
envFromimports all keys —env.valueFromfor specific keys- Volume mount makes files —
subPathfor single file without replacing directory
Networking
ClusterIPinternal only — default, only accessible within clusterNodePortexposes on node IP — 30000-32767 range, not for productionLoadBalancerprovisions cloud LB — works only in supported environments- Ingress needs Ingress Controller — nginx-ingress, traefik, etc. installed separately
Persistent Storage
- PVC binds to PV — must match capacity and access modes
storageClassNamemust match — or use""for no dynamic provisioningReadWriteOnce= single node —ReadWriteManyneeded for multi-pod- Pod deletion doesn't delete PVC —
persistentVolumeReclaimPolicycontrols PV fate
Common Mistakes
kubectl applyvscreate— apply for declarative (can update), create for imperative (fails if exists)- Forgetting namespace —
-n namespaceor set context default - Image tag
latestin production — no version pinning, unpredictable updates - Not setting
imagePullPolicy—Alwaysfor latest tag,IfNotPresentfor versioned - Service port vs targetPort — port is Service's, targetPort is container's
Debugging
kubectl describe podfor events — shows scheduling failures, probe failureskubectl logs -f podfor logs —-pfor previous container (after crash)kubectl exec -it pod -- shfor shell — debug inside containerkubectl get events --sort-by=.lastTimestamp— cluster-wide events timeline
RBAC
ServiceAccountper workload — not default, for least privilegeRoleis namespaced —ClusterRoleis cluster-wideRoleBindingbinds Role to user/SA —ClusterRoleBindingfor cluster-wide- Check permissions:
kubectl auth can-i verb resource --as=system:serviceaccount:ns:sa