本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

聚焦 SIG Node

引言

在 Kubernetes 中,節點代表叢集中的一臺機器。SIG Node 負責這個非常重要的節點元件,並支援各種子專案,如 Kubelet、容器執行時介面 (CRI) 等,以支援 Pod 和主機資源之間的互動。在這篇部落格中,我們總結了與 Elana Hashman (EH)Sergey Kanzhelev (SK) 的對話,他們將帶領我們瞭解 SIG 的各個方面,並分享一些關於其他人如何參與的見解。

對話摘要

您能簡單介紹一下 SIG Node 的職責嗎?

SK:SIG Node 是一個垂直 SIG,負責支援 Pod 和主機資源之間受控互動的元件。我們管理排程到節點的 Pod 的生命週期。該 SIG 的重點是啟用各種型別的工作負載,包括對硬體有特定要求或對效能敏感的工作負載。同時,我們還要在節點上的 Pod 之間以及 Pod 與主機之間保持隔離邊界。該 SIG 維護了相當多的元件,並且有許多外部依賴(如容器執行時或作業系統功能),這使得我們處理的複雜性非常大。我們馴服了這種複雜性,旨在持續提高節點的可靠性。

“SIG Node 是一個垂直 SIG”,您能再解釋一下嗎?

EH:SIG 分為兩種:水平 SIG 和垂直 SIG。水平 SIG 關注 Kubernetes 中每個元件的特定功能:例如,SIG Security 考慮 Kubernetes 中每個元件的安全方面,或者 SIG Instrumentation 關注 Kubernetes 中每個元件的日誌、指標、跟蹤和事件。這類 SIG 通常不擁有很多程式碼。

另一方面,垂直 SIG 擁有單個元件,並負責批准和合並該程式碼庫的補丁。SIG Node 擁有“節點”垂直方向,涉及 kubelet 及其生命週期。這包括 kubelet 本身的程式碼,以及節點控制器、容器執行時介面和相關子專案,如節點問題檢測器。

CI 子專案是如何開始的?它是否專屬於 SIG Node,以及它如何幫助 SIG?

SK:這個子專案是在一個版本被眾多關鍵測試失敗阻塞之後作為後續工作開始的。這些測試並非一下子全部失敗,而是持續缺乏關注導致測試質量緩慢下降。SIG Node 始終將質量和可靠性放在首位,而成立這個子專案就是為了突出這一優先順序。

作為在問題和 PR 數量方面排名第三的 SIG,您的 SIG 如何處理如此多的工作?

EH:有條理地工作很有幫助。當我在 2021 年 1 月增加對 SIG 的貢獻時,我發現自己被大量的拉取請求和問題所淹沒,不確定從何開始。我們已經在 CI 子專案面板上跟蹤與測試相關的問題和拉取請求,但這遺漏了我們很多錯誤修復和功能開發工作。因此,我開始為我們其餘的拉取請求建立一個分類面板,這讓我能夠按狀態和要採取的操作對每個拉取請求進行排序,併為其他貢獻者記錄其使用方法。在過去的兩個版本中,我們透過兩個面板關閉或合併了 500 多個問題和拉取請求。Kubernetes devstats 顯示,我們因此顯著提高了我們的工作速度。

六月,我們舉辦了第一次錯誤清理活動,以處理積壓的針對 SIG Node 的問題,確保它們得到正確分類。在這個 48 小時的全球活動中,我們關閉了 130 多個問題,但截至撰寫本文時,我們仍有 333 個未解決的問題。

為什麼新老貢獻者應該考慮加入 SIG Node?

SK:成為 SIG Node 貢獻者會為您帶來有益且有用的技能和認可。瞭解 kubelet 的內部機制有助於構建更好的應用程式,調整和最佳化這些應用程式,並在問題排查中佔據優勢。如果您是新貢獻者,SIG Node 將為您提供理解其他 Kubernetes 元件設計方式的關鍵基礎知識。現有貢獻者可能會受益,因為許多功能遲早需要 SIG Node 的更改。因此,成為 SIG Node 貢獻者有助於更快地構建其他 SIG 中的功能。

SIG Node 維護著眾多元件,其中許多元件都依賴於外部專案或作業系統功能。這使得入門過程相當漫長且要求很高。但如果您願意接受挑戰,總有適合您的位置,並且有一群人會提供支援。

您如何幫助新貢獻者入門?

EH:在 SIG Node 中入門可能會令人望而生畏,因為有很多工作要做,我們的 SIG 會議規模很大,而且很難找到一個切入點。

我總是鼓勵新貢獻者從事他們已經有所投入的事情。在 SIG Node 中,這可能意味著自願幫助修復您個人受影響的錯誤,或者幫助按優先順序分類您關心的錯誤。

要快速掌握任何開原始碼庫,您可以採取兩種策略:首先深入研究一個特定問題,並根據需要擴充套件您的知識範圍,或者儘可能多地簡要審查問題和更改請求,以獲得元件工作方式的更高級別圖景。最終,如果您想成為 Node 評審員或批准者,您需要同時進行這兩種操作。

Davanum Srinivas 和我各自舉辦了一期小組指導,幫助新貢獻者學習成為 Node 評審員的技能,如果大家有興趣,我們可以努力尋找導師再舉辦一期。我還鼓勵新貢獻者參加我們的 Node CI 子專案會議:聽眾較少,我們不錄製分類會議,因此這可能是一種不那麼令人生畏的 SIG 入門方式。

你們希望招募哪些特定技能的人才?SIG 可用性的貢獻者可能會學到哪些技能?

SK:SIG Node 在許多非常不同的領域開展工作。所有這些領域都處於系統層面。對於典型的程式碼貢獻,您需要對構建和利用低階 API 以及編寫高效能和可靠的元件充滿熱情。作為貢獻者,您將學習如何除錯、排查、分析和監控這些元件,以及這些元件執行的使用者工作負載。通常,在有限或沒有訪問節點許可權的情況下,因為它們正在執行生產工作負載。

另一種貢獻方式是幫助記錄 SIG Node 功能。這類貢獻需要對功能有深入的理解,並能夠用簡單的語言解釋它們。

最後,我們一直在尋求關於如何最好地執行您的工作負載的反饋。歡迎前來解釋其具體細節,以及 SIG Node 元件中的哪些功能可以幫助更好地執行它。

您收到哪些積極反饋?SIG Node 接下來的計劃是什麼?

EH:在過去的一年裡,SIG Node 採納了一些新的流程來幫助管理我們的功能開發和 Kubernetes 增強提案,其他 SIG 也向我們尋求管理大型工作負載的靈感。我希望我們能繼續在這個領域發揮領導作用並進一步迭代。

我們目前在途中有很好的新功能和廢棄功能的平衡。廢棄未使用的或難以維護的功能有助於我們控制技術債務和維護負擔,例如 dockershim 和 DynamicKubeletConfiguration 的廢棄。新功能將為終端使用者叢集解鎖額外的功能,包括支援 cgroups v2、交換記憶體、優雅節點關機和裝置管理策略等令人興奮的功能。

您還有什麼要分享的結束語/資源嗎?

SK/EH:加入任何開源社群都需要時間和精力。SIG Node 最初可能會因為參與者眾多、工作量大和專案範圍廣而讓您不知所措。但這絕對值得。加入我們熱情的社群吧!SIG Node GitHub 倉庫包含許多有用的資源,包括 Slack、郵件列表和其他聯絡資訊。

總結

SIG Node 在 KubeCon + CloudNativeCon Europe 2021 演講中介紹了他們出色的 SIG,並進行了深入探討。加入 SIG 的會議,瞭解最新的研究成果、未來一年的計劃以及如何作為貢獻者參與上游 Node 團隊!