应用场景 日志收集
引出:
正常情况下,每个服务都会进行 各自的日志收集、但是因为他们不在 同一台 Node 上,导致一旦查日志就需要 调动各个 机器进行切换,不方便也不高效
低级做法:
在每个需要收集日志的机器上部署 fiuentd 组件进行 后台收集日志 ,需要手动控制
高级做法:
用 DaemonSet 守护进程进行收集,由 k8s为 匹配到 nodeSelector 自动部署 ,这里是
nodeSelector:
type: microServices
后续如果有新增 节点,只要有 这个 标签,那么k8s 会自动新增 一个 DaemonSet 到该节点
Affinity 亲和力
创建资源
如果不指定 nodeSelector 直接 create -f 创建 ,DeamonSet 会部署到 非 master 的 每一个 node 上
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
spec:
selector:
matchLabels:
id: fluentd
app: logging
template:
metadata:
name: fluentd
labels:
id: fluentd
app: logging
spec:
containers:
- name: fluentd-es
image: fluentd
env:
- name: FLUENTD_ARGS
value: -qq
volumeMounts:
- name: containers
mountPath: /var/lib/docker/containers
- name: varlog
mountPath: /varlog
volumes:
- name: containers
hostPath:
path: /var/lib/docker/containers
- name: varlog
hostPath:
path: /varlog
但是 加上后
删除 重新 创建 ds 查看:
由于 本机节点没有 app=ds 的 label 所以不会在本机创建 ds
但是一旦加上,立刻就创建了
所以只要 节点在 改集群内,只要 在需要的节点加上 nodeSelector 就会在该节点创建 ds
修改 ds 的默认更新策略
默认是滚动更新,结果是,一旦修改 yaml文件 template 里面的 内容,那么所有节点的 ds 都会更新,所以 修改为 OnDelete 模式、当 某一个 节点的 ds需要更新,就删除 改 ds ,会自动按照新的 yaml文件创建一个 ds