⒈简介

  Replicationcontroller和ReplicaSet都用于在Kubermetes集群上部署运行特定数量的pod。但是,当某些情况下我们希望在集群中的每个节点上运行同一个指定的pod就需要更为复杂的操作。
  这些情况包括pod执行系统级别的与基础结构相关的操作。例如,希望在每个节点上运行日志收集器和资源监控器。一个典型的例子就是Kubernetes自己的kube-proxy进程,它需要运行在所有节点上才能使服务工作。

  要在所有集群节点上运行一个pod,需要创建一个DaemonSet对象,DaemonSet确保创建足够的pod,并在自己的节点上部署每个pod,DaemonSet并没有期望副本数的概念。它不需要,因为它的工作是确保一个匹配它选择器的pod在每个节点上运行。如果节点下线,DaemonSet不会在其他地方重新创建pod。但是,当将一个新节点添加到集群中时,DaemonSet会立刻部署一个新的pod实例。如果有人无意中删除了一个pod,那么它也会重新创建一个新的pod。与ReplicaSet一样,DaemonSet 从配置的pod模板创建pod。

⒉使用DaemonSet只在特定的节点上运行pod

  默认情况下DaemonSet将在集群中的所有节点上部署pod,除非指定这些pod只在部分节点上运行,这是通过DaemonSet描述文件中pod模板的nodeselector属性指定的。
  DaemonSet中的节点选择器定义了DaemonSet必须将其pod部署到的节点。
  注意:节点可以防止pod被部署到节点上而设置为不可调度的。DaemonSet仍然可以将pod部署到这些节点上,因为无法调度的属性只会被调度器使用,而DaemonSet管理的pod则完全绕过调度器。这是预料之中的,因为DaemonSet的目的是运行系统服务,即使是在不可调度的节点上,系统服务通常也需要运行。

⒊定义(创建)DaemonSet

apiVersion: apps/v1  #指定当前描述文件遵循apps/v1版本的KubernetesAPI
kind: DaemonSet #我们在描述一个DaemonSet
metadata:
name: ssd-monitor #指定DaemonSet的名称
spec:
selector: #pod选择器决定了DaemonSet的操作对象
matchLabels:
app: ssd-monitor
template: #创建新pod所使用的pod模板
metadata:
labels:
app: ssd-monitor #模板中的pod标签显然必须和DaemonSet的标签选择器相匹配,否则控制器将无休止的创建新的pod实例。因为创建新的pod不会使实际的副本数量接近期望的副本数量。为了防止出现这种情况,Kubernetes API服务会校验DaemonSet的定义不会接收错误的配置。
#不指定DaemonSet的标签选择器也是一种选择,因为DaemonSet会自动从模板中提取标签,而且描述文件也将更简短
spec:
nodeSelector: #pod模板包含一个节点选择器,会选择有disk=ssd标签的节点
disk: ssd
containers:
- name: coreqi
image: fanqisoft/coreqi
ports:
- containerPort:

  创建以上描述文件后使用kubectl命令创建DaemonSet

kubectl create -f ssd-monitor-daemonset.yaml

  可以使用kubectl get 和 kubectl describe来检查DaemonSet

#ds是DaemonSet的缩写
kubectl get ds
kubectl describe ds

* 如果节点的标签更改了,那么节点的标签不符合DaemonSet的指定标签,该节点上由DaemonSet创建的pod也会被随之销毁。

⒋删除DaemonSet

  使用以下命令删除DaemonSet

kubectl delete ds {dsName} 

  删除DaemonSet会删除所有的pod。这种情况下是需要列出pod来确认的。

Kubernetes组件-DaemonSet的更多相关文章

  1. kubernetes组件

    kubernetes组件 @(马克飞象)[k8s] 组件 kubernetes除了必备的dns和网络组件外,官方推出大量的cluster-monitoring,dashboard,fluentd-el ...

  2. 构建Docker平台【第三篇】安装 kubernetes 组件

    第一步:准备 1. 安装包: kubeadm-1.6.0-0.alpha.0.2074.a092d8e0f95f52.x86_64.rpm kubernetes-cni-0.3.0.1-0.07a8a ...

  3. Kubernetes的DaemonSet(下篇)

    用Daemon Pod来进行通信 使用Pod来再DaemonSet中通信的手段有: 推的方式:在DaemonSet中的Pod会被配置成发送更新到如状态数据库这样的服务.这些都没有客户端. IP+端口方 ...

  4. centos7下kubernetes(4.kubernetes组件)

    Kubenetes cluster 由master和node组成 Master是kubenetes的大脑.运行着以下进程:kube-apiserver.kube-scheduler.kube-cont ...

  5. Kubernetes组件与架构

    转载请标明出处: 文章首发于>https://www.fangzhipeng.com/kubernetes/2018/09/30/k8s-basic1/ 本文出自方志朋的博客 Kubernete ...

  6. Kubernetes【K8S】(一):Kubernetes组件

    什么是Kubernetes ​ Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化.Kubernetes拥有一个庞大且快速增长的生态系统. ...

  7. 使用 C# 开发 Kubernetes 组件,获取集群资源信息

    写什么呢 前段时间使用 C# 写了个项目,使用 Kubernetes API Server,获取信息以及监控 Kubernetes 资源,然后结合 Neting 做 API 网关. 体验地址 http ...

  8. Kubernetes之DaemonSet控制器

    DaemonSet 简介 DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本.当有 Node 加入集群时,也会为他们新增一个 Pod .当有 Node 从集群移除时,这些 P ...

  9. Kubernetes学习笔记之认识Kubernetes组件

    前言:笔记知识点来源于Kubernetes官方文档说明,链接:https://kubernetes.io/docs/concepts/overview/components/ ,本记录仅仅是学习笔记记 ...

随机推荐

  1. [HNOI2008] 越狱 快速幂

    [HNOI2008] 越狱 快速幂 水.考虑不发生越狱的情况:即宗教相同的都不相邻,一号任意放\(m\)种宗教的人,此后\(n-1\)个房间都放与上一个宗教不同的人,有\(m-1\)种,所以共有\(m ...

  2. Java面向对象2(G~J)

    G    织女的红线(SDUT 2240) import java.util.Scanner; import java.text.DecimalFormat; class Sum { double x ...

  3. Dubbo——配置

    一.配置原则 JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口. XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的 ...

  4. Solr 7.X 安装和配置--Linux篇

    1. 关闭防火墙和Selinux 2. 安装所需环境JDK 3. 下载Solr7.4版本 4. 下载并配置solr的中文分词器IK Analyzer 5. 启动Solr 6. 注意事项以及说明 1. ...

  5. CF1200B

    CF1200B 解法: 贪心.当在第i列时,尽可能多的取走第i列的木块使得袋子里的木块尽可能多 CODE: #include<iostream> #include<cstdio> ...

  6. 什么是文件的BOM头

    1.什么是BOM? BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部. 在不同的Unicode编码中, ...

  7. iTerm2 + oh my zsh +agnoster

    安装iTerm2 iTerm2官方下载地址 http://www.iterm2.com/downloads.html 安装Oh My Bash 1.通过cat /etc/shells命令可以查看当前系 ...

  8. 从 10.x 到 ArcGIS Pro 的 Python 迁移

    与 ArcGIS Pro 结合使用 Python 的方式与包括 ArcGIS Desktop.ArcGIS Server 以及 ArcGIS Engine 在内的其他 ArcGIS 产品不同. 地理处 ...

  9. SQL优化 | sql执行过长的时间,如何优化?

    1.查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化) 2.涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合 3. ...

  10. UML期末复习题——2.4:Domain Model

    第四题:领域模型 重要概念: 1. 领域模型:是对领域内的概念类或现实世界中对象的可视化表示.领域模型也称为概念模型,领域对象模型和分析对象模型. 2. 应用UML表示法,领域模型被描述为一组没有定义 ...