List down contexts
kubectl config get-contextsGet all resources (including clusters)
kubectl get allGet all resource types available
kubectl api-resourcesGet resource : pods/nodes/deployments/services/replicasets etc.
# syntax
kubectl get {pod(s)|node(s)|deployment(s)|service(s)|replicaset(s)}
kubectl get deploymentsGet 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 yamlCreate 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 nginxDeclarative (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