Kubernetes Secret 是一種將配置設置與應用分離的抽象,解決服務間配置的冗余與維護問題。主要可以用來保存敏感訊息,將這些 data 放在 Secret 中,比放在 Pod 的定義中或者 Docker Image中,來說更加安全和靈活。
ConfigMap 是一種資源配置管理的抽象,可讓不同的微服務間共享配置,提供了一種將配置設置與應用分離的方法,讓我們可以只更新 Config 設定檔 ,而無需修改應用的 Code 或其 Image ,解決服務間配置的冗余與維護問題。基礎的 ConfigMap 用法,通常用於存儲鍵值對,來作爲容器化應用中的環境變量。
Reservoir sampling 是一個隨機演算法,其目的是在只遍歷一遍的情況下,從大數據 N 的資料流中,隨機選取出 k 個元素,且每筆資料選中的機率都要一樣。這個場景強調了幾件事:
- 集合 N 很大且不可知,所以不能一次存入記憶體
- 時間複雜度為
O(N)
- 隨機選取 k 個數,每個數被選中的機率為
k/N
本來面對這種問題,比較直接的想法是利用隨機數演算法,求 random(N) 得到隨機數,但是因資料流極大,無法一次都讀到記憶體內,這就表示不能像數組一樣根據 index 獲取元素;而且題目強調只能遍歷一遍
O(N)
,代表也不能再採用分塊方式儲存資料,之後再隨機遍歷。為了解決這個問題,可以使用 Reservoir sampling ,非常的巧妙。
是經典的 78. Subsets 的進階版,現在數字會有重複(duplicate)。這邊使用 Backtrack 模板來求解。這個題目還有要注意的地方,就是 array 不一定是順序的,例如 test case:
[4,4,4,1,4]
,這範例在我們去除重複答案的時候,若沒注意到有亂序的可能性,高機率會出錯。
很經典的問題 : 冪集 the power set ,在數學上還蠻常見到的,理論上求得解答方式也很簡單,選或者不選排列組合,就可以得出答案。但在程式上要實現卻有一點點難度,故會被歸類到 Medium 等級。這邊使用 Backtrack 模板來解題。
Kubernetes 若要把應用暴露於 Cluster 外部 ,已知可以使用 NodePort 和 LoadBlancer 類型的 Service,但當每暴露一個 Service 給外部時,就會需要暴露一個對應的 Port ,隨著 Service 越來越多之後,我們就需要管理更多的 Port Number,也會使得維運上更加複雜。這時就可以考慮使用 Kubernetes Ingress ,它可用來代理不同 Kubernetes Service,能對外開放統一的 Port ,並將外部的請求轉發到 Cluster 內不同的 Service 上,來實現負載均衡。 Ingress 專注於 Cluster 對外的暴露、負載均衡、L7轉發、 Virtual Hosting 等功能。