Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - DaemonSet(DS)

Posted 无糖可乐没有灵魂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - DaemonSet(DS)相关的知识,希望对你有一定的参考价值。

文章目录

1、基本概念与控制器特点


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

DaemonSet控制器的特点:

  • 每当向集群中添加一个节点时,指定的Pod副本就会在新增节点上进行创建;
  • 当节点从集群中移除时,Pod自动被回收;

2、资源配置清单


参数查询方法:

[root@master ~]# kubectl explain ds

参数汇总梳理:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: pc-daemonset
  namespace: dev
  labels:
    controller: deamonset 
spec:
  revisionHistoryLimit: 3           #保留历史版本,默认10
  updateStrategy:                   #更新策略
    type: RollingUpdate             #滚动更新
    rollingUpdate:
      maxUnavailable: 1
  selector:                         #选择器,指定控制那些副本
    matchLabels:
      app: nginx-pod
    matchExpressions:
    - key: "app"
      operator: In 
      values: ["nginx-pod"]
  template:                         #副本模板,当副本数量不足时,以此配置创建副本
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx 
        image: nginx:1.17.1
        ports:
        - containerPort: 80

3、创建控制器


#创建YAML文件
[root@master ~]# vim pc-daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: pc-daemonset
  namespace: dev 
spec:
  selector:                         #选择器,指定控制那些副本
    matchLabels:
      app: nginx-pod
  template:                         #副本模板,当副本数量不足时,以此配置创建副本
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx 
        image: nginx:1.17.1
#调用YAML文件
[root@master ~]# kubectl apply -f pc-daemonset.yaml 
daemonset.apps/pc-daemonset created

#查看DS控制器状态
[root@master ~]# kubectl get ds -n dev -o wide
NAME           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS   IMAGES         SELECTOR
pc-daemonset   2         2         2       2            2           <none>          49s   nginx        nginx:1.17.1   app=nginx-pod

#查看node数量
[root@master ~]# kubectl get node
NAME                STATUS   ROLES                  AGE   VERSION
master.kubernetes   Ready    control-plane,master   26d   v1.23.0
node1.kubernetes    Ready    <none>                 26d   v1.23.0
node2.kubernetes    Ready    <none>                 26d   v1.23.0

#由于Node节点数量只有两个,因此每个Node创建一个Pod,共2个Pod
[root@master ~]# kubectl get pod -n dev -owide
NAME                 READY   STATUS    RESTARTS   AGE     IP              NODE               NOMINATED NODE   READINESS GATES
pc-daemonset-gkbnc   1/1     Running   0          2m23s   10.244.37.202   node2.kubernetes   <none>           <none>
pc-daemonset-zthlv   1/1     Running   0          2m23s   10.244.80.89    node1.kubernetes   <none>           <none>

4、删除控制器


[root@master ~]# kubectl delete -f pc-daemonset.yaml 
daemonset.apps "pc-daemonset" deleted

以上是关于Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - DaemonSet(DS)的主要内容,如果未能解决你的问题,请参考以下文章

Docker&Kubernetes ❀ Kubernetes集群安装部署过程与常见的错误解决方法

Docker&Kubernetes ❀ Kubernetes集群安装部署过程与常见的错误解决方法

Docker&Kubernetes ❀ Kubernetes集群实践与部署笔记知识点梳理

Docker&Kubernetes ❀ Docker 容器技术笔记链接梳理

Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Job

Docker&Kubernetes ❀ Kubernetes集群Service资源配置清单