Kubernetes 筆記 09 DaemonSet 我是一隻看門狗

本文首發於個人公衆號 Linux雲計算網絡(id: cloud_dev),專一於乾貨分享,號內有 10T 書籍和視頻資源,後臺回覆「1024」便可領取,歡迎你們關注,二維碼文末能夠掃。git

Hi,你們好,歡迎你們和我一塊兒學 K8S,這是系列第 9 篇。github

和上文中的 Deployment 同樣,DaemonSet 也是一種副本管理機制,和 Deployment 能夠在每一個 Node 上運行好幾個 Pod 副本不一樣的是,DaemonSet 始終保證每一個 Node 最多隻會運行一個副本,就像它的名稱同樣,做爲一隻看門狗(Daemon)守護在主人家裏。編程

那麼,哪些應用適合用 DaemonSet 的方式來部署呢?後端

主要有如下幾類:網絡

  • 監控類的,好比 Prometheus,collectd,New Relic agent,Ganglia gmond 等。
  • 系統管理類的,好比 kube-proxy, kube-flannel 等。
  • 日誌收集類的,好比 fluentd,logstash 等。
  • 數據存儲類的,好比 glusterd, ceph 等。
  • ......

其中,系統管理類的應用主要是 K8S 自身的一些系統組件,咱們能夠經過 kubectl get daemonset --namespace=kube-system 查看到:負載均衡

DaemonSet kube-proxykube-flannel-ds 有 3 個副本,分別負責在每一個節點上運行 kube-proxy 和 flannel 組件。工具

kube-proxy 前面的文章講過,它有負載均衡的功能,主要將外部對 Service 的訪問導向後端的 Pod 上。顯然,一個 Node 運行一個負載均衡器足矣。雲計算

咱們能夠經過 kubectl edit daemonset kube-proxy --namespace=kube-system 來查看 kube-proxy 的 yaml 配置文件。spa

能夠看到它的 kind 是 DaemonSet。插件

接着再來看 kube-flannel-ds,這是一個網絡插件組件,主要用於構建 K8S 的集羣網絡,這裏你們不懂能夠跳過,不影響本文的理解,後面在講到 K8S 網絡的時候會重點講這個網絡方案。

這裏咱們只須要知道,各個 Pod 間的網絡連通就是 flannel 來實現的。

這是一個第三方的插件,咱們能夠直接下載它的 yaml 文件進行安裝,執行下面的命令:

wget https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml

獲得 kube-flannel.yml 文件:

這裏只列出了一部份內容,kind 類型是 DaemonSet。

其實 DaemonSet 配置文件的語法和結構和 Deployment 幾乎徹底同樣,不一樣就在於將 kind 設爲 DaemonSet。

OK,DaemonSet 的探討就到這裏,下文咱們繼續討論另一種 Controller:Job。


個人公衆號 「Linux雲計算網絡」(id: cloud_dev) ,號內有 10T 書籍和視頻資源,後臺回覆 「1024」 便可領取,分享的內容包括但不限於 Linux、網絡、雲計算虛擬化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++編程技術等內容,歡迎你們關注。

相關文章
相關標籤/搜索