K8S中Pod控制器之DaemonSet(DS)控制器

DaemonSet(DS)控制器

  • DaemonSet类型的控制器可以保证在集群中的每一台(或指定)节点上都运行一个副本。一般适用于日志收集、节点监控等场景。也就是说,如果一个Pod提供的功能是节点级别的(每个节点都需要且只需要一个),那么这类Pod就适合使用DaemonSet类型的控制器创建。

DaemonSet 控制器的主要特点包括:

  • 自动部署:在集群的所有节点上自动部署 Pod 的副本。

  • 动态适应:当向集群添加新节点时,DaemonSet 会自动在新节点上创建 Pod 的副本。

  • 自动清理:当节点从集群中移除时,其上的 Pod 也会被自动回收。

  • 节点选择性:允许通过标签选择器指定 Pod 应该运行在哪些节点上。

  • 更新管理:支持对所有 Pod 进行统一更新,并能在必要时回滚到之前的版本。

  • 容忍污点:可以配置 Pod 以容忍节点上的污点,从而在即将被标记为不可调度的节点上运行。

  • 服务发现:DaemonSet 管理的 Pod 可以通过 Kubernetes 服务发现机制被其他组件发现。

bash 复制代码
[root@k8s-master ~]# vim pc-daemonset.yaml
[root@k8s-master ~]# kubectl apply -f pc-daemonset.yaml 
Error from server (NotFound): error when creating "pc-daemonset.yaml": namespaces "test" not found
[root@k8s-master ~]# kubectl create ns test 
namespace/test created
[root@k8s-master ~]# kubectl apply -f pc-daemonset.yaml 
daemonset.apps/pc-daemonset created
[root@k8s-master ~]# kubectl get ds -n test -o wide
NAME           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS   IMAGES         SELECTOR
pc-daemonset   2         2         0       2            0           <none>          12s   nginx        nginx:1.17.1   app=nginx-pod
[root@k8s-master ~]# kubectl get pod -n test -o wide
NAME                 READY   STATUS              RESTARTS   AGE   IP       NODE        NOMINATED NODE   READINESS GATES
pc-daemonset-9vwvd   0/1     ContainerCreating   0          23s   <none>   k8s-node2   <none>           <none>
pc-daemonset-drdt5   0/1     ContainerCreating   0          23s   <none>   k8s-node1   <none>           <none>

#一个node节点分配一个pod
[root@k8s-master ~]# kubectl get pod -n test -o wide -w 
NAME                 READY   STATUS              RESTARTS   AGE   IP       NODE        NOMINATED NODE   READINESS GATES
pc-daemonset-9vwvd   0/1     ContainerCreating   0          26s   <none>   k8s-node2   <none>           <none>
pc-daemonset-drdt5   0/1     ContainerCreating   0          26s   <none>   k8s-node1   <none>           <none>
pc-daemonset-drdt5   1/1     Running             0          39s   10.244.36.71   k8s-node1   <none>           <none>
pc-daemonset-9vwvd   1/1     Running             0          43s   10.244.169.129   k8s-node2   <none>           <none>
^C[root@k8s-master ~]# cat pc-daemonset.yaml 
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: pc-daemonset
  namespace: test
spec:
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
相关推荐
江畔何人初5 小时前
pod的定义以及创建过程
linux·运维·云原生
等什么君!6 小时前
docker -数据卷技术
运维·docker·容器
花酒锄作田7 小时前
Debian 13基于kubeadm和containerd部署单节点kubernetes
kubernetes·containerd·cilium
上天_去_做颗惺星 EVE_BLUE7 小时前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
Gary董9 小时前
高并发的微服务架构如何设计
微服务·云原生·架构
东哥爱编程9 小时前
使用Runpod进行gpu serverless推理
云原生·serverless
好好沉淀9 小时前
Docker开发笔记(详解)
运维·docker·容器
Ankie Wan10 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc
lcx_defender11 小时前
【Docker】Docker部署运行nacos
运维·docker·容器
啦啦啦小石头12 小时前
docker添加用户权限不使用sudo
运维·docker·容器