k8s:DaemonSet 与 StatefulSet 的 使用

DaemonSet 与 StatefulSet 的使用

DaemonSet 的使用
通过该控制器的名称我们可以看出它的用法:Daemon,就是用来部署守护进程的,DaemonSet 用于在每个Kubernetes 节点中将守护进程的副本作为后台进程运行,说白了就是在每个节点部署一个Pod 副本,当节点加入到Kubernetes 集群中,Pod 会被调度到该节点上运行,当节点从集群只能够被移除后,该节点上的这个Pod 也会被移除,当然,如果我们删除DaemonSet ,所有和这个对象相关的Pods都会被删除。

在哪种情况下我们会需要用到这种业务场景呢?其实这种场景还是比较普通的,比如:

  1. 集群存储守护程序,如glusterd、ceph要部署在每个节点上以提供持久性存储;
  2. 节点监视守护进程,如Prometheus 监控集群,可以在每个节点上运行一个node-exporter进程来收集监控节点的信息;
  3. 日志收集守护程序,如fluentd或logstash,在每个节点上运行以收集容器的日志

这里需要特别说明的一个就是关于DaemonSet 运行的Pod 的调度问题,正常情况下,Pod 运行在哪个节点上是由 Kubernetes 的调度器策略来决定的,然而,由 DaemonSet 控制器创建的Pod 实际上提前已经确定了在哪个节点上了(Pod 创建时指定了 .spec.nodeName),所以:

  1. DaemonSet 并不关心一个节点的unshedulable 字段,
  2. DaemonSet 可以创建Pod ,即使调度器还没有启动,这点非常重要。
kind: DaemonSet
apiVersion: apps/v1
metadata:
  name: nginx-ds
  labels:
    k8s-app: nginx
spec:
  selector:
    matchLabels:
      k8s-app: nginx
  template:
    metadata:
      labels:
        k8s-app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        ports:
        - name: http
          containerPort: 80
[root@master ~]# kubectl  get pods -o wide
NAME                                      READY   STATUS      RESTARTS   AGE     IP             NODE    NOMINATED NODE   READINESS GATES
nginx-ds-t6ngt                            1/1     Running     0          108s    10.244.1.47    node1   <none>           <none>
nginx-ds-v8td6     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值