iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
Cloud Native

帶著MBP在異世界探險的科技宅系列 第 9

Day 9 網管經驗篇 - 我只是想快速裝一個 Kubernetes 叢集

  • 分享至 

  • xImage
  •  

嗨各位,不知道各位有沒有過被老闆說 你去測看看 XXX 的那個新功能(feature) 呢?
當初我雖然沒被老闆叫去測新功能,但就想裝看看剛出的 Kubernetes 1.28
(我真的只有裝看看而已)
但每次裝個叢集都要噴掉個幾分鐘,於是我就在想 有沒有能讓我裝叢集更快的方式呢?

翻譯蒟蒻: 資源就那些,能不能在不花錢的情況下但安裝時間更少
於是乎,我找到了一些能讓我榨出更多效能的小招

對了,在進入主題前我想先打一下廣告
KAIS 是我最近開源的專案,主要的功能是用來安裝 Kubernetes 叢集
之後預計會更新如自動安裝工具或環境除錯等功能
歡迎各位先進提供意見、一同參與或單純使用也可以

https://ithelp.ithome.com.tw/upload/images/20230909/20115660ycCN1mOEaU.png

好,回到正題
要榨出更多的性能前,我們得先問 瓶頸在哪裡?
以我做實驗的 Server 來說

  1. 硬碟部分使用的是 HDD
  2. 記憶體有 128G
  3. CPU 多工性能不是問題(它是 Server)

所以或許我們能從 I/O 來改善
而 Linux Kernel 中,預設會拿一部份的記憶體來當作硬碟寫入的快取(cache)
也就是說,當硬碟寫入的行為發生時,資料會先被寫入至記憶體,再從記憶體寫入至硬碟
這能在一定程度上緩解硬碟 I/O 的瓶頸,但也有可能造成潛在的資料損失(突然斷電、記憶體錯誤等)

而如果想調整這方面的設定,我們可以修改 /etc/sysctl.conf
這次實驗中,我分別修改了 vm.dirty_background_ratiovm.dirty_ratio

vm.dirty_background_ratio 為 Linux 中用來保存做為快取的百分比(不同發行版可能預設有不同的比例),超過此值時會觸發從記憶體寫入硬碟的動作
vm.dirty_ratio 為限制快取儲存的百分比閥值,當快取超過此值時,系統會阻止(Block)任何寫入行為,直到記憶體中的快取被寫入到硬碟

以我的需求來說,我希望 I/O 越快越好 (はやく!もっとはやく!)
而完全不在意可能會有資料損失的問題(畢竟只是用來快速裝測試環境嘛)
所以我們可以把這兩個值提高,並且把分配給 VM 的 RAM 拉高
如此一來我們只要確保在裝叢集時,寫入到硬碟的資料量不大於 vm.dirty_background_ratio(百分比) * 分配給 VM 的記憶體
我們就能確保所有的資料寫入都會保存在記憶體中,因而獲取更好的 I/O 效能

所以我分配給 VM 20GB 的記憶體
並且將 /etc/sysctl.confvm.dirty_background_ratiovm.dirty_ratio 分別設置為

vm.dirty_background_ratio=60
vm.dirty_ratio=80

然後我們套用更改後的設定

sudo sysctl -p

然後實驗環境的部分,我們使用 KAIS 安裝 1.23.6 版的 Kubernetes

curl https://raw.githubusercontent.com/vincent5753/KAIS/main/legacy/Ubuntu20-K8s_1_23-containerd-flannel.sh | bash

在更改 vm.dirty_background_ratiovm.dirty_ratio
叢集的總安裝時間 (從 下載各種套件 到 節點Ready) 共 03 分 54 秒
而節點從 Not ReadyReady 共花費 60 秒

在更改了 vm.dirty_background_ratiovm.dirty_ratio
叢集的總安裝時間 (從 下載各種套件 到 節點Ready) 共 02 分 34 秒
而節點從 Not ReadyReady 共花費 12 秒

可以看出調整 Linux Kernel 的快取策略可以幫我們省下一點時間
(但還是請根據自己的情境判斷和拿捏風險)

參考文章: 高寫入系統 Linux 效能調教

各位我們明天見


上一篇
Day 8 Proxmox VE 進階應用篇 - I have a GPU Card
下一篇
Day 10 網管經驗篇 - 這樣找問題快多了
系列文
帶著MBP在異世界探險的科技宅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言