天天看點

DaemonSet 案例分析 - 每天5分鐘玩轉 Docker 容器技術(130)kube-flannel-dskube-proxy

本節詳細分析兩個 k8s 自己的 DaemonSet:<code>kube-flannel-ds</code> 和 <code>kube-proxy</code> 。

下面我們通過分析 <code>kube-flannel-ds</code> 來學習 DaemonSet。

還記得之前是如何部署 flannel 網絡的嗎?我們執行了如下兩個指令:

flannel 的 DaemonSet 就定義在 <code>kube-flannel.yml</code> 中:

DaemonSet 案例分析 - 每天5分鐘玩轉 Docker 容器技術(130)kube-flannel-dskube-proxy

注:配置檔案的完整内容要複雜些,為了更好地學習 DaemonSet,這裡隻保留了最重要的内容。

① DaemonSet 配置檔案的文法和結構與 Deployment 幾乎完全一樣,隻是将 <code>kind</code> 設為 <code>DaemonSet</code>。

② hostNetwork 指定 Pod 直接使用的是 Node 的網絡,相當于 <code>docker run --network=host</code>。考慮到 flannel 需要為叢集提供網絡連接配接,這個要求是合理的。

③ <code>containers</code> 定義了運作 flannel 服務的兩個容器。

我們再來分析另一個 DaemonSet <code>kube-proxy</code>。

由于無法拿到 <code>kube-proxy</code> 的 YAML 檔案,隻能運作如下指令檢視其配置:

DaemonSet 案例分析 - 每天5分鐘玩轉 Docker 容器技術(130)kube-flannel-dskube-proxy

同樣為了便于了解,這裡隻保留了最重要的資訊。

① <code>kind: DaemonSet</code> 指定這是一個 DaemonSet 類型的資源。

② <code>containers</code> 定義了 <code>kube-proxy</code> 的容器。

③ <code>status</code> 是目前 DaemonSet 的運作時狀态,這個部分是 <code>kubectl edit</code>特有的。其實 Kubernetes 叢集中每個目前運作的資源都可以通過 <code>kubectl edit</code> 檢視其配置和運作狀态,比如 <code>kubectl edit deployment nginx-deployment</code>。

下節我們讨論如何運作自己的 DaemonSet。

書籍:

1.《每天5分鐘玩轉Docker容器技術》

<a href="https://item.jd.com/16936307278.html" target="_blank">https://item.jd.com/16936307278.html</a>

2.《每天5分鐘玩轉OpenStack》

<a href="https://item.jd.com/12086376.html" target="_blank">https://item.jd.com/12086376.html</a>