Essential Kubernetes Commands Reference Guide

Kubernetes
HomeLab

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

  1. Use labels effectively: Labels help organize and select subsets of resources

  2. Namespace isolation: Use namespaces to isolate resources for different environments or applications

  3. Context management: Set default namespaces to avoid typing -n namespace with every command

  4. Use jsonpath for specific output: Extract specific fields with jsonpath for scripting

  5. 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

Sajit Khadka is a software developer and tech enthusiast with a passion for exploring coding challenges and sharing insights from his development journey.

Comments (0)