Fluent Bit官方Helm Chart启动20个Pod,replicaCount设1如何配置为单实例?
问题根因
Fluent Bit官方Helm Chart默认使用DaemonSet类型的工作负载部署,DaemonSet的运行逻辑是在集群的每个节点上都启动一个Pod,你当前出现的20个Pod,数量正好对应你集群的节点总数。
而你修改的replicaCount参数,仅在切换为Deployment部署模式时才会生效,DaemonSet模式下该参数不生效,所以修改后不会改变Pod数量。
解决方案
根据你的使用场景选择对应配置即可:
场景1:需要单实例全局运行(不需要每个节点采集日志)
直接切换部署类型为Deployment即可,修改你的values.yaml文件,新增/修改以下两个配置项:
# 切换部署类型为Deployment kind: Deployment # 配置单副本 replicaCount: 1
修改完成后重新执行部署命令即可:
helm upgrade -i fluent-bit helm/efk/fluent-bit --namespace some-ns
部署完成后原有DaemonSet会被自动删除,只会保留1个由Deployment管理的Fluent Bit Pod。
场景2:仍然需要使用DaemonSet模式,仅需限定在单个节点运行
可以通过节点选择器限制DaemonSet的调度范围,修改values.yaml的nodeSelector配置:
nodeSelector: # 自定义标签,仅调度到带有该标签的节点 run-fluent-bit: "true"
然后给你需要运行Fluent Bit的节点打对应标签:
kubectl label nodes <你指定的节点名称> run-fluent-bit=true
重新执行helm upgrade命令后,DaemonSet只会在你打了标签的节点上创建Pod,仅打1个节点标签的情况下就只会有1个Pod运行。
验证方法
部署完成后执行以下命令确认结果:
# 确认Pod数量为1 kubectl get pods -n some-ns # 场景1下可以确认原有DaemonSet已被删除 kubectl get daemonset -n some-ns
内容的提问来源于stack exchange,提问作者Simon Liu
相关产品推荐
相关产品推荐

