Kubectl Quick Reference
An easy to find list of (not so) frequently used kubectl
commands.
Kube Config
To connect to a cluster, the kubectl
coomand uses a kubeconfig
file. This is generally expected to be present at ~/.kube/config
. However, you can specify the kubeconfig
by specifying the KUBECONFIG
environment variable.
Example:
# create from multiple files
KUBECONFIG=~/.kube/config kubectl apply -f ./my1.yaml -f ./my2.yaml
Multiple kubeconfigs can be used at the same time as well
Example:
KUBECONFIG=~/.kube/config:~/.kube/kubconfig2
kubectl config view
Namespaces
kubectl
commands are executed in the default
namespace when a namespace is not specified. To specify the namespace, use -n
Example:
kubectl get pods -n my-namespace
Use --all-namespaces
to query all namespaces
Example:
kubectl get pods --all-namespaces
Scale
Changes the replica count of a resource.
Syntax:
kubectl scale <resource> <resource-name> --replicas=<new-replicas>
Examples:
#Scale a deployment
kubectl scale deployment test-deployment --replicas=1
# Scale a replicaset named 'foo' to 3.
kubectl scale --replicas=3 rs/foo
# Scale a resource identified by type and name specified in "foo.yaml" to 3.
kubectl scale --replicas=3 -f foo.yaml
# If the deployment named mysql's current size is 2, scale mysql to 3.
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# Scale multiple replication controllers.
kubectl scale --replicas=5 rc/foo rc/bar rc/baz
# Scale statefulset named 'web' to 3.
kubectl scale --replicas=3 statefulset/web
Port forwarding to services and deployments
A deployment/service running on the cluster can be exposed to the local machine easily by port forwarding it.
Syntax:
kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT
Example:
# listen on local port 5000 and forward to port 6000 on a Pod created by <my-deployment>
kubectl port-forward deploy/my-deployment 5000:6000
# listen on local port 5000 and forward to Service target port with name <my-service-port>
kubectl port-forward svc/my-service 5000:my-service-port
# listen on local port 5000 and forward to port 5000 on Service backend
kubectl port-forward svc/my-service 5000
# Listen on port 5000 on the local machine and forward to port 6000 on my-pod
kubectl port-forward my-pod 5000:6000
Execute a command
You can run a command in the first pod and first container in Deployment (single or multi-container cases)
Example:
kubectl exec deploy/my-deployment -- ls
# Interactive shell access to a running pod (1 container case)
kubectl exec --stdin --tty my-pod -- /bin/sh
# Attach to Running Container
kubectl attach my-pod -i
Logs
To display logs from a deployment
kubectl logs deploy/my-deployment
Add -f
to follow the logs
Create and connect to a pod in a cluster for debugging
Sometimes you need to be able to see what a pod can do, especially if you are debugging RBAC
kubectl run test --image=ubuntu --restart=Never -- sleep 1d
kubectl exec -it test -- /bin/bash
Remove the pod when finished
kubectl delete pod test