通过pod uid查找pod:
kubectl get pods -A -o custom-columns=PodNamespace:.metadata.namespace,PodName:.metadata.name,PodUID:.metadata.uid | grep ${pod uid}
获取某节点上未启动pod:
kubectl get pod -A --field-selector=spec.nodeName=${nodeName},status.phase!=Running -w
获取最近部署的镜像列表:
#!/bin/bash
# 获取24小时之前的日期
one_day_ago=$(date -d "200 day ago" -u +"%Y-%m-%dT%H:%M:%SZ")
# 获取所有Pods的JSON输出
pods=$(kubectl get pods --all-namespaces --sort-by=.status.startTime -o json)
# 使用jq工具来过滤出24小时内创建的Pods,并提取出它们的镜像名称
images=$(echo "$pods" | jq -r --arg ONE_DAY_AGO "$one_day_ago" '.items[] | select(.status.startTime > $ONE_DAY_AGO) | .spec.containers[].image')
# 使用sort和uniq命令来统计每个镜像的使用次数
echo "$images" | sort | uniq -c
通过pid获取容器信息:
crictl ps -q --no-trunc | xargs crictl inspect | jq -r '.info.pid' | grep 3543773
删除错误启动的pod:
kubectl delete pod -A --field-selector=status.phase==Failed
节点删除未使用镜像:
crictl --timeout 100s rmi --prune # timeout表示超时时间,设置太小镜像太多清理会中断
获取pv名称:
kubectl get pv --no-headers -o custom-columns=":metadata.name" | xargs -I {} -P 200 kubectl get pv {} -o jsonpath='{.spec.claimRef}'
good!