⒈简介

  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. iptables防火墙--------基本概念

    iptables按照规则进行处理,而iptables的规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址.目的地址.传输协议(TCP.UDP.ICMP)和服务类型(如HTTP.FTP和SMT ...

  2. 数据结构实验之栈与队列二:一般算术表达式转换成后缀式(SDUT 2132)

    题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; int ok(char ch, char ...

  3. CodeForces - 999C Alphabetic Removals

    C - Alphabetic Removals ≤k≤n≤4⋅105) - the length of the string and the number of letters Polycarp wi ...

  4. .netcore signalR 实时消息推送

    服务器端引入包 Install-Package Microsoft.AspNetCore.SignalR客户端引入包  npm install @aspnet/signalr <template ...

  5. Win10配置Java环境变量

    很多同学在学习Java入门的时候被Java环境变量搞的一头雾水,今天这篇文章拓薪教育就来说一下如何在win10下配置环境变量; 下载jdk安装包: 首先我们需要下载jdk的安装包,这里提供jdk的安装 ...

  6. C#连接数据库时connectionStrings配置

    <connectionStrings> <add name="ConnectionStringName" connectionString="Data ...

  7. 十六、程序包管理之 rpm

    c语言程序的构建过程 1.程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接--> 可执行程序 开放源码:就是程序码,文本格式的源代码,写给人类看的程序 ...

  8. 使用Flask设计带认证token的RESTful API接口

    大数据时代 Just a record. 使用Flask设计带认证token的RESTful API接口[翻译] 上一篇文章, 使用python的Flask实现一个RESTful API服务器端  简 ...

  9. Java 生成六位短信验证码

    在<Java 生成三位随机数>中,简要介绍了使用Java生成三位随机数的方法,前几天在工作中遇到生成6位短信验证码的需求,验证码由6位随机数字构成,不包含字母.6位随机数通常用作短信验证码 ...

  10. JIRA恢复备份后无法上传附件

    1.在恢复JIRA 备份数据和附件后,上传附件失败,这一般是恢复附件时没有修改附件的拥有者和组 创建JIRA平台,会自动创建一个服务器的账户,如果是服务器第一次部署JIRA那么账户肯定是jira,如果 ...