Kubernetes

rook、ceph 和 RBD 性能不佳

  • February 29, 2020

我在 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 調控器應該是性能。

引用自:https://serverfault.com/questions/1005023