Kubernetes 实战 - 控制器之DaemonSet

本文介绍了如何在Kubernetes中创建、管理以及删除DaemonSet,包括使用YAML配置文件创建Pod副本,自动在集群节点上部署守护进程,并说明了其自动扩展和节点选择策略。
摘要由CSDN通过智能技术生成

在Kubernetes中,DaemonSet控制器是一种确保每个节点(或特定标签的节点)上运行一个副本的Pod控制器。它主要用于部署守护进程类型的服务,这些服务通常需要在集群中的每个节点上都存在一份实例,如日志收集器、监控代理等。

创建DaemonSet

创建一个DaemonSet需要编写YAML配置文件,以下是一个基本示例:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: my-daemonset # DaemonSet资源名称
spec:
  selector:
    matchLabels: # 匹配将由该DaemonSet管理的Pods
      app: my-daemon
  template: # Pod模板
    metadata:
      labels:
        app: my-daemon # 标签需与上面的选择器匹配
    spec:
      containers:
      - name: my-container
        image: nginx:1.24.0 # 使用Nginx镜像作为容器(这里仅做演示,实际应为所需守护进程的镜像)
        ports:
        - containerPort: 80 # 容器暴露的端口
        volumeMounts: # 如果需要挂载宿主机路径或其他存储卷
          - mountPath: /var/log/my-app
            name: logs
      volumes: # 挂载定义
      - name: logs
        hostPath: # 使用hostPath类型的Volume挂载宿主机目录
          path: /var/log/my-app

保存为daemonset.yaml后,通过kubectl创建:

kubectl apply -f daemonset.yaml

管理DaemonSet

  • 更新DaemonSet:更改配置文件中的镜像版本或者其他配置,并重新应用以更新所有节点上的Pod。

  • 查看状态

    kubectl get daemonsets
    kubectl describe daemonset my-daemonset
    
  • 删除DaemonSet

    kubectl delete daemonset my-daemonset
    
  • 注意点

    • DaemonSet会自动管理Pod在每个节点上的创建和删除,当有新节点加入集群时,DaemonSet会立即在新节点上创建相应的Pod。
    • DaemonSet不关心Pod的数量是否等于集群节点数量,而是保证每个符合条件的节点上都有且仅有一个Pod实例。
    • 在一些场景下,可以利用nodeSelector或者tolerations来控制DaemonSet在哪些特定节点上运行Pod。

通过以上操作,您可以实现基于Kubernetes的声明式管理和自动在集群所有节点上部署守护进程。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值