在kubernetes中的特定ip节点上调度Filebeat守护进程集



我正试图通过filebeat将kubernetes集群的日志收集到elk集群中。

到目前为止,我的filebeat作为守护进程在所有ec2节点上运行,工作正常,但我想在我选择的节点的ip地址上调度filebeat。

我的kubernetes版本是1.15,helm图表版本是2.17,因此我使用了7.17.3版本的弹性搜索的helm图表。

根据kubernetes的文档,这是可以实现的,我试图在filebeat中使用以下条目修改helm图表,但没有出现任何节点:

daemonset:
# Annotations to apply to the daemonset
annotations: {}
# additionals labels
labels: {}
affinity: 
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchFields:
- key: metadata.name
operator: In
values:
- 10.17.7.7

请帮忙。

请按照上述步骤操作:

  1. 通过运行以下命令获取所有节点的标签:
kubectl get nodes --show-labels
ip-xx-xx-x-xx.xx.compute.internal    Ready    worker                     511d   v1.15.11   KubernetesCluster=XXdev.com,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=m5.xlarge,beta.kubernetes.io/os=linux,cattle.io/creator=norman,failure-domain.beta.kubernetes.io/region=xx,failure-domain.beta.kubernetes.io/zone=xx,kubernetes.io/arch=amd64,kubernetes.io/hostname=XXdev-aworker1,kubernetes.io/os=linux,node-role.kubernetes.io/worker=true
ip-xx-xx-x-xx.xx.compute.internal   Ready    controlplane,etcd,worker   688d   v1.15.11   KubernetesCluster=XXdev.com,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=m5.2xlarge,beta.kubernetes.io/os=linux,cattle.io/creator=norman,failure-domain.beta.kubernetes.io/region=xx,failure-domain.beta.kubernetes.io/zone=xx,kubernetes.io/arch=amd64,kubernetes.io/hostname=XXdev-all3,kubernetes.io/os=linux,node-role.kubernetes.io/controlplane=true,node-role.kubernetes.io/etcd=true,node-role.kubernetes.io/worker=true
  1. 现在在标签列中,请参阅键值对kubernetes.io/etcd=true,并在上面的代码中提及
daemonset:
# Annotations to apply to the daemonset
annotations: {}
# additionals labels
labels: {}
affinity: 
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchFields:
- key: kubernetes.io/etcd
operator: In
values:
- true
  1. nodeSelector实现相同功能的另一种方法如下:
nodeSelector:
kubernetes.io/etcd: true

最新更新