CKA - Kubectl Command List

Fast Habits

  • alias k=kubectl
  • export do="--dry-run=client -o yaml"
  • export now="--force --grace-period 0"

Context and Namespace

  • k config get-contexts
  • k config use-context <context-name>
  • k config set-context --current --namespace=<ns>
  • k get ns

Cluster and Node Checks

  • k cluster-info
  • k get nodes -o wide
  • k describe node <node-name>
  • k top nodes

Pod Operations

  • k get pods -A -o wide
  • k describe pod <pod> -n <ns>
  • k logs <pod> -n <ns>
  • k logs <pod> -c <container> -n <ns>
  • k logs -f <pod> -n <ns>
  • k exec -it <pod> -n <ns> -- sh
  • k delete pod <pod> -n <ns> $now
  • kubectl get pods --show-labels
  • kubectl get pods -l <key>=<value>

Create Resources Imperatively

  • k create deployment <name> --image=<image>
  • k create deployment <name> --image=<image> --replicas=3
  • k run <name> --image=<image> --restart=Never
  • k run <name> --image=<image> --restart=Never $do > pod.yaml
  • k create service clusterip <svc> --tcp=80:8080
  • k create service nodeport <svc> --tcp=80:8080 --node-port=30080
  • k expose deployment <dep> --port=80 --target-port=8080 --type=ClusterIP

YAML and Apply Flow

  • k create deployment <name> --image=<image> $do > dep.yaml
  • k apply -f <file>.yaml
  • k apply -f <dir>/
  • k replace -f <file>.yaml
  • k diff -f <file>.yaml
  • k edit <resource> <name>

Rollouts and Scaling

  • k get deploy
  • k scale deployment <dep> --replicas=5
  • k rollout status deployment/<dep>
  • k rollout history deployment/<dep>
  • k rollout undo deployment/<dep>
  • k set image deployment/<dep> <container>=<image>:<tag>

Labels, Selectors, Annotations

  • k label pod <pod> env=prod --overwrite
  • k get pods -l env=prod
  • k annotate pod <pod> owner=cka --overwrite
  • k get pods --show-labels

ConfigMaps and Secrets

  • k create configmap <name> --from-literal=key=value
  • k create configmap <name> --from-file=<file>
  • k create secret generic <name> --from-literal=password=abc123
  • k create secret generic <name> --from-file=<file>
  • k get secret <name> -o yaml

Scheduling and Placement

  • k taint nodes <node> key=value:NoSchedule
  • k taint nodes <node> key=value:NoSchedule-
  • k label nodes <node> disktype=ssd
  • k cordon <node>
  • k drain <node> --ignore-daemonsets --delete-emptydir-data
  • k uncordon <node>

Services and Networking

  • k get svc -A
  • k get svc <svc> -o yaml
  • k describe svc <svc> -n <ns>
  • k get endpoints -n <ns>
  • k run tmp --rm -it --image=busybox:1.35 -- sh
  • k run curl --rm -it --image=curlimages/curl -- sh

Storage

  • k get pv
  • k get pvc -A
  • k describe pvc <pvc> -n <ns>
  • k get sc

Troubleshooting

  • k get events -A --sort-by=.lastTimestamp
  • k describe <resource> <name> -n <ns>
  • k auth can-i create pods --as system:serviceaccount:<ns>:<sa> -n <ns>
  • k api-resources
  • k api-versions
  • k explain pod.spec.containers --recursive | less

JSONPath and Custom Output

  • k get pods -A -o custom-columns=NS:.metadata.namespace,NAME:.metadata.name,NODE:.spec.nodeName
  • k get nodes -o jsonpath='{.items[*].metadata.name}'
  • k get pod <pod> -o jsonpath='{.status.podIP}'

Exam Speed Snippets

  • k get po -A
  • k get deploy,svc -A
  • k -n <ns> get po
  • k -n <ns> describe po <pod>
  • k -n <ns> logs <pod>
  • k -n <ns> edit deploy <dep>

Quick Reminder

  • Prefer describe + events first when debugging.
  • Use --dry-run=client -o yaml to generate manifests quickly.
  • Confirm namespace/context before every task.