Best shortcut for working on K8

Come vedete configurare questi shortcut quando si lavora su kube?

alias k=kubectl # will already be pre-configured
export do=‘–dry-run=client -o yaml’ # k create deploy nginx --image=nginx $do
export now=‘–force --grace-period 0’ # k delete pod x $now
alias kg=‘kubectl get’
alias kgp=‘kubectl get pods’
alias kgd=‘kubectl get deployment’
alias kgs=‘kubectl get service’
alias kga=‘kubectl get all’
alias kgaa=‘kubectl get all -A’
alias kd=‘kubectl delete’
alias kdp=‘kubectl delete pod --grace-period=0 --force’
alias kcf=‘kubectl create -f’
alias kaf=‘kubectl apply -f’
alias kgc=‘kubectl config get-contexts’

1 Like
alias k="kubectl"
alias kg="kubectl get"
alias kd="kubectl describe"
alias kl="kubectl logs"
export do="--dry-run=client -o yaml"
export now="--force --grace-period=0"
alias kx='f() { [ "$1" ] && kubectl config use-context $1 || kubectl config current-context ; } ; f'
alias kn='f() { [ "$1" ] && kubectl config set-context --current --namespace $1 || kubectl config view --minify | grep namespace | cut -d" " -f6 ; } ; f'

Helm Commands

bash

# Repository Management
helm repo add <name> <url>
helm repo update
helm repo list
helm repo remove <name>
helm search repo <keyword>

# Install & Upgrade
helm install <release-name> <repo/package> \
  --namespace <namespace> \
  --create-namespace \
  --set replicaCount=2 \
  --values values.yaml \
  --dry-run --debug

helm upgrade <release-name> <repo/package> -n <namespace>
helm upgrade --install <release-name> <repo/package> -n <namespace>

# List & Status
helm list -n <namespace>
helm list --all-namespaces
helm status <release-name> -n <namespace>
helm get values <release-name> -n <namespace>
helm get manifest <release-name> -n <namespace>

# Rollback & History
helm history <release-name> -n <namespace>
helm rollback <release-name> <revision> -n <namespace>
helm rollback <release-name> 0 -n <namespace>  # rollback to previous

# Uninstall
helm uninstall <release-name> -n <namespace>
helm uninstall <release-name> -n <namespace> --keep-history

# Show Chart Info
helm show chart <repo/package>
helm show values <repo/package>
helm show all <repo/package>

Kubernetes Rollout Management

bash

# Check Status
k rollout status deployment/<name> -n <namespace>

# View History (shows all revisions)
k rollout history deployment/<name> -n <namespace>

# View Specific Revision Details
k rollout history deployment/<name> --revision=3 -n <namespace>

# Compare Revisions
k rollout history deployment/<name> --revision=2 -n <namespace>
k rollout history deployment/<name> --revision=3 -n <namespace>

# Undo to Previous
k rollout undo deployment/<name> -n <namespace>

# Undo to Specific Revision
k rollout undo deployment/<name> --to-revision=2 -n <namespace>

# Restart (creates new revision)
k rollout restart deployment/<name> -n <namespace>

# Pause/Resume
k rollout pause deployment/<name> -n <namespace>
k rollout resume deployment/<name> -n <namespace>

How to Find Problematic Revision

bash

# 1. Check all revisions with change causes
k rollout history deployment/<name> -n <namespace>

# 2. Describe specific revision to see what changed
k rollout history deployment/<name> --revision=5 -n <namespace>

# 3. Check deployment events
k describe deployment/<name> -n <namespace>

# 4. Check ReplicaSet for that revision
k get rs -n <namespace>
k describe rs <replicaset-name> -n <namespace>

# 5. Check pod logs from failed revision
k logs -l app=<label> --previous -n <namespace>

# 6. Compare annotations between revisions
k get deployment/<name> -n <namespace> -o yaml | grep -A 5 annotations

Docker Commands

bash

# Image Management
docker images
docker pull <image>:<tag>
docker push <image>:<tag>
docker tag <source> <target>
docker rmi <image>:<tag>
docker image prune -a  # remove unused images

# Save/Load Images
docker save <image>:<tag> -o <file.tar>
docker save <image1> <image2> -o multiple.tar
docker load -i <file.tar>

# Export/Import Containers
docker export <container> -o <file.tar>
docker import <file.tar> <new-image-name>

# Container Management
docker run -d --name <name> -p 8080:80 -e ENV=value <image>
docker run -it --rm <image> /bin/bash  # interactive, auto-remove
docker run -d --restart unless-stopped <image>
docker ps
docker ps -a
docker start <container>
docker stop <container>
docker restart <container>
docker rm <container>
docker rm -f <container>  # force remove running container

# Logs & Exec
docker logs <container>
docker logs -f <container>  # follow
docker logs --tail 100 <container>
docker logs --since 30m <container>
docker exec -it <container> /bin/bash
docker exec <container> <command>

# Inspect & Stats
docker inspect <container>
docker stats
docker stats <container>
docker top <container>

# Networks
docker network ls
docker network create <network>
docker network inspect <network>
docker network connect <network> <container>
docker network disconnect <network> <container>

# Volumes
docker volume ls
docker volume create <volume>
docker volume inspect <volume>
docker volume rm <volume>
docker run -v <volume>:/path <image>
docker run -v /host/path:/container/path <image>

# System Cleanup
docker system df  # show disk usage
docker system prune  # remove unused data
docker system prune -a --volumes  # aggressive cleanup
docker container prune
docker image prune
docker volume prune
docker network prune

# Build
docker build -t <image>:<tag> .
docker build -t <image>:<tag> -f Dockerfile.dev .
docker build --no-cache -t <image>:<tag> .

# Registry
docker login
docker logout
docker search <term>

Pods with name and image

kubectl get pods -o custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[*].image

Pods with name, namespace, and node

kubectl get pods -A -o custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace,NODE:.spec.nodeName

Nodes with name and taints

kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints[*].key

Services with name and type

kubectl get svc -o custom-columns=NAME:.metadata.name,TYPE:.spec.type

PVCs with name and storage

kubectl get pvc -o custom-columns=NAME:.metadata.name,STORAGE:.spec.resources.requests.storage

Pods sorted by creation time

kubectl get pods --sort-by=.metadata.creationTimestamp -o custom-columns=NAME:.metadata.name,CREATED:.metadata.creationTimestamp

Add label

k label pod nginx app=web
k label pod nginx env=prod

Remove label

k label pod nginx app-

Show labels

k get pods --show-labels
k get pods -l app=web
k get pods -l ‘app in (web,api)’
k get pods -l app=web,env=prod

Selector in YAML

spec:
selector:
matchLabels:
app: web
tier: frontend

OR

selector:
matchExpressions:

  • key: app
    operator: In # In, NotIn, Exists, DoesNotExist
    values:
  • web
  • api