Commands
Purge not running pods
kubectl delete pods -A --field-selector=status.phase=Failed --field-selector=status.phase=Succeeded
exec as user
kubectl auth can-i get pods --as=fatuser
Purge notready pods (crictl)
for i in `crictl pods | grep NotReady | awk '{print $1}'`; do crictl rmp $i; done
Force namespace deletion
kubectl get namespace <ns> -o json > <ns>.json
kubectl replace --raw "/api/v1/namespaces/<ns>/finalize" -f ./<ns>.json
Allow pods to communicate with firewalld
firewall-cmd --permanent --new-zone=<name>
firewall-cmd --permanent --zone=<name> --set-target=ACCEPT
firewall-cmd --permanent --zone=<name> --add-source=<cluster_pods_cidr>
containerd push registry
ctr content fetch --platform linux/amd64 docker.io/library/postgres:15.1-alpine
ctr images tag docker.io/library/postgres:15.1-alpine localhost:32000/postgres:15.1-alpine
ctr images push --platform linux/amd64 localhost:32000/postgres:15.1-alpine
Get the owner of all pods
kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.name} {.metadata.ownerReferences[].kind}{"\n"}{end}'
Get pod count by node
kubectl get pods --all-namespaces \
--field-selector status.phase=Running \
-o jsonpath='{range .items[*]}{.spec.nodeName}{"\n"}{end}' \
| sort | uniq -c | sort -rn
(AWS) Get nodes by AZ
kubectl get nodes \
-o custom-columns=\
"NAME:.metadata.name,\
AZ:.metadata.labels.topology\.kubernetes\.io/zone,\
INSTANCE-TYPE:.metadata.labels.node\.kubernetes\.io/instance-type,\
NODE-GROUP:.metadata.labels.pasx/node,\
STATUS:.status.conditions[-1].type"