DaemonSet 案例分析 — Kubernetes(17)

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@cloudman6·
0.000 HBD
DaemonSet 案例分析 — Kubernetes(17)
本节详细分析两个 k8s 自己的 DaemonSet:`kube-flannel-ds` 和 `kube-proxy` 。

# kube-flannel-ds

下面我们通过分析 `kube-flannel-ds` 来学习 DaemonSet。

还记得之前是如何部署 flannel 网络的吗?我们执行了如下两个命令:

```
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
```

flannel 的 DaemonSet 就定义在 `kube-flannel.yml` 中:

![637.png](https://steemitimages.com/DQmQPQYDoHXpsBXGdQt4WZNLt7y3xKEAn1v5v7EgaGdvQZb/637.png)

注:配置文件的完整内容要复杂些,为了更好地学习 DaemonSet,这里只保留了最重要的内容。

① DaemonSet 配置文件的语法和结构与 Deployment 几乎完全一样,只是将 `kind` 设为 `DaemonSet`。

② hostNetwork 指定 Pod 直接使用的是 Node 的网络,相当于 `docker run --network=host`。考虑到 flannel 需要为集群提供网络连接,这个要求是合理的。

③ `containers` 定义了运行 flannel 服务的两个容器。

我们再来分析另一个 DaemonSet `kube-proxy`。

# kube-proxy

由于无法拿到 `kube-proxy` 的 YAML 文件,只能运行如下命令查看其配置:

```
kubectl edit daemonset kube-proxy --namespace=kube-system
```

![638.png](https://steemitimages.com/DQmQ22cSLReyEQdq81eomW6W5Mp3Y6xnqHPAUnXQc3H4a55/638.png)

同样为了便于理解,这里只保留了最重要的信息。

① `kind: DaemonSet` 指定这是一个 DaemonSet 类型的资源。

② `containers` 定义了 `kube-proxy` 的容器。

③ `status` 是当前 DaemonSet 的运行时状态,这个部分是 `kubectl edit` 特有的。其实 Kubernetes 集群中每个当前运行的资源都可以通过 `kubectl edit` 查看其配置和运行状态,比如 `kubectl edit deployment nginx-deployment`。

下节我们讨论如何运行自己的 DaemonSet。
👍 , , , , , , , , , , , , , ,