DaemonSet 是 Kubernetes 中的一种控制器,用于确保集群中的每个节点(或特定标签选择器匹配的节点)运行一个 Pod 的副本。DaemonSet 通常用于运行集群守护进程,如日志收集、监控代理、存储卷插件等。以下是如何控制 DaemonSet 中 Pod 数量的方法:

  1. 使用节点选择器(Node Selector)

    通过在 DaemonSet 的 spec 中设置 nodeSelector,可以指定哪些节点上运行 Pod。例如,如果你想在带有特定标签的节点上运行 Pod,可以这样做:

    apiVersion: apps/v1

    kind: DaemonSet

    metadata:

    name: example-daemonset

    spec:

    selector:

    matchLabels:

    app: example

    template:

    metadata:

    labels:

    app: example

    spec:

    nodeSelector:

    key: value

    containers:

    • name: example-container

      image: example-image

在这个例子中,只有带有 key=value 标签的节点会运行 Pod。

2. 使用节点亲和性(Node Affinity)

节点亲和性提供了更细粒度的控制,可以使用 nodeAffinity 来指定 Pod 应该调度到哪些节点上。例如:

apiVersion: apps/v1

kind: DaemonSet

metadata:

name: example-daemonset

spec:

selector:

matchLabels:

app: example

template:

metadata:

labels:

app: example

spec:

affinity:

nodeAffinity:

requiredDuringSchedulingIgnoredDuringExecution:

nodeSelectorTerms:

- matchExpressions:

- key: key

operator: In

values:

- value

containers:

- name: example-container

image: example-image

在这个例子中,只有满足 key In [value] 条件的节点会运行 Pod。

3. 使用容忍度(Tolerations)

如果某些节点上有污点(Taints),可以通过设置容忍度(Tolerations)来允许 Pod 调度到这些节点上。例如:

apiVersion: apps/v1

kind: DaemonSet

metadata:

name: example-daemonset

spec:

selector:

matchLabels:

app: example

template:

metadata:

labels:

app: example

spec:

tolerations:

- key: key

operator: Equal

value: value

effect: NoSchedule

containers:

- name: example-container

image: example-image

在这个例子中,Pod 会容忍带有 key=value 污点的节点。

4. 更新策略(Update Strategy)

DaemonSet 支持滚动更新,可以通过设置 updateStrategy 来控制更新过程中的 Pod 数量。例如:

apiVersion: apps/v1

kind: DaemonSet

metadata:

name: example-daemonset

spec:

selector:

matchLabels:

app: example

template:

metadata:

labels:

app: example

spec:

containers:

- name: example-container

image: example-image

updateStrategy:

type: RollingUpdate

rollingUpdate:

maxUnavailable: 1

maxSurge: 0

在这个例子中,maxUnavailable 设置为 1,表示在更新过程中最多有一个 Pod 不可用;maxSurge 设置为 0,表示在更新过程中不会创建额外的 Pod。

通过以上方法,你可以灵活地控制 DaemonSet 中 Pod 的数量和调度策略。

k8s~控制deamonset中pod的数量的更多相关文章

  1. k8s 中 Pod 的控制器

    k8s 中 Pod 的控制器 前言 Replication Controller ReplicaSet Deployment 更新 Deployment 回滚 deployment StatefulS ...

  2. 计算eks node 中pod数量

    计算eks node 中pod数量 计算公式:((IP数I - 1) * ENI数) + 2 实例规格等ENI数和IP的对应关系,请参考 https://docs.aws.amazon.com/zh_ ...

  3. 【K8S学习笔记】Part2:获取K8S集群中运行的所有容器镜像

    本文将介绍如何使用kubectl列举K8S集群中运行的Pod内的容器镜像. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同. 0x00 准备工作 需要有一个K8S集群,并且配置好了k ...

  4. k8s之深入解剖Pod(三)

    目录: Pod的调度 Pod的扩容和缩容 Pod的滚动升级 一.Pod的调度 Pod只是容器的载体,通常需要通过RC.Deployment.DaemonSet.Job等对象来完成Pod的调度和自动控制 ...

  5. 容灾恢复 | 记一次K8S集群中etcd数据快照的备份恢复实践

    [点击 关注「 全栈工程师修炼指南」公众号 ] 设为「️ 星标」带你从基础入门 到 全栈实践 再到 放弃学习! 涉及 网络安全运维.应用开发.物联网IOT.学习路径 .个人感悟 等知识分享. 希望各位 ...

  6. K8S生产环境中实践高可靠的配置和技巧都有哪些?

    K8S环境中实践高可靠的配置和技巧都有哪些? 磁盘类型及大小 磁盘类型: 推荐使用ssd 磁盘 对于worker节点,创建集群时推荐使用挂载数据盘.这个盘是专门给/var/lib/docker 存放本 ...

  7. k8s核心资源之Pod概念&入门使用讲解(三)

    目录 1. k8s核心资源之Pod 1.1 什么是Pod? 1.2 Pod如何管理多个容器? 1.3 Pod网络 1.4 Pod存储 1.5 Pod工作方式 1.5.1 自主式Pod 1.5.2 控制 ...

  8. k8s集群中部署Rook-Ceph高可用集群

    先决条件 为确保您有一个准备就绪的 Kubernetes 集群Rook,您可以按照这些说明进行操作. 为了配置 Ceph 存储集群,至少需要以下本地存储选项之一: 原始设备(无分区或格式化文件系统) ...

  9. 在 Nebula K8s 集群中使用 nebula-spark-connector 和 nebula-algorithm

    本文首发于 Nebula Graph Community 公众号 解决思路 解决 K8s 部署 Nebula Graph 集群后连接不上集群问题最方便的方法是将 nebula-algorithm / ...

  10. k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方?

    k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方? 面试官:"计数性Job默认完成模式是什么?Indexed模式如何发布自定义索引呢?& ...

随机推荐

  1. 为什么在http协议中使用base64编码方式传输二进制文件

    相关: 图解 Base64 实现原理并使用 js 实现一个简单的 Base64 编码器 常用加密方法之Base64编解码及代码实现 一直都知道在http协议中使用base64的方式传递二进制文件,虽然 ...

  2. 在美国和以色列的技术支持下BP机可以爆炸,那么苹果手机是否也可以被远程引爆

    要知道,这一切在技术上都是可以实现的. 由此可见,带电池的产品,最为稳妥的办法就是购买在中国组装的产品,否则其安全性是无法保证的.有人可能会说美国政府不会单独的通过这种方法去定向的杀害某个中国普通人, ...

  3. 2021“MINIEYE杯”(1)

    Start Time : 2021-07-20 12:10:00 End Time : 2021-07-20 17:10:00 1001-Mod, Or and Everything 真正的签到题 题 ...

  4. Spring AI 再更新:如何借助全局参数实现智能数据库操作与个性化待办管理

    引言 好的,今天我们继续聊一下Spring AI的相关内容.在10月的时候,我使用Spring AI搭建了一个简易版的个人助理系统,整体来说效果还是非常不错的.通过这次尝试,我对业务系统与AI结合的探 ...

  5. 100 款支持 .NET 多版本的强大 WPF 控件库

    前言 推荐一款集成了超过100款控件的流行 XAML 控件库,同时提供了一系列常用的 .NET 帮助类-CookPopularUI.它可以简化开发流程,让我们能够更加专注于核心业务逻辑的实现. 让我们 ...

  6. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-5-创建首个自动化脚本(详细教程)

    1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容,首先 ...

  7. Struts2漏洞复现

    Struts2漏洞复现 靶场环境:/vulhub/struts2大多都是OGNL注入 是什么: Struts2是一个基于MVC设计模式的Web应用框架 识别: 1.通过网页后缀来进行判断,如.do或者 ...

  8. 记录一次CTF经典PHP反序列化

    PHP反序列化 序列化通俗来讲就是将对象转化为可以存储.传输的字符串,反序列化就是把字符串再变回对象的过程. 例如: <?php class chybate { var $test = '123 ...

  9. Spring3.0核心组件的源码简单分析

    前言 本文结合Spring3.0的源码进行简单的介绍,这里的核心组件不是我们常见所谓的IOC和AOP,而是以Spring3.0发布的开发包为切入点,当然Spring3.0以后的各个版本基本上差不多,思 ...

  10. Git之常用文件

    git项目中的特殊文件, 常见文件有.gitignore, .gitkeep 1) .gitkeep git默认是不允许提交一个空的目录到版本库上的, 可以在空的文件夹里面建立一个.gitkeep文件 ...