在一個 Kubernetes 叢集中,每個節點(node)都有一個容器執行時(container runtime)來產生在 Pod 中的容器。Kubernetes 支援各種容器執行時,包括:
因此,如果該 Kubernetes 叢集使用 Docker 作為容器執行時,我們可以在節點上安裝 Boatswain 來監控其狀態以及收集容器節點上的日誌。
注意:本文中的示例只用於實驗目的,我們仍然不建議在任何用於 production 環境的 Kubernetes 叢集中使用 Boatswain。
在 Kubernetes 裡的 DaemonSet
在 Kubernetes 中,我們可以將執行 Boatswain 的 pod 部署為 DaemonSet。與可以在不同節點上執行多個 Pod 的 Deployment 不同,DaemonSet 確保每個所選的節點上都執行一個 pod,即使有新的節點加入到叢集裡,只要符合條件,那個新的節點也會部署該 pod。DaemonSet 對於在節點上執行叢集儲存,日誌收集和監控程序特別有用。
以 DaemonSet 方式執行 Boatswain
以下是在 Kubernetes 叢集中設置 Boatswain DaemonSet 的步驟。
- 建立名叫 Boatswain 的命名空間
- 設置一個 Boatswain token 的 secret
- 設置 Boatswain DaemonSet 的配置文件
- 執行 Boatswain DaemonSet
建立名叫 Boatswain 的命名空間
首先創建一個新的命名空間,將 Boatswain 的設置與現有設置分開。
kubectl create namespace boatswain
設置一個 Boatswain token 的 secret
將執行 Boatswain 所的 token 儲為 secret 並稱之稱為 boatwain,以後在 DaemonSet 的配置文件中使用。
kubectl create secret generic boatswain --from-literal=token=<TO_BE_REPLACED> -n boatswain
設置 Boatswain DaemonSet 的配置文件
以下是 DaemonSet 的配置文件。
daemon-set.yaml
|
|
在保存yaml文件之前:
執行 Boatswain DaemonSet
kubectl create -f daemon-set.yaml
檢查 DaemonSet 的狀態。
|
|
現在可以在 Boatswain 上閱讀節點的狀態與日誌。
總結
以上的示例示範了如何安裝 Boatswain 來監控 Kuberenetes 叢集。但目前它可能無法顯示與網絡有關的指標(已在上面的 GKE 群集中確認)。 這可能與叢集的安全設置有關,到目前為止,我們尚未對此問題進行進一步調查。此外,若果在所有節點上運行 Boatswain 可能會令到使用量在幾個小時內便達到 Beta 試用版的2GB數據限制,所以其實作用不大。如果您有任何建議或想法,請告訴我們。😀