以 DaemonSet 方式執行 Boatswain 來監控您的 Kubernetes
![](https://assets.matters.news/embed/8050b96e-89b7-466c-abe8-29c0243f66f0.png)
在一個 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
apiVersion: apps/v1 kind: DaemonSet metadata: name: boatswain namespace: boatswain spec: selector: matchLabels: name: boatswain template: metadata: labels: name: boatswain spec: containers: - name: boatswain image: boatswainio/boatswain:<latest or tag> env: - name: BOATSWAIN_TOKEN valueFrom: secretKeyRef: name: boatswain key: token - name: BOATSWAIN_PERIOD value: "default" securityContext: capabilities: add: ["NET_ADMIN"] volumeMounts: - name: dockersock mountPath: "/var/run/docker.sock" volumes: - name: dockersock hostPath: path: /var/run/docker.sock hostNetwork: true hostPID: true restartPolicy: Always nodeSelector: kubernetes.io/hostname: <hostname of the selected node>
在保存yaml文件之前:
執行 Boatswain DaemonSet
kubectl create -f daemon-set.yaml
檢查 DaemonSet 的狀態。
[ykyuen@camus ~]$ kubectl get ds -n boatswain NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE boatswain 1 1 1 1 1 kubernetes.io/hostname=gke-boatswain-default-pool-v2-1234abcd-5678 52s
現在可以在 Boatswain 上閱讀節點的狀態與日誌。
![](https://assets.matters.news/embed/75cfe03e-68ed-4241-be52-8d76ceaac6ca.png)
總結
以上的示例示範了如何安裝 Boatswain 來監控 Kuberenetes 叢集。但目前它可能無法顯示與網絡有關的指標(已在上面的 GKE 群集中確認)。 這可能與叢集的安全設置有關,到目前為止,我們尚未對此問題進行進一步調查。此外,若果在所有節點上運行 Boatswain 可能會令到使用量在幾個小時內便達到 Beta 試用版的2GB數據限制,所以其實作用不大。如果您有任何建議或想法,請告訴我們。😀