DaemonSet可以确保在每个节点上仅运行一个容器副本(Pod),如果集群中有新增节点,也将为其新增一个Pod。它常用来部署一些集群的日志、监控或其他系统管理应用。本文介绍如何创建守护进程集工作负载DaemonSet。
前提条件
已创建Kubernetes集群。具体操作,请参见创建Kubernetes托管版集群。
已通过kubectl连接Kubernetes集群。具体操作,请参见通过Kubectl连接Kubernetes集群。
操作步骤
您可以通过控制台或kubectl两种方式创建DaemonSet。
通过控制台创建
使用镜像创建DaemonSet
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在守护进程集页面右上角,单击使用镜像创建。
设置创建DaemonSet的参数。
在应用基本信息配置向导页面设置应用的基本信息。关于参数的详细描述,请参见使用镜像创建无状态Deployment应用。
在容器配置配置向导页面设置容器信息。关于参数的详细描述,请参见使用镜像创建无状态Deployment应用。
在高级配置配置向导页面完成DaemonSet的高级参数设置。
DaemonSet会忽略节点的不可调度状态,您可以通过设置节点亲和性、应用亲和性、调度容忍来指定Pod只运行在指定的节点上。关于参数的详细描述,请参见使用镜像创建无状态Deployment应用。
单击创建。
成功创建守护进程集后,在守护进程集列表中可以查看新创建的守护进程集。
说明在守护进程集页面下方,通过选择批量重新部署可实现多个守护进程集重新部署。
使用模板创建DaemonSet
在守护进程集页面右上角,单击使用YAML创建资源。
在创建页面,在模板区域编辑模板信息。
在模板区域下方,单击创建。
成功创建守护进程集后,在守护进程集列表中可以查看新创建的守护进程集。
通过kubectl命令行创建
DaemonSet会忽略节点的无法调度状态,您可以设置以下参数将Pod调度至指定的节点上:
参数 | 描述 |
nodeSelector | 只调度到匹配指定标签的节点上。 |
nodeAffinity | 设置节点亲和性。根据节点标签将Pod调度到指定节点上,但支持更丰富的节点匹配策略。 |
podAffinity | 设置Pod亲和性。根据Pod的标签来选择节点,仅调度到满足条件的Pod所在节点。 |
本文以创建一个名为fluentd-elasticsearch的DaemonSet为例,说明如何使用kubectl创建DaemonSet。
保存以下YAML内容至daemonset.yaml文件中。
apiVersion: apps/v1 kind: DaemonSet metadata: name: fluentd-elasticsearch namespace: kube-system labels: k8s-app: fluentd-logging spec: selector: matchLabels: name: fluentd-elasticsearch template: metadata: labels: name: fluentd-elasticsearch spec: tolerations: # this toleration is to have the daemonset runnable on master nodes # remove it if your masters can't run pods - key: node-role.kubernetes.io/master effect: NoSchedule containers: - name: fluentd-elasticsearch image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2 resources: limits: memory: 200Mi requests: cpu: 100m memory: 200Mi volumeMounts: - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true terminationGracePeriodSeconds: 30 volumes: - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers
执行以下命令创建DaemonSet。
kubectl create -f daemonset.yaml
当输出
daemonset.apps/fluentd-elasticsearch created
时,则说明成功创建守护进程集DaemonSet。
相关操作
守护进程集创建完成后,您还可以进行以下操作:
在守护进程集列表中单击标签字段,输入对应应用标签的key与
value
,单击确定后可过滤列表中的应用。在守护进程集名称右侧的操作列中,单击详情查看守护进程集的基本信息,包括容器组、访问方式、事件、日志等。
在守护进程集名称右侧的操作列中,选择
、 ,查看守护进程集的YAML信息和删除守护进程集。