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
相关推荐
Lansonli2 分钟前
云原生(五十七) | 阿里云CDN基本概念
阿里云·云原生·云计算
Bright16685 小时前
centos9安装k8s集群
云原生·容器·kubernetes
!!!5257 小时前
华为云镜像加速器
docker·容器·华为云
xidianjiapei0018 小时前
Kubernetes的Ingress 资源是什么?
云原生·容器·kubernetes
企鹅侠客8 小时前
kube-proxy有什么作用?
云原生·kubelet
sszdzq9 小时前
Docker
运维·docker·容器
dmy10 小时前
docker 快速构建开发环境
后端·docker·容器
土豆沒加11 小时前
K8S的Dashboard登录及验证
云原生·容器·kubernetes
大腕先生12 小时前
微服务环境搭建&架构介绍(附超清图解&源代码)
微服务·云原生·架构
终端行者12 小时前
kubernetes1.28部署mysql5.7主从同步,使用Nfs制作持久卷存储,适用于centos7/9操作系统,
数据库·容器·kubernetes