通过容器磁盘读写限速,可以帮助用户为不同应用配置磁盘带宽与 IOPS 限制,实现资源隔离与性能保障。
适用场景
需要防止单一容器占用过多磁盘带宽或 IOPS,影响其他业务。
希望为关键业务或普通业务设置不同的磁盘性能等级。
功能说明
支持通过 Pod 注解,分别限制容器的磁盘读写带宽与 IOPS:
注解 | 含义 |
---|---|
koordinator.sh/blkioQOS | Pod 磁盘限速 JSON 注解 |
注意
通过 koordinator.sh/blkioQOS
注解,以 JSON 格式配置具体设备的读写带宽/IOPS,单位为字节/秒。需根据实际设备名和需求填写。
配置方法
在 Pod/Deployment YAML 的 metadata.annotations
字段中添加 koordinator.sh/blkioQOS
注解。例如:
apiVersion: apps/v1kind: Deploymentmetadata:
name: fio-test
namespace: demospec:
replicas: 1
template:
metadata:
labels:
app: fio-test
annotations:
koordinator.sh/blkioQOS: |
{
"blocks": [
{
"name": "/dev/vda",
"type": "device",
"ioCfg": {
"readBPS": 10485760,
"writeBPS": 10485760
}
}
]
} spec:
containers:
- name: fio
image: fio:latest
command: ["sleep", "9999999"] volumeMounts:
- name: test-volume
mountPath: /test
volumes:
- name: test-volume
hostPath:
path: /var/lib/fio-test
type: DirectoryOrCreate
操作步骤
按需编辑应用 YAML,添加读写带宽或 IOPS 限制注解。
应用 YAML 到集群:
kubectl apply -f <your-deployment>.yaml
部署后,Pod 启动时自动生效,无需额外操作。
若需调整限速参数,修改注解后重新部署/滚动升级 Pod。
测试与验证流程
部署带磁盘限速注解的测试 Pod(如上 YAML 示例)。
进入 Pod 内部,运行 fio 工具进行磁盘性能测试:
kubectl exec -it <fio-pod> -n demo -- sh fio --name=fio-test --ioengine=libaio --direct=1 --filename=/test/fio-test --bs=4k --rw=randrw --rwmixread=50 --size=1G --time_based --runtime=60 --iodepth=8 --numjobs=1 --group_reporting
观察 fio 输出,确认读写带宽与 IOPS 已被限制在注解设定范围内。
可对比未限速和限速下的 fio 测试结果,验证限速效果。
常见问题与说明
注解配置无效?
请确认集群和节点已启用磁盘限速能力,且注解拼写正确。
查存储卷类型,部分类型(如 hostPath)受限速支持影响。
限速效果与预期不符?
实际带宽/IOPS 受节点硬件、存储类型等多因素影响,建议多次测试取均值。
Pod 启动报错或无效?
检查注解单位和格式,确保符合规范。
注意
建议仅对有实际需求的业务配置磁盘限速,避免资源浪费。
修改限速参数需滚动升级或重建 Pod 以生效。
测试时建议隔离环境,避免影响其他业务。