~xdavidwu/cskloudv3-thesis

23db55f5620b0bb6dbed8e80b4629f64e8060177 — Pinghao Wu 2 months ago 43a95e9
Architecture: ResourceQuota: cheap admission control and object limit
1 files changed, 4 insertions(+), 0 deletions(-)

M Sections/4.Architecture.tex
M Sections/4.Architecture.tex => Sections/4.Architecture.tex +4 -0
@@ 131,6 131,10 @@ ResourceQuota 是 Kubernetes 的一個 resource 種類,用來實做資源配

ResourceQuota 所能管控的資源大致有兩種:運算資源以及 resources 的數量。運算資源具有量值,例如部屬容器時設定的 CPU 或者記憶體用量限制,以及 PersistentVolumeClaim (PVC)\footnote{PVC: Resources 種類,表示儲存空間請求,需自動或手動與 PersistentVolume(PV,分配實體)耦合。} 中的儲存用量請求。Resources 的數量則是滿足特定條件的 resources 的個數,例如正在運行的 Pods。

除了使用 ResourceQuota 來限制運算資源用量,我們運用其中部份特定條件來限制 resource 內容,最為代表性的是 Service。Service 作為具備負載均衡的網路存取點,根據其 \verb|spec| 的 \verb|type| 欄位,主要又分為 \verb|ClusterIP|、\verb|NodePort|、\verb|LoadBalancer| 三大類別。\verb|ClusterIP| 為最單純、最常見的叢集內部存取點,\verb|NodePort| 額外在每個節點宿主端的網路環境提供存取點,\verb|LoadBalancer| 則是進一步串接叢集外部的負載均衡器。由於在我們的叢集規劃下,節點架設於內部網路,使用者無法直接存取節點,\verb|NodePort| 對使用者來說並無用途,同時 \verb|NodePort| 使用叢集本身的有限網路資源,不適合對使用者開放。\verb|LoadBalancer| 則是需佔用外部負載均衡器的 IP 位址分配池,其大小非常有限,也不適合開放給使用者。ResourceQuota 正有根據類別分開統計 Service 數量的邏輯,我們利用此特性,設置相關配額為零,防止使用者使用 \verb|NodePort| 與 \verb|LoadBalancer|。

除了運算資源,以及上述針對 resource 內容的管控,我們也對所有使用者能夠創立的 resources 種類進行總量限制,避免濫用。在其限額設計上,我們仍盡量保持讓使用者可以在運算資源限制合理地自由運用。

\section{網頁界面實做}

進一步對網頁界面的需求分析,可以將網頁界面切分為兩大塊:支援 Helm 的通用 Kubernetes 網頁型客戶端,以及 CSKloud 特定的部份,包含權限開通元件的整合以及 CSKloud 平台面向使用者的文件等。其中 Kubernetes 客戶端很容易的就可以利用於其他場景,我們採取 open core 的策略,將其 Kubernetes 客戶端開放原始碼,以 MIT 授權條款\footnote{MIT license: 一個在網頁技術場域廣受歡迎的寬鬆型開放原始碼條款。}釋出,命名為 Sparkles\footnote{Sparkles 釋出於 \url{https://github.com/xdavidwu/sparkles} 。},回饋於社會,使得非平台使用者也能受益,同時可以也利用開放原始碼社群的力量來茁壯平台的發展。