Essential Kubernetes Commands Reference Guide
Considering I have a project called leet-sensei I will use different commands to organize and create deployment, namespace and manage the Kubernetes pods for the project.
Namespace Operations
# Create a namespace
kubectl create namespace leet-sensei
# Get all namespaces
kubectl get namespaces
# Set a default namespace for kubectl commands
kubectl config set-context --current --namespace=leet-sensei
Pod Management
# Get all pods in a namespace
kubectl get pods -n leet-sensei
# Get pods with specific labels
kubectl get pods -l app=leet-sensei -n leet-sensei
# Get detailed information about pods
kubectl describe pods -n leet-sensei
# Get pods with wide output (shows node information)
kubectl get pods -n leet-sensei -o wide
# Execute a shell inside a pod
kubectl exec -it $(kubectl get pods -l app=leet-sensei -n leet-sensei -o jsonpath="{.items[0].metadata.name}") -n leet-sensei -- sh
# View pod logs
kubectl logs -n leet-sensei leet-sensei-66c9dbc6f9-tm25q
# Get logs from all pods with a label
kubectl logs -l app=leet-sensei -n leet-sensei
# Watch pod status in real-time
kubectl get pods -n leet-sensei --watch
Deployment Management
# Get deployment status
kubectl get deployment leet-sensei -n leet-sensei
# Get detailed deployment information in YAML format
kubectl get deployment leet-sensei -n leet-sensei -o yaml
# Edit a deployment
kubectl edit deployment leet-sensei -n leet-sensei
# Scale a deployment
kubectl scale deployment leet-sensei -n leet-sensei --replicas=3
# Restart a deployment (rolling update)
kubectl rollout restart deployment leet-sensei -n leet-sensei
# Check rollout status
kubectl rollout status deployment leet-sensei -n leet-sensei
# Rollback to previous deployment version
kubectl rollout undo deployment leet-sensei -n leet-sensei
Secret Management
# Create a secret from .env file
kubectl create secret generic leet-sensei-secrets --from-env-file=.env -n leet-sensei
# Delete a secret
kubectl delete secret leet-sensei-secrets -n leet-sensei
# Get a list of secrets
kubectl get secrets -n leet-sensei
# View secret details (without showing values)
kubectl describe secret leet-sensei-secrets -n leet-sensei
# Decode a secret value
kubectl get secret leet-sensei-secrets -n leet-sensei -o jsonpath="{.data.DATABASE_URL}" | base64 --decode
ConfigMap Management
# Create a ConfigMap from a file
kubectl create configmap leet-sensei-config --from-file=config.json -n leet-sensei
# Create a ConfigMap from literal values
kubectl create configmap leet-sensei-config --from-literal=API_URL=https://api.example.com -n leet-sensei
# Get ConfigMap details
kubectl get configmap leet-sensei-config -n leet-sensei -o yaml
Service Management
# List all services
kubectl get services -n leet-sensei
# Describe a service
kubectl describe service leet-sensei -n leet-sensei
# Expose a deployment as a service
kubectl expose deployment leet-sensei --port=80 --target-port=8080 --type=ClusterIP -n leet-sensei
Port Forwarding
# Forward local port to pod port
kubectl port-forward pods/leet-sensei-66c9dbc6f9-tm25q 8080:80 -n leet-sensei
# Forward local port to service port
kubectl port-forward svc/leet-sensei 8080:80 -n leet-sensei
Resource Monitoring
# Get resource usage for pods
kubectl top pods -n leet-sensei
# Get resource usage for nodes
kubectl top nodes
# Monitor resource usage in real-time
watch kubectl top pods -n leet-sensei
Context and Configuration
# View current context
kubectl config current-context
# View all contexts
kubectl config get-contexts
# Switch context
kubectl config use-context my-cluster-name
# View cluster info
kubectl cluster-info
Application Debugging
# Check environment variables
kubectl exec -it leet-sensei-66c9dbc6f9-tm25q -n leet-sensei -- env
# Check DNS resolution
kubectl exec -it leet-sensei-66c9dbc6f9-tm25q -n leet-sensei -- nslookup kubernetes.default
# Check network connectivity
kubectl exec -it leet-sensei-66c9dbc6f9-tm25q -n leet-sensei -- curl -v http://service-name
# Get events from a namespace
kubectl get events -n leet-sensei
Resource Management
# Apply configuration from a file
kubectl apply -f deployment.yaml
# Delete resources from a file
kubectl delete -f deployment.yaml
# Explain resource fields
kubectl explain deployment.spec.template.spec.containers
# Resource quotas
kubectl get resourcequota -n leet-sensei
kubectl describe resourcequota -n leet-sensei
Helpful Tips
Use labels effectively: Labels help organize and select subsets of resources
Namespace isolation: Use namespaces to isolate resources for different environments or applications
Context management: Set default namespaces to avoid typing
-n namespace
with every commandUse jsonpath for specific output: Extract specific fields with jsonpath for scripting
Use kubectl aliases: Create aliases for frequently used commands to save typing time
Common Troubleshooting Commands
# Check pod status
kubectl get pods -n leet-sensei
# View pod logs
kubectl logs -n leet-sensei leet-sensei-66c9dbc6f9-tm25q
# Check pod details
kubectl describe pods -n leet-sensei
# Check events
kubectl get events -n leet-sensei
# Check endpoint connections
kubectl get endpoints -n leet-sensei
Sajit Khadka
Sajit Khadka is a software developer and tech enthusiast with a passion for exploring coding challenges and sharing insights from his development journey.