容器以host模式运行时通过进程ID查找对应的容器名称
场景:
应用服务通过docker-compose部署的,部分服务的以host网络模式运行,通过从top命令中获取的PID无法直接获取到对应的容器名称,经分析测试后可通过父进程查找
非host网络模式可直接通过以下命令查找容器名称
docker inspect -f "{{.Id}} {{.State.Pid}} {{.Name}} " $(docker ps -q) | grep <PID>
host网络模式可直接通过以下命令查找容器名称
- 通过top命令获取进程PID
- 获取对应进程PID的父进程
ps -ef | grep -v grep | grep <PID> | awk '{print $3}'
- 通过上一步的父进程获取容器名称
docker inspect -f "{{.Id}} {{.State.Pid}} {{.Name}} " $(docker ps -q) | grep <PID>
通过进程ID查找k8s pod名称
docker inspect -f "{{.Id}} {{.State.Pid}} {{.Config.Hostname}}" $(docker ps -q) | grep <PID>
通过服务端口查找容器名称
docker inspect -f "{{.Id}} {{.State.Pid}} {{.Name}} {{.Config.ExposedPorts}}" $(docker ps -q) | grep <PORT>
pod按内存排序
docker stats --no-stream --format "table {{.Name}}\t{{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" | sort -k 4 -h
pod按CPU排序
docker stats --no-stream --format "table {{.Name}}\t{{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" | sort -rk 3 -h
查看节点污点
for i in $(kubectl get nodes --kubeconfig kube.conf | grep -v "NAME" | awk '{print $1}'); do kubectl describe node/$i --kubeconfig kube.conf| egrep -A 2 '(Taints|projectcalico.org/IPv4Address)'; printf %b "--------------------\n";done

浙公网安备 33010602011771号