Use this skill to keep Kubernetes resource management deterministic and safe across clusters and namespaces.
Intent Router
| Request | Reference | Load When |
|---|---|---|
| Install, kubeconfig setup, contexts, env vars | resources/install-and-setup.md |
User needs to install kubectl or configure KUBECONFIG/contexts |
| Core commands: get/describe/apply/delete/logs/exec | resources/command-cookbook.md |
User needs daily kubectl operations |
| Resources, labels, namespaces, explain | resources/resource-management.md |
User asks about resource types, labels, selectors, or declarative workflows |
| Pod crashes, ImagePull errors, events, debug | resources/troubleshooting.md |
User encounters CrashLoopBackOff, OOMKilled, or needs cluster diagnostics |
Quick Start
# Verify connectivity
kubectl cluster-info
kubectl get nodes
Confirm active context and namespace
kubectl config current-context kubectl config view --minify
List pods in all namespaceskubectl get pods -A
Apply a manifestkubectl apply -f deployment.yaml --dry-run=client kubectl apply -f deployment.yaml
## Core Command Tracks
- **Read state:** `kubectl get/describe <resource>` — inspect current cluster state
- **Apply changes:** `kubectl apply -f` — declarative reconciliation
- **Logs:** `kubectl logs <pod> [-c <container>] [-f] [--previous]`
- **Shell:** `kubectl exec -it <pod> -- bash`
- **Port forward:** `kubectl port-forward <pod> 8080:80`
- **Rollout:** `kubectl rollout status/history/undo deployment/<name>`
- **Scale:** `kubectl scale deployment/<name> --replicas=3`
- **Output formats:** `-o wide`, `-o json`, `-o yaml`, `-o jsonpath`
## Safety Guardrails
- Always confirm active context (`kubectl config current-context`) before applying changes to prevent applying to the wrong cluster.
- Always specify namespace explicitly with `-n <namespace>` for production operations; never rely on default namespace alone.
- Use `--dry-run=client -o yaml` to preview resources before applying.
- Use `kubectl diff -f <file>` to see what will change before applying.
- Confirm before running `kubectl delete` — especially with label selectors (`-l`) which can match many resources.
- Never run `kubectl delete namespace <name>` without explicit user confirmation; it deletes all resources in the namespace.
- Prefer `kubectl rollout undo` over direct manifest rewrites for reverting deployments.
```bash
# Troubleshoot a crashing pod: check recent events then inspect previous container logs
kubectl get events --sort-by=.lastTimestamp -n my-namespace
kubectl logs my-pod --previous -n my-namespace
Workflow
- Confirm context:
kubectl config current-contextandkubectl config get-contexts. - Inspect current state with
kubectl getandkubectl describebefore making changes. - Preview changes with
kubectl diff -f <file>or--dry-run=client. - Apply changes with
kubectl apply -f <file>. - Monitor rollout with
kubectl rollout status deployment/<name>. - On failure, check events with
kubectl get events --sort-by=.lastTimestamp.
Related Skills
- helm — package manager for Kubernetes applications
- docker — container image building for Kubernetes workloads
References
resources/install-and-setup.mdresources/command-cookbook.mdresources/resource-management.mdresources/troubleshooting.md- Official docs: https://kubernetes.io/docs/reference/kubectl/
- Command reference: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands