K8S常用命令记录
1、获取集群内所有业务镜像地址
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' | sort |uniq -u
2、获取集群内所有ingress域名
kubectl get ingress --all-namespaces -o=jsonpath='{range .items[*]}{range .spec.rules[*]}{.host}{"\n"}{end}'|grep -v '*' |sort -u
3、根据pid如何判断进程是在哪个容器中运行的?
大概率可以判断这个进程不是在宿主机上的,可以通过如下这个命令判断命令是否是在容器中执行的:
ps -e -o pid,cmd,comm,cgroup
[root@VM-3-9-centos ~]# ps -e -o pid,cmd,comm,cgroup |grep 22805
2440 grep --color=auto 22805 grep 8:devices:/system.slice/tat_agent.service,7:blkio:/system.slice/tat_agent.service,6:memory:/system.slice/tat_agent.service,3:cpuacct,cpu:/system.slice/tat_agent.service,2:pids:/system.slice/tat_agent.service,1:name=systemd:/system.slice/tat_agent.service
22805 python3 mai_taskmgr.py python3 11:cpuset:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,10:hugetlb:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,9:freezer:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,8:devices:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,7:blkio:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,6:memory:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,5:net_prio,net_cls:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,4:perf_event:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,3:cpuacct,cpu:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,2:pids:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839,1:name=systemd:/kubepods/besteffort/podf988cf4a-aec5-11ee-8b9a-5254007e95d6/67a960a52515f478d46370737b98c56bcd20ee0e6615e92719ccb9669b6a3839
[root@VM-3-9-centos ~]# docker ps -a |grep 67a960a52
67a960a52515 d885639780f0 "/opt/nvidia/nvidia_…" 2 months ago Up 2 months k8s_multifeature_multifeature-6c8c4868c4-7gwv4_ai_f988cf4a-aec5-11ee-8b9a-5254007e95d6_0
4、批量删除处于异常状态的容器
4.1、每一个名称空间单独操作
kubectl -n namespace get pods | grep Evicted |awk '{print$1}'|xargs kubectl -n namespace delete pods
4.2、脚本自动执行
#!/bin/bash
for ns in `kubectl get ns | awk 'NR>1{print $1}'`
do
kubectl get pods -n ${ns} | grep Evicted | awk '{print $1}' | xargs kubectl delete pod -n ${ns}
done
5、根据docker数据目录查询是哪个容器
docker数据存储目录:/var/lib/docker/overlay2目录。这个目录包含了所有容器的文件系统层,
在Overlay2目录下,你可以使用du命令来查看各个目录占用的磁盘空间大小,并找出占用空间最大的目录。例如
du -s ./* | sort -rn | more
这个命令会显示每个目录的大小,并按照从大到小的顺序排序
当你找到了占用空间较大的目录后,可以使用docker ps -q | xargs docker inspect命令来查找对应的容器。你需要将上一步中找到的目录名作为参数传递给grep命令,以过滤出与该目录相关的容器信息。例如,如果你的目录名是bff25099a59b0fc8addd06f9223872f2904256f0432b3c3c47b58faef167115f,那么你可以执行以下命令
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "bff25099a59b0fc8addd06f9223872f2904256f0432b3c3c47b58faef167115f"
这个命令会显示与该目录相关的容器的进程ID、容器ID、容器名称和存储工作路径
通过以上步骤,你应该能够找到在Overlay2目录下某个目录对应的容器信息。请注意,这些步骤需要具有足够的权限才能执行,通常需要使用root用户或者具有sudo权限的用户来执行这些命令
7141

被折叠的 条评论
为什么被折叠?



