K8s cheatsheet

Get all namespaces with Rancher project ID:

kubectl get namespaces -o custom-columns=NAME:.metadata.name,PROJECTID:.metadata.labels."field\.cattle\.io/projectId" --sort-by .metadata.labels."field\.cattle\.io/projectId"

Get all resources connected to certain namespace

kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n nsone

Remove NodeAffinity pods

kubectl get pods -n NameTheSpace -o json | jq '.items[] | select(.status.reason!=null) | select(.status.reason | contains("NodeAffinity")) | "kubectl delete pods \(.metadata.name) -n \(.metadata.namespace)"' | xargs -n 1 bash -c

Get NS descriptions

kubectl get ns -o custom-columns=NAME:.metadata.name,DESC:.metadata.annotations."field\.cattle\.io/description"

Update all clusterrepo's

for i in $(kubectl get clusterrepo -o=jsonpath="{.items[*]['metadata.name']}"); do kubectl patch clusterrepo $i --type='json' -p="[{'op': 'replace', 'path': '/spec/forceUpdate', 'value':'$(date +'%Y-%m-%dT%H:%M:%SZ' -d '5 seconds ago')'}]"; done

Find pod by IP

kubectl get --all-namespaces  --output json  pods | jq '.items[] | select(.status.podIP=="")' | jq .metadata.name

Delete all evicted pods

kubectl get pods -A -o json | jq '.items[] | select(.status.reason!=null) | select(.status.reason | contains("Evicted")) | "kubectl delete pods \(.metadata.name) -n \(.metadata.namespace)"' | xargs -n 1 bash -c

Login to GHCR.io from CLI

gh auth refresh --scopes write:packages
gh auth token | docker login ghcr.io --username fe-ax --password-stdin