docker - 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 的新手,我试图重现这种行为,是否有等效的模式?如果没有,我的替代方案是什么?
谢谢你。
解决方案
DaemonSet是您想要的控制器:
DaemonSet 确保所有(或部分)节点运行 Pod 的副本。随着节点被添加到集群中,Pod 也被添加到它们中。当从集群中删除节点时,这些 Pod 会被垃圾回收。删除 DaemonSet 将清理它创建的 Pod。
官方文档甚至提到了您的需求:
DaemonSet 的一些典型用途是:
[...]
- 在每个节点上运行日志收集守护进程,例如 fluentd 或 logstash。
推荐阅读
- python - Django Forms(带有酥脆的表格)-我是否过于复杂了?有没有更简单的方法?
- javascript - 来自后台脚本的 sendResponse 中的数组数据丢失
- r - Knitr/Kable:Html 表格宽度
- javascript - 在输入框而不是 JavaScript 中的 alert() 旁边显示错误
- reactjs - 使用 Next.js useRouter 拉标题道具不起作用
- html - 使用 CSS 更改复选框元素的内容
- python - 多变量列表理解python
- python - 在一张图像上堆叠多个蒙版
- sql - 如何获取 7 天前的日期?
- javascript - 我需要一种方法来使用javascript找出每个div中图像中可用的颜色代码