Kubernetes
rook、ceph 和 RBD 性能不佳
我在 4 個虛擬機上有一個 k8s 集群。師傅1人,工人3人。在每個worker上,我使用rook來部署一個ceph OSD。OSD 使用與 VM 作業系統相同的磁碟。
虛擬機磁碟是遠端的(底層基礎設施又是一個 Ceph 集群)。
這是 VM 磁碟性能(所有 3 個都類似):
$ dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB) copied, 4.82804 s, 222 MB/s
空閒時的延遲(等待)約為 8 毫秒。
如果我在 K8S POD 中掛載 RBD 卷,性能會很差:
$ dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 128.619 s, 8.3 MB/s
在高負載期間(rbd 卷 100% util),RBD 卷的延遲大於 30 秒。
我知道我的設置不是 ceph 推薦的,而且 dd 也不是分析磁碟性能的最佳工具,但是在 VM 磁碟上安裝 ceph 的代價仍然很大。
虛擬機作業系統是
CentOS 7.7.1908. Kernel 3.10.0-1062.12.1.el7.x86_64
工作節點之間的網路頻寬:
[ ID] Interval Transfer Bandwidth [ 5] 0.00-10.00 sec 2.35 GBytes 2.02 Gbits/sec
網路延遲小於 1 毫秒。
我正在尋找一些提示來進一步解決問題並提高性能。
關於您的 CEPH 集群的資訊不足。但是有些東西會提高性能:
- 有必要將日誌放在單獨的 SSD 上(NVMe 更好)。即使你是固態硬碟。
- 使用 10GbE 網路並將集群和外部網路分開。它將改善網路延遲。
- 不要使用 3 份卷。這是一個不錯的功能,但它會使您的集群變慢。
- 預設情況下,擦洗一直有效。有必要改變它。最好在夜間進行擦洗。
- 使用 BlueStore 作為 OSD 的格式。
- 調整伺服器以獲得最佳性能。例如,CPU 調控器應該是性能。