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.16
 
Device:         rrqm /s    wrqm /s      r /s      w /s     rkB /s     wkB /s  avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               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.00
sdb               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
# 根据返回内容就可以定位到具体的POD
ed514c9ee577        09986390982a         "/usr/sbin/init"                        k8s_xxxxx_xxxxx-xxxxx- 1230843875757658112_xxxxxx_74a316e4-54ac-11ea-836d-246e96abba70_0
7bab556b2e0b        pause                "/pause"                                k8s_POD_xxxxx-xxxxx-1230843875757658112_xxx-xxxxx_74a316e4-54ac-11ea-836d-246e96abba70_0

 

根据以上步骤就可以定位到具体的容器,然后根据容器的监控再分析为什么io会高

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM