Skip to content

Latest commit

 

History

History
89 lines (86 loc) · 11 KB

commands.md

File metadata and controls

89 lines (86 loc) · 11 KB

kubectl

Command / Options Use Case Example
apply
-f Apply resources.yaml kubectl apply -f resources.yaml
config
Display the current context kubectl config current-context
--raw
-o json
Display merged kubeconfig settings kubectl config view --raw -o json
--client-key=$PWD/dave.key
--embed-certs=true
To set a user 'dave' entry in kubeconfig kubectl config set-credentials dave --client-key=$PWD/dave.key --embed-certs=true
cordon
Mark node as unschedulable kubectl cordon node-01
create
Create a namespace dev-ns kubectl create namespace dev-ns
--dry-run=client
--replicas=4
Crete Deployment YAML file (-o yaml).
Don't create it(--dry-run)
Ensure 4 Replicas (--replicas=4)
kubectl create deployment --image=nginx nginx --dry-run=client --replicas=4 -o yaml > nginx-deployment.yaml
-f Create a pod using the data in pod.json. kubectl create -f ./pod.json
--from-file=app_config.properties Create a configmap based on a file kubectl create configmap app-config --from-file=app_config.properties
--from-literal=APP_NAME=test-app Create a configmap based on a specified literal value kubectl create configmap app-config --from-literal=APP_NAME=test-app --from-literal=APP_ENV=dev
--image=nginx Create a deployment using nginx image kubectl create deployment --image=nginx nginx
--tcp =5678:8080 Create a new ClusterIP service named my-cs kubectl create service clusterip my-cs --tcp=5678:8080
--tcp=80:80
--node-port=30080
Create a Service named nginx of type NodePort to expose pod nginx's port 80 on port 30080 on the nodes
This will automatically use the pod's labels as selectors, but you cannot specify the node port
You have to generate a definition file and then add the node port in manually before creating the service with the pod
kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml
-o yaml
--dry-run
Generate Deployment YAML file (-o yaml).
Don't create it(--dry-run)
kubectl create deployment --image=nginx nginx --dry-run=client -o yaml
delete
Delete deployment with name 'www' from default namespace kubectl delete deployment www
-f Delete a pod using the type and name specified in pod.json kubectl delete -f ./pod.json
--force
--grace-period=0
To immediately remove resources from API and bypass graceful deletion. kubectl delete pod <PODNAME> --grace-period=0 --force --namespace <NAMESPACE>
--namespace Delete pod web-pack in namespace frontend kubectl delete pod web-pack --namespace frontend
describe
-n ingress Describe a pod with name 'traefik-nb8p2' in ingress namespace kubectl describe pod traefik-nb8p2 -n ingress
To get the Taints on master node kubectl describe nodes master | grep -i taints
drain
Drain node in preparation for maintenance kubectl drain node-01
edit
To change the image of nginx deployment to 1.9.0 kubectl create deployment my-dep --image=nginx
kubectl edit deployment my-dep
kubectl describe deployment my-dep | grep -i image
exec
--prefix
-keys-only
To list all the keys stored by kubernetes kubectl exec etcd-master -n kube-system etcdctl get --prefix -keys-only
explain
--recursive Print the fields of fields kubectl explain pod --recursive | less
expose
--port=6379
--name redis-service
--dry-run=client
-o yaml
Create a Service named redis-service of type ClusterIP to expose pod redis on port 6379 using dry-run mode kubectl expose pod redis --port=6379 --name redis-service --dry-run=client -o yaml
--port=80
--target-port=8000
Create a service for an nginx deployment, which serves on port 80 and connects to the containers on port 8000. kubectl expose deployment nginx --port=80 --target-port=8000
--port=80
--name nginx-service
--type=NodePort
--dry-run=client
-o yaml
Create a Service named nginx of type NodePort to expose pod nginx's port 80 on port 30080 on the nodes.
This will automatically use the pod's labels as selectors, but you cannot specify the node port.
You have to generate a definition file and then add the node port in manually before creating the service with the pod
kubectl expose pod nginx --port=80 --name nginx-service --type=NodePort --dry-run=client -o yaml
get
events Events such as the ones you saw at the end of kubectl describe pod are persisted in etcd
To list all events you can use
kubectl get events
--help To get help! kubectl get --help
To find option which we need for all namespaces kubectl get --help | grep namespaces
To find what is the argument for no-headers in kubernetes commands kubectl get --help | grep -i header
namespaces To get all the namespace resources kubectl get namespace
--no-headers To get all the pods in given namespace and do not give header columns kubectl get pods -n kube-system --no-headers
nodes To get all the nodes in the kubernetes cluster kubectl get nodes
--show-labels To show the labels present on the nodes kubectl get nodes --show-labels
-n ingress To get all the pod resources in namespace ingress kubectl get pod -n ingress
-n ingress
-o yaml
To output all the pods in namespace ingress in yaml format kubectl get pod -n ingress -o yaml
To output single pod with name 'traefik-nb8p2' in namespace ingress in yaml format kubectl get pod traefik-nb8p2 -n ingress -o yaml
--all-namespaces To view all the pods from all namespaces kubectl get pods --all-namespaces
-n kube-system To view the pods in kube-system namespace kubectl get pods -n kube-system
-o wide To check which pod is present in which particular node kubectl get pods -o wide
--selector
-l
Prints a table of the most important information about the specified resources.
You can filter the list using a label selector and the --selector flag
kubectl get pods --selector app=App1
OR
kubectl get pod -l env=prod,bu=finance,tier=frontend
--show-labels To list the existing pods and also show the labels in default namespace kubectl get pods --show-labels
label
Update the label on node node-1 with key 'size' and value 'Large' kubectl label nodes node-1 size=Large
logs
since To get the output of logs of a given resource like 'pod' since last one hour KUBECONFIG=$HOME/kubernetes/kubeconfig kubectl logs --since=1h module-5c8986fb69-8jvwx -n backend
-f Begin streaming the logs of the ruby container in pod web-1 kubectl logs -f -c ruby web-1
--all-containers=true Begin streaming the logs from all containers in pods defined by label app=nginx kubectl logs -f -lapp=nginx --all-containers=true
Begin stream logs of simple-webapp container in pod webapp-2 having multiple containers kubectl logs -f webapp-2 simple-webapp
replace
Replace a pod using the data in pod.json. kubectl replace -f ./pod.json
rollout
history View previous rollout revisions and configurations.
In following case we are checking the rollout history of deployment.
kubectl rollout history deployment/myapp-deployment
status Show the status of the rollout. kubectl rollout status deployment/myapp-deployment
undo Rollback to a previous rollout. In the following case roll back to previous deployment kubectl rollout undo deployment/myapp-deployment
run
--dry-run To NOT create nginx pod, only generate yaml kubectl run nginx --image=nginx --dry-run=client -o yaml
--image To create NGINX pod kubectl run nginx --image=nginx
To create a pod with image redis and name redis in namespace kube-system kubectl run redis --image=redis --dry-run=client -n kube-system -o yaml > pod.yaml ; kubectl apply -f .
OR
kubectl run redis --image=redis -n kube-system
-o yaml To create nginx pod and generate the yaml kubectl run nginx --image=nginx -o yaml
-p Create a new pod called custom-nginx using the nginx image and expose it on container port 8080 kubectl run custom-nginx --image=nginx --port=5701
scale
--replicas=3 To scale a deployment named httpd-frontend to 3 replicas kubectl scale deployment httpd-frontend --replicas=3
set
Set a deployment's nginx container image to nginx:1.9.1 kubectl create deployment my-dep --image=nginx
kubectl set image deployment my-dep nginx=nginx:1.9.1
kubectl describe deployment my-dep | grep -i image
taint
Update node 'node1' with a taint with key 'app' and value 'blue' and effect 'NoSchedule'. kubectl taint nodes node1 app=blue:NoSchedule
Remove from node 'foo' the taint with key 'dedicated' and effect 'NoSchedule' if one exists.
Put a - at the end of Taint (which you can get using kubectl describe node master | grep -i taint
kubectl taint nodes foo dedicated:NoSchedule-
uncordon
Mark node as schedulable. kubectl uncordon node-01