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> -AShow more resource infos
sh
kubectl get <resource> -o wideApply resource from stdin
sh
cat <file> | kubectl apply -f -or
sh
kubectl apply -f - <<EOF
<-- insert YAML content here -->
EOFPods
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-labelsCopy 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-labelsMake a node unschedulable and remove workloads from it
sh
kubectl drain <node_name> --ignore-daemonsets --delete-emptydir-dataMake 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 --decodeRead 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>