題幹與適用場景
叢集使用 Dynamic Resource Allocation(DRA)分配 GPU 或網路設備。容器需要讀取已分配設備的 PCI 位址、介面名稱或驅動屬性,但不應取得 Kubernetes API 權限。請設計從驅動到容器的中繼資料鏈路,並說明版本、隔離、失敗和升級策略。
面試官考察點
- 是否理解 DRA 驅動、ResourceClaim、kubelet 與容器之間的責任邊界。
- 是否能說明中繼資料路徑、生成時機、掛載和清理生命週期。
- 是否處理驅動不可信欄位、跨節點洩漏、版本相容和 Pod 重啟。
- 是否知道該能力的 feature state 與適用版本,不把 alpha 當成穩定契約。
回答前需要釐清的問題
- 中繼資料是設備發現資訊、網路設定,還是包含憑據的敏感資料?
- 應用需要哪些欄位和版本,能容忍欄位缺失或延遲出現嗎?
- 叢集與節點版本是否支援 DRA device metadata,驅動是否使用官方函式庫?
- 設備重新分配、Pod 重啟、驅動升級或節點故障時,檔案如何失效?
30 秒回答框架
我會讓驅動只宣告與目前 ResourceClaim 關聯的非敏感中繼資料,由 kubelet 在設備準備階段生成版本化 JSON,並以唯讀方式掛載到容器約定路徑。應用只讀檔案,不存取 API;檔案建立、更新、卸載與 Pod 生命週期綁定。欄位做 schema 校驗和大小限制,驅動失敗時讓 Pod 進入可觀測的失敗狀態。由於這項能力處於 alpha,必須保留版本探測和降級到環境變數、啟動探針或舊驅動路徑的方案。
分步驟深入解答
1. 定義資料和信任邊界
DRA 負責把設備分配給 ResourceClaim,驅動了解實際設備,應用只需要消費結果。中繼資料應限於設備屬性或網路介面細節,不放私鑰、令牌或可跨租戶識別的資訊。驅動輸入必須綁定 claim、request 和 node,防止把其他設備資訊寫入目前 Pod。
2. 選擇穩定的投遞方式
官方文件描述了容器內的 well-known 路徑,並以 JSON 檔案呈現設備屬性。使用唯讀掛載和確定的目錄層級,應用透過檔案讀取而非 API 查詢。檔案內容應帶 schema 或版本欄位,讓應用拒絕未知版本並提供相容邏輯。
3. 處理生命週期和失敗
設備分配和準備成功後生成檔案;unprepare、Pod 刪除或 claim 釋放時清理。生成失敗、檔案寫入失敗或 JSON 不合法時,不能暴露半成品,應讓 kubelet/驅動報告可觀測錯誤並阻止應用誤用。重啟後重新依目前 claim 狀態生成,不重用舊節點檔案。
4. 規劃升級和觀測
把驅動函式庫、kubelet、節點和應用版本矩陣寫入部署契約。監控檔案生成延遲、失敗率、欄位校驗失敗、驅動版本和 Pod 重啟;日誌記錄 claim、request 和 node 標識,但不記錄敏感中繼資料內容。alpha 能力升級時用相容 schema 和明確 feature gate 驗證。
高品質示範回答
我會把 device metadata 設計成 DRA 分配結果的唯讀投影。驅動只為目前 ResourceClaim 和節點寫入非敏感設備屬性,kubelet 在設備準備完成後將版本化 JSON 透過 well-known 路徑唯讀掛載給容器,應用不需要 Kubernetes API 權限。生成前校驗 claim、request、node 關聯、欄位白名單和大小;生成後做 schema 校驗,失敗則不掛載半成品並報告可觀測錯誤。設備釋放或 Pod 刪除時清理,重啟後按目前 claim 重新生成。由於能力是 alpha,我會做版本探測、feature gate、舊路徑或明確環境變數降級,並監控生成失敗、延遲和驅動版本,避免把實驗性檔案格式寫成跨版本保證。
常見錯誤
- 讓容器讀取 Kubernetes API 或授予過寬的 RBAC。
- 把驅動回傳的所有欄位原樣暴露,包含憑據或其他租戶設備資訊。
- 沒有版本欄位、白名單和 JSON schema 校驗。
- Pod 重啟或 claim 釋放後仍保留舊節點檔案。
- 生成失敗時掛載空檔案,讓應用誤以為設備可用。
- 把 alpha feature 當成所有版本都相容的穩定 API。
追問及應對
為什麼不直接寫環境變數?
環境變數適合少量靜態值,但難表達多個設備、結構化欄位和動態生命週期。唯讀 JSON 檔案更適合結構化中繼資料,同時應提供版本和失敗語義。
如何防止跨租戶資訊洩漏?
以 claim、request 和 node 作為寫入授權邊界,只允許驅動寫入目前分配的設備;欄位白名單過濾敏感屬性,掛載目錄按 Pod 隔離,並以權限和測試驗證不能讀取其他 claim。
alpha 能力如何上線?
先確認叢集版本、feature state、驅動函式庫和 kubelet 相容矩陣;用 feature gate 與小範圍節點池灰度,準備舊驅動或應用降級,並把 schema 變更納入回滾和告警。