Kubernetes

kubectl Cheats

Get containers (IDs) in a Pod: $ k describe pod/POD-NAME -n default

Watch events: $ k get events --watch

Run a container with no yaml: k run [-n NS] POD-NAME -i -t --rm --image=busybox --restart=Never -- /bin/sh

Run a deployment with no yaml: kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0

Delete a pod: k delete [-n NS] pod POD-NAME

Get mode pod info: k get pods nginx-deployment-6b474476c4-bsg92 -o json

Select a kubectl context: k config get-contexts k config use-context CONTEXT-NAME

Create a job on the fly from a cronjob: kubectl create job --from=cronjob/rclone rclone-test

Watch for k8s events:

$ kubectl get events --watch-only

List the containers in a pod:

$ kubectl get pods -n NAMESPACE pod/POD-NAME -o jsonpath='{.spec.containers[*].name}'

Restart a deployment:

$ kubectl -n NAMESPACE rollout restart deployment/DEPLOYMENT-NAME

or:

$ k scale -n NAMESPACE deployment DEPLOYMENT --replicas=0
deployment.apps/fargate-demo scaled

$ k scale -n NAMESPACE deployment DEPLOYMENT --replicas=1
deployment.apps/fargate-demo scaled

Get images ID and hash of a pod:

$ kubectl get pod -n NAMESPACE POD-NAME -o json | jq '.status.containerStatuses[] | { "image": .image, "imageID": .imageID }'

Run a privileged pod for debug purposes:

k debug -n NAMESPACE node/NODE-NAME -it --image=busybox

Select a pod using labels Assuming you have a pod spec with:

spec
  metadata:
    labels:
      app: myapp

You can specify a pod using the kubectl flag -l app=myapp. E.g.:

$ kubectl describe  pod -l app=myapp
$ kubectl logs -f -l app=myapp

Inspect a certificate from a secret:

k get secrets SECRET-NAME --template='{{index .data "tls.crt"}}' | base64 -d | openssl x509 -in - -text -noout