本篇文章已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
聚焦 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 關注 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 顯示,結果我們顯著提高了速度。
在 6 月,我們舉辦了首次錯誤清除活動,以處理針對 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 中,這可能意味著自願幫助修復您個人受到影響的錯誤,或幫助按優先順序分流您關心的錯誤。
為了快速掌握任何開放原始碼程式碼庫,您可以採取兩種策略:首先深入探索特定問題,然後根據需要擴展您的知識邊界,或者盡可能簡要地查看盡可能多的問題和變更請求,以更全面地了解元件的運作方式。最終,如果您想成為節點審閱者或核准者,您需要同時做到這兩者。
Davanum Srinivas 和我各自舉辦了一組團體指導,以幫助教導新的貢獻者成為節點審閱者的技能,如果有人感興趣,我們可以努力尋找一位導師來舉辦另一個會議。我也鼓勵新的貢獻者參加我們的節點 CI 子專案會議:它是一個規模較小的會議,而且我們不錄製分流會議,因此這可能是一種較不令人卻步的 SIG 入門方式。
您是否想招募任何特定技能的人才?SIG Usability 的貢獻者可能會學到哪些技能?
SK:SIG Node 在許多非常不同領域的工作流程中工作。所有這些領域都處於系統層級。對於典型的程式碼貢獻,您需要對建構和使用低階 API 以及編寫高效能且可靠的元件充滿熱情。作為貢獻者,您將學習如何偵錯和疑難排解、分析和監控這些元件,以及由這些元件執行的使用者工作負載。通常,在幾乎無法存取節點的情況下,因為它們正在執行生產工作負載。
另一種貢獻方式是協助記錄 SIG 節點功能。這種類型的貢獻需要深入了解功能,並能夠用簡單的術語解釋它們。
最後,我們一直在尋找關於如何以最佳方式執行您的工作負載的回饋。請來解釋它的具體細節,以及 SIG Node 元件中的哪些功能可能幫助更好地執行它。
您們收到了哪些正面回饋,SIG Node 接下來有什麼計畫?
EH:在過去一年中,SIG Node 採用了一些新流程來幫助管理我們的功能開發和 Kubernetes 增強提案,其他 SIG 也從我們這裡尋求靈感,以管理大型工作負載。我希望這是我們可以繼續提供領導作用並進一步迭代的領域。
我們目前在進行中的新功能和棄用之間取得了很好的平衡。棄用未使用或難以維護的功能有助於我們控制技術債務和維護負載,範例包括 dockershim 和 DynamicKubeletConfiguration 棄用。新功能將在最終使用者的叢集中解鎖額外功能,包括令人興奮的功能,例如支援 cgroups v2、交換記憶體、優雅節點關機和裝置管理策略。
您有任何結語/資源想分享嗎?
SK/EH:加入任何開放原始碼社群都需要時間和精力。SIG Node 最初可能會讓您感到不知所措,因為參與者眾多、工作量大且專案範圍廣泛。但這絕對值得。加入我們熱情的社群!SIG Node GitHub Repo 包含許多有用的資源,包括 Slack、郵寄清單和其他聯絡資訊。
總結
SIG Node 主辦了一場 KubeCon + CloudNativeCon Europe 2021 演講,簡要介紹並深入探討了他們出色的 SIG。加入 SIG 的會議,以了解最新的研究成果、來年的計畫,以及如何以貢獻者身分參與上游節點團隊!