K8S常用命令记录

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权限的用户来执行这些命令

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值