List down contexts

kubectl config get-contexts

Get all resources (including clusters)

kubectl get all

Get all resource types available

kubectl api-resources

Get resource : pods/nodes/deployments/services/replicasets etc.

# syntax
kubectl get {pod(s)|node(s)|deployment(s)|service(s)|replicaset(s)}
 
kubectl get deployments

Get specific resource info

# syntax
kubectl get {pod(s)|node(s)|deployment(s)|service(s)|replicaset(s)}/<resource-name> -o yaml
 
kubectl get deployment/helloworld-deployment -o yaml

Create a deployment, ReplicaSet NodePort.. from file

Imperative

  • This will error if resource already exists
kubectl create -f <filename.yml>

Imperative (using only command line)

kubectl create deployment nginx --image nginx

Declarative (what we want, final state..)

  • This won’t error out if resource already exists
kubectl apply -f <filename.yml>

Expose the service

kubectl expose deployment <deployment-name> --type=NodePort

Show Labels

kubectl get pods --show-labels

Change the label

kubectl label pods/helloworld app=hell

Delete the label

kubectl label pods/helloworld app-

Filter/Select the labels

kubectl get pods --selector dev-lead=karthik,env=production
kubectl get pods --selector dev-lead!=karthik,env=production
kubectl get pods -l 'release-version in (1.0,2.0)' --show-labels
kubectl get pods -l 'release-version notin (1.0,2.0)' --show-labels

Delete Pod by label

kubectl delete pods -l dev-lead=karthik

Describe resource

kubectl describe pods/helloworld

You can see the Events section to troubleshoot problem

Edit a resource yaml in console editor

kubectl edit cronjobs/hellocron

See pod logs

kubectl logs <pod-name>

exec into pod

kubectl exec -it <pod-name> /bin/bash

kubectl exec -it <pod-name> -c <container-name> /bin/bash

Upgrade the application container

kubectl set image deployments/<deployment-name> [container-name]=[updated-container-image] --record

kubectl set image deployments/navbar-deployment helloworld=karthequian/helloworld:blue --record

The --record option helps to view the command executed in the rollout history

Rollout history

kubectl rollout history <resource>

kubectl rollout history deployments/navbar-deployment

Rollout undo

kubectl rollout undo <resource> --to-revision=<revision-number>

kubectl rollout undo deployments/navbar-deployment --to-revision=<revision-number>

create a ConfigMap

kubectl create configmap <name>

kubectl create configmap logger -from-literal=log_level=debug

Create a secret

kubectl create secret generic apikey --from-literal=api_key=1231323

Namespaces

kubectl create namespace ecommerce
kubectl delete namespace ecommerce
kubeclt get deployments -n ecommerce