kubernetes
SKILL.md
Kubernetes
Essential kubectl commands and Kubernetes patterns.
Context & Namespace
# View contexts
kubectl config get-contexts
kubectl config current-context
# Switch context
kubectl config use-context production
# Set default namespace
kubectl config set-context --current --namespace=my-app
# Use namespace in command
kubectl get pods -n kube-system
kubectl get pods --all-namespaces # or -A
Pods
# List pods
kubectl get pods
kubectl get pods -o wide # More details
kubectl get pods -w # Watch mode
kubectl get pods --show-labels
kubectl get pods -l app=web # By label
# Pod details
kubectl describe pod my-pod
kubectl get pod my-pod -o yaml
# Logs
kubectl logs my-pod
kubectl logs my-pod -f # Follow
kubectl logs my-pod --tail=100
kubectl logs my-pod -c my-container # Specific container
kubectl logs my-pod --previous # Previous crash
# Exec into pod
kubectl exec -it my-pod -- /bin/sh
kubectl exec -it my-pod -c my-container -- bash
# Port forward
kubectl port-forward my-pod 8080:80
kubectl port-forward svc/my-service 8080:80
# Copy files
kubectl cp my-pod:/app/file.txt ./file.txt
kubectl cp ./file.txt my-pod:/app/
# Delete
kubectl delete pod my-pod
kubectl delete pod my-pod --grace-period=0 --force
Deployments
# Create deployment
kubectl create deployment web --image=nginx:latest --replicas=3
# List
kubectl get deployments
kubectl get deploy
# Scale
kubectl scale deployment web --replicas=5
# Update image
kubectl set image deployment/web nginx=nginx:1.25
# Rollout status
kubectl rollout status deployment/web
# Rollback
kubectl rollout undo deployment/web
kubectl rollout undo deployment/web --to-revision=2
# History
kubectl rollout history deployment/web
# Restart (rolling)
kubectl rollout restart deployment/web
Deployment YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx:1.25
ports:
- containerPort: 80
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
livenessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /ready
port: 80
initialDelaySeconds: 5
periodSeconds: 10
env:
- name: NODE_ENV
value: "production"
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
Services
# ClusterIP (internal)
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector:
app: web
ports:
- port: 80
targetPort: 8080
---
# LoadBalancer (external)
apiVersion: v1
kind: Service
metadata:
name: web-public
spec:
type: LoadBalancer
selector:
app: web
ports:
- port: 80
targetPort: 8080
---
# NodePort
apiVersion: v1
kind: Service
metadata:
name: web-nodeport
spec:
type: NodePort
selector:
app: web
ports:
- port: 80
targetPort: 8080
nodePort: 30080
# Quick expose
kubectl expose deployment web --port=80 --target-port=8080
kubectl expose deployment web --type=LoadBalancer --port=80
# List services
kubectl get svc
kubectl describe svc web
ConfigMaps & Secrets
# ConfigMap
kubectl create configmap app-config --from-literal=key=value
kubectl create configmap app-config --from-file=config.yaml
# Secret
kubectl create secret generic db-creds \
--from-literal=username=admin \
--from-literal=password=secret123
# View
kubectl get configmap app-config -o yaml
kubectl get secret db-creds -o jsonpath='{.data.password}' | base64 -d
Apply & Delete
# Apply manifest
kubectl apply -f deployment.yaml
kubectl apply -f ./k8s/ # All files in directory
kubectl apply -f https://example.com/manifest.yaml
# Delete
kubectl delete -f deployment.yaml
kubectl delete deployment web
kubectl delete all -l app=web # By label
# Dry run
kubectl apply -f deployment.yaml --dry-run=client
kubectl apply -f deployment.yaml --dry-run=server
Debugging Quick Reference
# Pod not starting?
kubectl describe pod my-pod # Check Events section
kubectl get events --sort-by='.lastTimestamp'
# CrashLoopBackOff?
kubectl logs my-pod --previous # Logs from crashed container
# Can't connect to service?
kubectl get endpoints my-service # Check if endpoints exist
kubectl run debug --rm -it --image=busybox -- wget -qO- http://my-service
# Resource issues?
kubectl top pods
kubectl top nodes
kubectl describe node <node-name> # Check Allocatable vs Allocated
Reference
For debugging patterns: references/debugging.md
For YAML templates: references/manifests.md
Weekly Installs
3
Repository
1mangesh1/dev-s…llectionGitHub Stars
2
First Seen
Feb 21, 2026
Security Audits
Installed on
opencode3
gemini-cli3
claude-code3
github-copilot3
codex3
amp3