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
相关推荐
广州中轴线14 小时前
OpenStack on Kubernetes 生产部署实战(十三)
容器·kubernetes·openstack
晚霞的不甘14 小时前
Flutter for OpenHarmony天气卡片应用:用枚举与动画打造沉浸式多城市天气浏览体验
前端·flutter·云原生·前端框架
Tadas-Gao14 小时前
TCP粘包现象的深度解析:从协议本质到工程实践
网络·网络协议·云原生·架构·tcp
礼拜天没时间.15 小时前
深入Docker架构——C/S模式解析
linux·docker·容器·架构·centos
切糕师学AI15 小时前
Helm Chart 是什么?
云原生·kubernetes·helm chart
猫头虎15 小时前
如何使用Docker部署OpenClaw汉化中文版?
运维·人工智能·docker·容器·langchain·开源·aigc
会周易的程序员15 小时前
openplc runtimev4 Docker 部署
运维·c++·物联网·docker·容器·软件工程·iot
陈桴浮海16 小时前
【Linux&Ansible】学习笔记合集三
linux·运维·云原生·ansible
小Pawn爷16 小时前
1.Docker基础
运维·docker·容器
chinesegf16 小时前
清理docker残留镜像images
运维·docker·容器