我曾经使用过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的新手,我正尝试重现此行为,是否有等效的模式?如果没有,我有什么选择?
谢谢。
答案 0 :(得分:6)
DaemonSet是您想要的控制器:
DaemonSet确保所有(或某些)节点都运行Pod的副本。如 将节点添加到集群,将Pod添加到它们。由于节点是 从集群中删除这些Pod会被垃圾收集。删除一个 DaemonSet将清除其创建的Pod。
官方文档甚至提到您的需求:
DaemonSet的一些典型用法是:
[...]
-在每个节点(例如fluentd或logstash)上运行日志收集守护程序。