Kubernetes ---- Pod控制器之DaemonSet

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

 

posted @ 2020-06-12 09:25  k-free  阅读(258)  评论(0编辑  收藏  举报