k8s容器IO使用率排查说明
1.iostat确定使用率高的容器
通过执行命令,找到io使用率高的device
# 在容器执行以下命令,查看io使用率是否高$iostat -x 1# 通过以下内容我们看到dm-39使用率比较高Linux 3.10.0-693.5.2.el7.jd_3313.x86_64 (xxxx-xxxxx-1230843875757658112) 03/25/2020 _x86_64_ (64 CPU)avg-cpu: %user %nice %system %iowait %steal %idle 2.61 0.00 1.07 0.17 0.00 96.16Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00sdb 0.00 4059.00 1033.00 10002.00 32736.00 100704.00 24.18 0.83 0.08 0.44 0.04 0.04 48.90...dm-39 0.00 0.00 1031.00 10882.00 32536.00 53928.00 14.52 0.79 0.07 0.43 0.03 0.04 44.10... |
2. 根据Device查找对应的容器名称
登录容器所在的物理机执行以下命令
# 切换到/dev/mapper目录,该目录防止了Device和容器的Link$ cd /dev/mapper/# 查看Link信息$ ls -alh | grep dm-39# 根据以下返回信息,我们可以定位到dm-39对应的容器名称包含74a316e4_54ac_11ea_836d_246e96abba70# lrwxrwxrwx 1 root root 8 Feb 25 15:58 docker-74a316e4_54ac_11ea_836d_246e96abba70 -> ../dm-39 |
3.根据容器名称查找POD
通过2步已经获取到容器名称74a316e4_54ac_11ea_836d_246e96abba70,我们直接使用容器名称的前缀74a316e4就可以过滤出容器
$ docker ps | grep 74a316e4# 根据返回内容就可以定位到具体的PODed514c9ee577 09986390982a "/usr/sbin/init" k8s_xxxxx_xxxxx-xxxxx-1230843875757658112_xxxxxx_74a316e4-54ac-11ea-836d-246e96abba70_07bab556b2e0b pause "/pause" k8s_POD_xxxxx-xxxxx-1230843875757658112_xxx-xxxxx_74a316e4-54ac-11ea-836d-246e96abba70_0 |
根据以上步骤就可以定位到具体的容器,然后根据容器的监控再分析为什么io会高

浙公网安备 33010602011771号