Kubectl
Global
Change current context
sh
kubectl config use-context <context_name>
Change current namespace
sh
kubectl config set-context --current --namespace <namespace>
Get resource in every namespace
sh
kubectl get <resource> -A
Show more resource infos
sh
kubectl get <resource> -o wide
Apply resource from stdin
sh
cat <file> | kubectl apply -f -
or
sh
kubectl apply -f - <<EOF
<-- insert YAML content here -->
EOF
Pods
Get pod by node
sh
kubectl get pods -A -o wide --field-selector spec.nodeName=<node>
Get pod by label
sh
kubectl get pods -A -o wide -l <key>=<value>
Get pod labels
sh
kubectl get pod --show-labels
Copy file or directory from local to container
sh
kubectl cp <local_path> <namespace>/<pod_name>:<container_path>
Copy file or directory from container to local
sh
kubectl cp <namespace>/<pod_name>:<container_path> <local_path>
Copy file or directory from one container to another
sh
kubectl exec <source_pod_name> -- tar cf - <source_container_path> | kubectl exec -i <target_pod_name> -- tar xvf - -C <target_container_path>
Get pod quotas
sh
kubectl get pods -A -o custom-columns='NAME:.metadata.name,CPU_REQ:spec.containers[].resources.requests.cpu,CPU_LIM:spec.containers[].resources.limits.cpu,MEM_REQ:spec.containers[].resources.requests.memory,MEM_LIM:spec.containers[].resources.limits.memory'
Nodes
Get node labels
sh
kubectl get nodes --show-labels
Make a node unschedulable and remove workloads from it
sh
kubectl drain <node_name> --ignore-daemonsets --delete-emptydir-data
Make a node unschedulable
sh
kubectl cordon <node_name>
Remove a node from the cluster
sh
kubectl delete node <node_name>
Make a node schedulable
sh
kubectl uncordon <node_name>
Secrets
Create and apply secret
sh
echo "apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: <secret_name>
namespace: <namespace>
stringData:
foo: bar" \
| kubectl apply -f -
Create and apply secret from file
sh
kubectl create secret -n <namespace> generic <secret_name> \
--from-file=<file_name>.yaml \
--dry-run=client \
-o yaml \
| kubectl apply -f -
Read secret
sh
kubectl -n <namespace> get secret <secret_name> -o jsonpath="{.data.<data_field>}" | base64 --decode
Read secret (all fileds)
sh
kubectl -n <namespace> get secret <secret_name> -o yaml | yq '.data | map_values(. | @base64d)'
Network
Forward port
sh
kubectl port-forward -n <namespace> svc/<service_name> <host_port>:<service_port>
or
sh
kubectl port-forward -n <namespace> pod/<pod_name> <host_port>:<pod_port>