首页 > 解决方案 > Kubernetes 中是否有“全局”部署模式?

问题描述

我习惯使用 Docker swarm,每当我想为每个可用节点部署一个容器副本时,我都会使用“全局”部署模式,如以下 Docker 堆栈 yaml 所示:

  logstash:
    image: myregistry:443/mydomain/logstash
    deploy:
      mode: global
      restart_policy:
        condition: on-failure
    ports:
      - "12201:12201/udp"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      mylan:

这将在每个可用节点中部署一个且仅一个 logstash 副本。我是 Kubernetes 的新手,我试图重现这种行为,是否有等效的模式?如果没有,我的替代方案是什么?

谢谢你。

标签: dockerkubernetes

解决方案


DaemonSet是您想要的控制器:

DaemonSet 确保所有(或部分)节点运行 Pod 的副本。随着节点被添加到集群中,Pod 也被添加到它们中。当从集群中删除节点时,这些 Pod 会被垃圾回收。删除 DaemonSet 将清理它创建的 Pod。

官方文档甚至提到了您的需求:

DaemonSet 的一些典型用途是:
[...]
- 在每个节点上运行日志收集守护进程,例如 fluentd 或 logstash。


推荐阅读