Kubectl is the command line configuration tool for Kubernetes. It communicates with a Kubernetes API server. Kubectl allows to create, inspect, update, and delete Kubernetes objects.
Daemonsets
Shortcode = ds
List of daemonsets:
kubectl get daemonset
Edit and update:
kubectl edit daemonset <daemonset_name>
Create a new daemonset:
kubectl create daemonset <daemonset_name>
Delete a daemonset:
kubectl delete daemonset <daemonset_name>
Manage the rollout of a daemonset:
kubectl rollout daemonset
Display the detailed state of daemonsets within a namespace
kubectl describe ds <daemonset_name> -n <namespace_name>
Cluster Management
kubectl cluster-info
kubectl version
Get the configuration of the cluster:
kubectl config view
List the API resources that are available:
kubectl api-resources
List the API versions that are available:
kubectl api-versions
List everything:
kubectl get all --all-namespaces
Deployments
Shortcode = deploy
List of deployments:
kubectl get deployment
Display the detailed state of one or more deployments:
kubectl describe deployment <deployment_name>
Edit and update the deployment on the server
kubectl edit deployment <deployment_name>
Create one a new deployment
kubectl create deployment <deployment_name>
Delete deployments
kubectl delete deployment <deployment_name>
See the rollout status of a deployment
kubectl rollout status deployment <deployment_name>
Events
Shortcode = ev
List recent events for all resources in the system
kubectl get events
List Warnings only
kubectl get events --field-selector type=Warning
List events but exclude Pod events
kubectl get events --field-selector involvedObject.kind!=Pod
Pull events for a single node with a specific name
kubectl get events --field-selector involvedObject.kind=Node, involvedObject.name\=<node_name>
Filter out normal events from a list of events
kubectl get events --field-selector type!=Normal
Logs
Print the logs for a pod
kubectl logs <pod_name>
Print the logs for the last hour for a pod
kubectl logs --since=1h <pod_name>
Get the most recent 20 lines of logs
kubectl logs --tail=20 <pod_name>
Get logs from a service and optionally select which container
kubectl logs -f <service_name> [-c <$container>]
Print the logs for a pod and follow new logs
kubectl logs -f <pod_name>
Print the logs for a container in a pod
kubectl logs -c <container_name> <pod_name>
Output the logs for a pod into a file named ‘pod.log’
kubectl logs <pod_name> pod.log
View the logs for a previously failed pod
kubectl logs --previous <pod_name>
For logs, a tool developed by Johan Haleby called Kubetail. This is a bash script that allows to get logs from multiple pods simultaneously.
Get logs for all pods:
kubetail <pod_prefix>
Recent 5 minutes of logs:
kubetail <pod_prefix> -s 5m
Manifest Files
kubectl apply -f manifest_file.yaml
Create objects:
kubectl create -f manifest_file.yaml
Create objects in all manifest files in a directory
kubectl create -f ./dir
Create objects from a URL
kubectl create -f ‘url’
Delete an object
kubectl delete -f manifest_file.yaml
Namespaces
Shortcode = ns
Create namespace <name>
kubectl create namespace <namespace_name>
List one or more namespaces
kubectl get namespace <namespace_name>
Display the detailed state of one or more namespace
kubectl describe namespace <namespace_name>
Delete a namespace
kubectl delete namespace <namespace_name>
Edit and update the definition of a namespace
kubectl edit namespace <namespace_name>
Display Resource (CPU/Memory/Storage) usage for a namespace
kubectl top namespace <namespace_name>
Nodes
Shortcode = no
Update the taints on one or more nodes
kubectl taint node <node_name>
List one or more nodes
kubectl get node
Delete a node or multiple nodes
kubectl delete node <node_name>
Display Resource usage (CPU/Memory/Storage) for nodes
kubectl top node
Resource allocation per node
kubectl describe nodes | grep Allocated -A 5
Pods running on a node
kubectl get pods -o wide | grep <node_name>
Annotate a node
kubectl annotate node <node_name>
Mark a node as unschedulable
kubectl cordon node <node_name>
Mark node as schedulable
kubectl uncordon node <node_name>
Drain a node in preparation for maintenance
kubectl drain node <node_name>
Add or update the labels of one or more nodes
kubectl label node
Pods
Shortcode = po
List one or more pods
kubectl get pod
Delete a pod
kubectl delete pod <pod_name>
Display the detailed state of a pods
kubectl describe pod <pod_name>
Create a pod
kubectl create pod <pod_name>
Execute a command against a container in a pod
kubectl exec <pod_name> -c <container_name> <command>
Get interactive shell on a a single-container pod
kubectl exec -it <pod_name> /bin/sh
Display Resource usage (CPU/Memory/Storage) for pods
kubectl top pod
Add or update the annotations of a pod
kubectl annotate pod <pod_name> <annotation>
Add or update the label of a pod
kubectl label pod <pod_name>
Replication Controllers
Shortcode = rc
List the replication controllers
kubectl get rc
List the replication controllers by namespace
kubectl get rc --namespace=”<namespace_name>”
ReplicaSets
Shortcode = rs
List ReplicaSets
kubectl get replicasets
Display the detailed state of one or more ReplicaSets
kubectl describe replicasets <replicaset_name>
Scale a ReplicaSet
kubectl scale --replicas=[x]
Services
Shortcode = svc
List one or more services
kubectl get services
Display the detailed state of a service
kubectl describe services
Expose a replication controller, service, deployment or pod as a new Kubernetes service
kubectl expose deployment [deployment_name]
Edit and update the definition of one or more services
kubectl edit services
Service Accounts
Shortcode = sa
List service accounts
kubectl get serviceaccounts
Display the detailed state of one or more service accounts
kubectl describe serviceaccounts
Replace a service account
kubectl replace serviceaccount
Delete a service account
kubectl delete serviceaccount <service_account_name>
StatefulSet
Shortcode = sts
List StatefulSet
kubectl get statefulset
Delete StatefulSet only (not pods)
kubectl delete statefulset/[stateful_set_name] --cascade=false
Common Options
To specify optional flags with commands. Here are some of the most common and useful ones.
-o Output format. For example if you wanted to list all of the pods in ps output format with more information.
kubectl get pods -o wide
-n Shorthand for --namespace. For example, if you’d like to list all the Pods in a specific Namespace you would do this command:
kubectl get pods --namespace=[namespace_name]
kubectl get pods -n=[namespace_name]
-f Filename, directory, or URL to files to use to create a resource. For example when creating a pod using data in a file named newpod.json.
kubectl create -f ./newpod.json
-l Selector to filter on, supports ‘=’, ‘==’, and ‘!=’.
Help for kubectl
-h
Secrets
Create a secret
kubectl create secret
List secrets
kubectl get secrets
List details about secrets
kubectl describe secrets
Delete a secret
kubectl delete secret <secret_name>
Compiled by: Azizul maqsud