当前位置:首页 > Web开发 > 正文

logstash 运行监控的采集端在每个Node

2024-03-31 Web开发

DaemonSet是在Kubernetes1.2 版本新增的一种资源东西

DaemonSet能够让所有(或者一些特定)的Node节点仅运行一份Pod。当节点插手到kubernetes集群中,Pod会被(DaemonSet)调理到该节点上运行,当节点从kubernetes集群中被移除,被(DaemonSet)调理的Pod会被移除,如果删除DaemonSet,所有跟这个DaemonSet相关的pods城市被删除。

在使用kubernetes来运行应用时,很多时候我们需要在一个区域(zone)或者所有Node上运行同一个守护进程(pod),例如如下场景:

每个Node上运行一个漫衍式存储的守护进程,例如glusterd,ceph

运行日志收罗器在每个Node上,例如fluentd,logstash

运行监控的收罗端在每个Node,例如prometheus node exporter,collectd等

DaemonSet的Pod调理计谋与RC很类似,除了使用系统内置的调理算法在每个Node长进行调理,也可以在Pod界说中使用NodeSelector或NodeAffinity来指定满足条件的Node范畴进行调理

DaemonSet 资源文件格局

apiVersion: extensions/v1beta1 kind: DaemonSet metadata:

1.下面例子界说为在每个Node上都启动一个filebeat容器,,此中挂载了宿主机目录"/var/log/messages"

$ vi k8s-log-filebeat.yaml apiVersion: v1 kind: ConfigMap # 界说一个config文件内容 metadata: name: k8s-logs-filebeat-config namespace: kube-system data: # 填写filebeat读取日志相关信息 filebeat.yml: |- filebeat.prospectors: - type: log paths: - /messages fields: app: k8s type: module fields_under_root: true output.logstash: # specified logstash port (by default 5044) hosts: ['10.0.0.100:5044'] --- apiVersion: apps/v1 kind: DaemonSet # DaemonSet 东西,保证在每个node节点运行一个副本 metadata: name: k8s-logs namespace: kube-system spec: selector: matchLabels: project: k8s app: filebeat template: metadata: labels: project: k8s app: filebeat spec: containers: - name: filebeat image: docker.elastic.co/beats/filebeat:6.8.1 args: [ "-c", "/etc/filebeat.yml", "-e", ] resources: requests: cpu: 100m memory: 100Mi limits: cpu: 500m memory: 500Mi securityContext: runAsUser: 0 # 进行实际挂载操纵 volumeMounts: # 将configmap里的配置挂载到 /etc/filebeat.yml 文件中 - name: filebeat-config mountPath: /etc/filebeat.yml subPath: filebeat.yml # 将宿主机 /var/log/messages 路径挂载到 /messages中 - name: k8s-logs mountPath: /messages # 界说卷 volumes: - name: k8s-logs hostPath: path: /var/log/messages type: File - name: filebeat-config configMap: name: k8s-logs-filebeat-config

2.使用kubectl create 命令创建该DeamonSet

$ kubectl create -f k8s-log-filebeat.yaml configmap/k8s-logs-filebeat-config created daemonset.apps/k8s-logs created

3.检察创建好的DeamonSet和Pod,可以看到在每个Node上都创建了一个Pod

$ kubectl get ds -n kube-system | grep "k8s-logs" NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE k8s-logs 2 2 0 2 0 <none> 2m15s $ kubectl get pods -n kube-system -o wide | grep "k8s-logs" k8s-logs-gw4bs 0/1 Running 0 87s <none> k8s-node01 <none> <none> k8s-logs-p6r6t 0/1 Running 0 87s <none> k8s-node02 <none> <none>

在kubernetes 1.6以后的版本中,DaemonSet也能执行滚动升级了,即在更新一个DaemonSet模板的时候,旧的Pod副本会被自动删除,同时新的Pod副本会被自动创建,此时DaemonSet的更新计谋(updateStrategy)为RollingUpdate,如下:

apiVersion: apps/v1 kind: DaemonSet metadata: name: k8s-logs namespace: kube-system spec: updateStrategy: type: RollingUpdate

updateStrategy 的此外一个值是OnDelete,即只有当手工删除了DaemonSet创建的Pod副本,新的Pod副本才会被创建出来,如果不设置updateStrategy的值,则在kubernetes 1.6之后的版本中会被默认设置为RollingUpdate(滚动升级)。

Kubernetes 资源东西之DaemonSet

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30397.html