通過容器磁盤讀寫限速,可以幫助用戶為不同應用配置磁盤帶寬與 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 以生效。
測試時建議隔離環境,避免影響其他業務。