kubernetes 的 DaemonSet

在部署服务时,有一类服务是需要在每台node上都启动一个的(例如,日志收集,网络存储设置等基础服务,最典型的,搭建k8s集群master节点时,需要创建一个网络管理,例如,flannel,这个应用就是以DaemonSet形式部署的)。如果在master上用部署Deployment的方式也能实现,为了保证能调度到每台node,就需要使用affinity来进行关联,需要使用IN条件来选中多个机器的label。但是k8s提供了更便捷的方式,使用DaemonSet来实现:

以Nginx为例:

apiVersion: apps/v1 
kind: DaemonSet              
metadata:                      
  name: nginx-test             
spec:
  selector:
    matchLabels:
      app: web_server_test                                          
  template:                    
    metadata:                  
      labels:                  
        app: web_server_test        
    spec:
      # nodeSelector:
        # slaveNum: "88"
      # affinity:
        # nodeAffinity:
          # requiredDuringSchedulingIgnoredDuringExecution:
            # nodeSelectorTerms:
            # - matchExpressions:
              # - key: slaveNum
                # operator: In
                # values:
                # - "83"
                # - "88"        
      containers:              
      - name: nginx            
        image: nginx:latest

yaml的声明方式和Deployment基本一致,只是去掉了replicas属性。上述yaml在master节点执行之后,会默认的运行到所有node机器上。

如果想指定一台机器,则打开nodeSelector注释内容即可;如果想指定到一台以上的node,但是并不是所有node,则打开affinity注释内容,修改匹配规则即可。

注:DaemonSet 的 pods 是被 DaemonSet controller 创建和调度管理的,并不依赖master的scheduler,因此它没有pending状态

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值