Kubernetes Operations
Expert knowledge for Kubernetes cluster management, deployment, and troubleshooting with mastery of kubectl and cloud-native patterns.
When to Use This Skill
| Use this skill when... |
Use instead when... |
| Working with kubectl against pods, deployments, services, ingress, ConfigMaps, or Secrets |
Use kubectl-debugging when you specifically need kubectl debug ephemeral containers or node sessions |
| Applying or inspecting raw Kubernetes manifests and kustomize overlays |
Use helm-release-management when the workload is delivered as a Helm chart |
| Diagnosing cluster-level networking, storage, or workload health |
Use argocd-login when the issue is authenticating to ArgoCD before any cluster operation |
Core Expertise
Kubernetes Operations
- Workload Management: Deployments, StatefulSets, DaemonSets, Jobs, and CronJobs
- Networking: Services, Ingress, NetworkPolicies, and DNS configuration
- Configuration & Storage: ConfigMaps, Secrets, PersistentVolumes, and PersistentVolumeClaims
- Troubleshooting: Debugging pods, analyzing logs, and inspecting cluster events
Cluster Operations Process
- Manifest First: Always prefer declarative YAML manifests for resource management
- Validate & Dry-Run: Use
kubectl apply --dry-run=client to validate changes
- Inspect & Verify: After applying changes, verify with
kubectl get, kubectl describe, kubectl logs
- Monitor Health: Continuously check status of nodes, pods, and services
- Clean Up: Ensure old or unused resources are properly garbage collected
Essential Commands
# Resource management
kubectl apply -f manifest.yaml
kubectl get pods -A
kubectl describe pod <pod-name>
kubectl logs -f <pod-name>
kubectl exec -it <pod-name> -- /bin/bash
# Debugging
kubectl get events --sort-by='.lastTimestamp'
kubectl top nodes
kubectl top pods --containers
kubectl port-forward <pod-name> 8080:80
# Deployment management
kubectl rollout status deployment/<name>
kubectl rollout history deployment/<name>
kubectl rollout undo deployment/<name>
# Cluster inspection
kubectl cluster-info
kubectl get nodes -o wide
kubectl api-resources
Key Debugging Patterns
Pod Debugging
# Pod inspection
kubectl describe pod <pod-name>
kubectl get pod <pod-name> -o yaml
kubectl logs <pod-name> --previous
# Interactive debugging
kubectl exec -it <pod-name> -- /bin/bash
kubectl debug <pod-name> -it --image=busybox
kubectl port-forward <pod-name> 8080:80
Networking Troubleshooting
# Service debugging
kubectl get svc -o wide
kubectl get endpoints
kubectl describe svc <service>
# Network connectivity
kubectl run test-pod --image=busybox -it --rm -- sh
# Inside pod: nslookup, wget, nc commands
Common Issues
# CrashLoopBackOff debugging
kubectl logs <pod> --previous
kubectl describe pod <pod>
kubectl get events --field-selector involvedObject.name=<pod>
# Resource constraints
kubectl top pod <pod>
kubectl describe pod <pod> | grep -A 5 Limits
# State management
kubectl state list
kubectl state show <resource>
Best Practices
Context Safety (CRITICAL)
- Always specify
--context explicitly in every kubectl command
- Never rely on the current context - it may have been changed by another process
- Use
kubectl --context=<context-name> get pods format for all operations
- This prevents accidental operations on the wrong cluster (e.g., running production commands against staging)
# CORRECT: Explicit context
kubectl --context=gke_myproject_us-central1_prod get pods
kubectl --context=staging-cluster apply -f deployment.yaml
# WRONG: Relying on current context
kubectl get pods # Which cluster is this targeting?
Resource Definitions
- Use declarative YAML manifests
- Implement proper labels and selectors
- Define resource requests and limits
- Configure health checks (liveness/readiness probes)
Security
- Use NetworkPolicies to restrict traffic
- Implement RBAC for access control
- Store sensitive data in Secrets
- Run containers as non-root users
Monitoring
- Configure proper logging and metrics
- Set up alerts for critical conditions
- Use health checks and readiness probes
- Monitor resource usage and quotas
Agentic Optimizations
| Context |
Command |
| Pod status (structured) |
kubectl get pods -n <ns> -o json | jq '.items[] | {name:.metadata.name, status:.status.phase}' |
| Quick overview |
kubectl get pods -n <ns> -o wide |
| Events (compact) |
kubectl get events -n <ns> --sort-by='.lastTimestamp' -o json |
| Resource details |
kubectl get <resource> -o json |
| Logs (bounded) |
kubectl logs <pod> -n <ns> --tail=50 |
For detailed debugging commands, troubleshooting patterns, Helm workflows, and advanced K8s operations, see REFERENCE.md.
1---2name: kubernetes-operations3description: Kubernetes operations — deployment, management, troubleshooting, kubectl mastery. Use when the user mentions K8s, kubectl, pods, deployments, services, ingress, or cluster stability.4---5
6# Kubernetes Operations
7
8Expert knowledge for Kubernetes cluster management, deployment, and troubleshooting with mastery of kubectl and cloud-native patterns.
9
10## When to Use This Skill
11
12| Use this skill when... | Use <sibling> instead when... |
13|---|---|
14| Working with kubectl against pods, deployments, services, ingress, ConfigMaps, or Secrets | Use kubectl-debugging when you specifically need `kubectl debug` ephemeral containers or node sessions |
15| Applying or inspecting raw Kubernetes manifests and kustomize overlays | Use helm-release-management when the workload is delivered as a Helm chart |
16| Diagnosing cluster-level networking, storage, or workload health | Use argocd-login when the issue is authenticating to ArgoCD before any cluster operation |
17
18## Core Expertise
19
20**Kubernetes Operations**
21- **Workload Management**: Deployments, StatefulSets, DaemonSets, Jobs, and CronJobs
22- **Networking**: Services, Ingress, NetworkPolicies, and DNS configuration
23- **Configuration & Storage**: ConfigMaps, Secrets, PersistentVolumes, and PersistentVolumeClaims
24- **Troubleshooting**: Debugging pods, analyzing logs, and inspecting cluster events
25
26## Cluster Operations Process
27
281. **Manifest First**: Always prefer declarative YAML manifests for resource management
292. **Validate & Dry-Run**: Use `kubectl apply --dry-run=client` to validate changes
303. **Inspect & Verify**: After applying changes, verify with `kubectl get`, `kubectl describe`, `kubectl logs`
314. **Monitor Health**: Continuously check status of nodes, pods, and services
325. **Clean Up**: Ensure old or unused resources are properly garbage collected
33
34## Essential Commands
35
36```bash
37# Resource management
38kubectl apply -f manifest.yaml
39kubectl get pods -A
40kubectl describe pod <pod-name>
41kubectl logs -f <pod-name>
42kubectl exec -it <pod-name> -- /bin/bash
43
44# Debugging
45kubectl get events --sort-by='.lastTimestamp'
46kubectl top nodes
47kubectl top pods --containers
48kubectl port-forward <pod-name> 8080:80
49
50# Deployment management
51kubectl rollout status deployment/<name>
52kubectl rollout history deployment/<name>
53kubectl rollout undo deployment/<name>
54
55# Cluster inspection
56kubectl cluster-info
57kubectl get nodes -o wide
58kubectl api-resources
59```
60
61## Key Debugging Patterns
62
63**Pod Debugging**
64```bash
65# Pod inspection
66kubectl describe pod <pod-name>
67kubectl get pod <pod-name> -o yaml
68kubectl logs <pod-name> --previous
69
70# Interactive debugging
71kubectl exec -it <pod-name> -- /bin/bash
72kubectl debug <pod-name> -it --image=busybox
73kubectl port-forward <pod-name> 8080:80
74```
75
76**Networking Troubleshooting**
77```bash
78# Service debugging
79kubectl get svc -o wide
80kubectl get endpoints
81kubectl describe svc <service>
82
83# Network connectivity
84kubectl run test-pod --image=busybox -it --rm -- sh
85# Inside pod: nslookup, wget, nc commands
86```
87
88**Common Issues**
89```bash
90# CrashLoopBackOff debugging
91kubectl logs <pod> --previous
92kubectl describe pod <pod>
93kubectl get events --field-selector involvedObject.name=<pod>
94
95# Resource constraints
96kubectl top pod <pod>
97kubectl describe pod <pod> | grep -A 5 Limits
98
99# State management
100kubectl state list
101kubectl state show <resource>
102```
103
104## Best Practices
105
106**Context Safety (CRITICAL)**
107- **Always specify `--context`** explicitly in every kubectl command
108- Never rely on the current context - it may have been changed by another process
109- Use `kubectl --context=<context-name> get pods` format for all operations
110- This prevents accidental operations on the wrong cluster (e.g., running production commands against staging)
111
112```bash
113# CORRECT: Explicit context
114kubectl --context=gke_myproject_us-central1_prod get pods
115kubectl --context=staging-cluster apply -f deployment.yaml
116
117# WRONG: Relying on current context
118kubectl get pods # Which cluster is this targeting?
119```
120
121**Resource Definitions**
122- Use declarative YAML manifests
123- Implement proper labels and selectors
124- Define resource requests and limits
125- Configure health checks (liveness/readiness probes)
126
127**Security**
128- Use NetworkPolicies to restrict traffic
129- Implement RBAC for access control
130- Store sensitive data in Secrets
131- Run containers as non-root users
132
133**Monitoring**
134- Configure proper logging and metrics
135- Set up alerts for critical conditions
136- Use health checks and readiness probes
137- Monitor resource usage and quotas
138
139## Agentic Optimizations
140
141| Context | Command |
142|---------|---------|
143| Pod status (structured) | `kubectl get pods -n <ns> -o json \| jq '.items[] \| {name:.metadata.name, status:.status.phase}'` |
144| Quick overview | `kubectl get pods -n <ns> -o wide` |
145| Events (compact) | `kubectl get events -n <ns> --sort-by='.lastTimestamp' -o json` |
146| Resource details | `kubectl get <resource> -o json` |
147| Logs (bounded) | `kubectl logs <pod> -n <ns> --tail=50` |
148
149For detailed debugging commands, troubleshooting patterns, Helm workflows, and advanced K8s operations, see REFERENCE.md.