由k8s升级慢引起的etcd性能不足的问题排查

一、基本介绍
最近etcd查看出现性能
curl --cacert /path/to/etcdctl-ca.crt --cert /path/to/etcdctl.crt --key /path/to/etcdctl.key https://:2379/metrics | grep etcd_disk_wal_fsync_duration_seconds_bucket
当集群规模突破过大时规模时,曾出现如下性能瓶颈问题:
etcd 出现大量的读写延迟,延迟甚至可达分钟级;
kube-apiserver 查询 pods / nodes / configmap / crd 延时很高,导致 etcd oom;
etcd list-all pods 时长可达 30 分钟以上;
etcd 集群曾因 list-all 压力被打垮;
控制器无法及时感知数据变化,如出现 watch 数据延迟可达 30s 以上。

二、安装测试
FIO是一款开源的 I/O 压力测试工具,主要是用来测试磁盘的IO性能。它可以支持多种不同的I/O引擎。
可安装fio测试
fio 官网地址:http://freshmeat.net/projects/fio/
fio文档:https://fio.readthedocs.io/en/latest/index.html
1-依赖
yum install libaio-devel
yum install fio
fio支持的读写模式包括顺序读,随机读,顺序写,随机写,混合随机读写,混合顺序读写。常用参数包括引擎,队列深度,线程,block,是否裸设备,读写方式,大小/耗时,跳过缓存等。以下是对这些参数的简单介绍:
参数
filename=/dev/sdc 支持文件系统或者裸设备,压测多个磁盘 --filename=/dev/sda:/dev/sdb
direct=1 测试过程绕过机器自带的buffer,使测试结果更真实
rw=randwread 测试随机读的I/O
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机混合写和读的I/O
rw=read 测试顺序读的I/O
rw=write 测试顺序写的I/O
rw=rw 测试顺序混合写和读的I/O
bs=4k 单次io的块文件大小为4k
bsrange=512-2048 同上,指定定数据块的大小范围
size=50g 本次的测试文件大小为50g,以每次4k的io进行测试<

你可能感兴趣的:(kubernetes,etcd,容器)