~xdavidwu/cskloudv3-thesis

fbc2ddf0c715cfbed60f54ee539e5df4825fb6b8 — Pinghao Wu 2 months ago 9f856f2
Architecture: provisioner tests
1 files changed, 7 insertions(+), 1 deletions(-)

M Sections/4.Architecture.tex
M Sections/4.Architecture.tex => Sections/4.Architecture.tex +7 -1
@@ 139,7 139,13 @@ ResourceQuota 所能管控的資源大致有兩種:運算資源以及 resource

在有使用 ResourceQuota 限制總運算資源用量的情況,所有的 Pods 必須設定容器的相關資源限制。這點十分容易影響使用者體驗,資源限制在 API 上並非必填,以 Kubernetes 通常經由高層次 resources (如 Deployment)去控管 Pods 的方式,如果在高層次 resources 中的 Pod 模板並未填寫資源限制,創立當下並沒有影響,而是在相關 controller 創立 Pod 時才發生錯誤,對使用者來說較難除錯。另外,部份常用代為呼叫 API 的手段如 \verb|kubectl create deployment| 也沒有途徑可以填寫限制。

對於這個場景,我們可以使用 LimitRange resource 種類。LimitRange 透過 LimitRanger admission controller 限制使用者能夠填寫的資源限制大小範圍,同時也能夠在未填寫的狀況下套用預設值協助補足。LimitRange 如同 ResourceQuota,以單一 Namespace 為作用範圍。我們使用 LimitRange 實做資源限制預設值,以提昇有總量限制下的使用者體驗。
對於這個場景,我們可以使用 LimitRange resource 種類。LimitRange 透過 LimitRanger admission controller 限制使用者能夠填寫的資源限制大小範圍,同時也能夠在未填寫的狀況下套用預設值協助補足。LimitRange 如同 ResourceQuota,以單一 Namespace 為作用範圍。我們使用 LimitRange 實做資源限制預設值,以提昇使用者體驗。

\subsection{測試}

由於權限開通過程較為複雜,並且牽涉多個 admission control 安全性相關設定,因此這方面的測試顯得相當重要。\verb|envtest| 提供的環境涵蓋 kube-apiserver,足以讓我們測試 admission control 的行為,我們用其來實做測試,以整體的行為作為測試目標,例如開通後,使用者應能在其 Namespace 下創立 Pods,但不能帶有關閉隔離措施的設定等。同樣測試流程我們也進一步重複利用,將 \verb|envtest| 抽離,提供可以直接對真實叢集進行的行為測試。

相對於一般用途的 Kubernetes 叢集,CSKloud 也需要額外進行如啟用特定 admission controller 等設定,對此我們也撰寫叢集設定驗證測試,確保相關功能有被啟用,且其設定有經過儲存,以避免安裝上的人為疏失。

\section{網頁界面實做}