DaemonSet
官方介绍:https://kubernetes.io/zh/docs/concepts/workloads/controllers/daemonset/
DaemonSet确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
下面的案例是在每个节点上运行日志收集工具"filebeat"
通过YAML文件创建DaemonSet控制器.
apiVersion: apps/v1 kind: DaemonSet metadata: name: ds-demo namespace: default spec: selector: matchLabels: app: filebeat release: stable template: metadata: labels: app: filebeat release: stable spec: containers: - name: filebeat-container image: ikubernetes/filebeat:5.6.5-alpine imagePullPolicy: IfNotPresent env: - name: REDIS_HOST value: redis.default.svc.cluster.local - name: REDIS_LOG_LEVEL value: info
# 查询Pod会发现有两个,因为我们有两个node,这两个node上分别运行了一个Pod.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-ds-rk6zw 1/1 Running 1 15h
myapp-ds-s5nxl 1/1 Running 1 15h
ds.spec.template.spec.hostNetwork <boolean> # 如果设为True,则会使用宿主机的网络名称空间.
动态升级:
DaemonSet也可以像Deployment一样动态的进行升级,也就是更改image;
$ kubectl set image ds myapp-ds filebeat=ikubernetes/filebeat:5.6.6-alpine