K8S学习笔记之控制器Deamonset

关键概念

该控制器会确保每一个节点上部署一个相同的副本,且只部署一个副本。

应用场景

在集群的每个节点上运行存储,比如:glusterd 或 ceph。
在每个节点上运行日志收集组件,比如:flunentd 、 logstash、filebeat 等。
在每个节点上运行监控组件,比如:Prometheus、 Node Exporter 、collectd 等。

了解工作原理:如何管理 Pod

daemonset 的控制器会监听 kuberntes 的 daemonset 对象、pod 对象、node 对象,这些被监听的对象之变动,就会触发 syncLoop 循环让 kubernetes 集群朝着 daemonset 对象描述的状态进行演进。

资源清单解释

# kubectl explain ds.spec
没有replicas字段
minReadySeconds <integer>        #当新的 pod 启动几秒种后,再 kill 掉旧的pod。 
revisionHistoryLimit <integer>   #历史版本 
selector <Object> -required-     #用于匹配 pod 的标签选择器 
template <Object> -required-     #定义 Pod 的模板,基于这个模板定义的所有 pod 是一样的 
updateStrategy <Object>          #daemonset 的升级策略

#  kubectl explain ds.spec.updateStrategy
rollingUpdate        <Object>    # 只支持RollingUpdate
     Rolling update config params. Present only if type = "RollingUpdate".
type <string>
     Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is
     RollingUpdate.
表示rollingUpdate 更新策略只支持 maxUnavailabe,先删除在更新;
因为我们不支持一个节点运行两个pod,因此需要先删除一个,在更新一个。

字段详述

apiVersion: apps/v1
kind: DaemonSet
metadata: 
  name: fluentd-elasticsearch 
  namespace: kube-system 
  labels: 
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      tolerations:                          # 定义容忍度,使其调度到master节点
      - key: node-role.kubernetes.io/master # master节点的污点
        effect: NoSchedule
      containers:
      - name: fluentd-elasticsearch
        image: xianchao/fluentd:v2.5.1
        imagePullPolicy: IfNotPresent
        resources:                          # 定义资源限额
          limits:
            cpu: 500m
            memory: 512Mi
          requests: 
            cpu: 200m 
            memory: 215Mi
        volumeMounts:                       # 将日志文件挂载到宿主机
        - name: varlog 
          mountPath: /var/log 
        - name: varlibdockercontainers 
          mountPath: /var/lib/docker/containers 
          readOnly: true 
      terminationGracePeriodSeconds: 30     # 优雅关闭服务时间
      volumes: 
      - name: varlog 
        hostPath: 
         path: /var/log 
      - name: varlibdockercontainers 
        hostPath: 
         path: /var/lib/docker/containers

测试:部署日志组件

日志收集组件-fluentd

# 上传镜像,一定要在涉及到的所有节点上传镜像(包括master节点)
vim ds-fluentd.yaml
kubectl apply -f ds-fluentd.yaml

# 查看
kubectl get ds -n kube-system
kubectl get pods -n kube-system
apiVersion: apps/v1
kind: DaemonSet
metadata: 
  name: fluentd-elasticsearch 
  namespace: kube-system 
  labels: 
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      tolerations: 
      - key: node-role.kubernetes.io/master 
        effect: NoSchedule
      containers:
      - name: fluentd-elasticsearch
        image: xianchao/fluentd:v2.5.1
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests: 
            cpu: 200m 
            memory: 215Mi
        volumeMounts:
        - name: varlog 
          mountPath: /var/log 
        - name: varlibdockercontainers 
          mountPath: /var/lib/docker/containers 
          readOnly: true 
      terminationGracePeriodSeconds: 30
      volumes: 
      - name: varlog 
        hostPath: 
         path: /var/log 
      - name: varlibdockercontainers 
        hostPath: 
         path: /var/lib/docker/containers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlgebraFly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值