带你读《企业级云原生白皮书项目实战》——3.2.6 亲和性&污点容忍

简介: 带你读《企业级云原生白皮书项目实战》——3.2.6 亲和性&污点容忍

3.2.6 亲和性&污点容忍


nodeselctor

nodeSelector 是节点选择的最简单推荐形式。可以使用 nodeSelector 字段将pod调度到指定的节点标签的节点上。


亲和性和反亲和性

节点亲和性

有时候需要某一类别的pod根据业务需求部署到指定的节点池或者可用区,或者需要部署到指定标签的节点上,那么就需要使用节点的亲和性

•requiredDuringSchedulingIgnoredDuringExecution: 调度器只有在规则被满足的时候才能执行调度。

•preferredDuringSchedulingIgnoredDuringExecution: 调度器会优先尝试寻找满足对应规则的节点。如果找不到匹配的节点,调度器仍然会调度该 Pod。

•在上述类型中,IgnoredDuringExecution 意味着如果节点标签在 Kubernetes 调度 Pod 时发生了变更,Pod 仍将继续运行。

•同时指定了 nodeSelector 和 nodeAffiffiffinity,两者 必须都要满足, 才能将 Pod 调度到候选节点上。

•指定了多个与 nodeAffiffiffinity 类型关联的 nodeSelectorTerms, 只要其中一个 nodeSelectorTerms 满足的话,Pod 就可以被调度到节点上。

•指定了多个与同一 nodeSelectorTerms 关联的 matchExpressions, 则只有当所有 matchExpressions 都满足时 Pod 才可以被调度到节点上。

pod间亲和性

Pod 间亲和性与反亲和性使你可以基于已经在节点上运行的 Pod 的标签来约束 Pod 可以调度到的节点,而不是基于节点上的标签,比如将两个服务的 Pod 放到同一个云提供商可用区内,因为它们彼此之间通信非常频繁 。

•Pod 间亲和性和反亲和性都需要相当的计算量,因此会在大规模集群中显著降低调度速度。 我们不建议在包含数百个节点的集群中使用这类设置。

•Pod 反亲和性需要节点上存在一致性的标签。


PDB

用户在常见的场景中,比如deployment,replicaset或者statefulset等场景需要保护pod的启停行为,比如不能降低服务能力的10%以上;单实例有状态应用不能在不通知的情况下终止pod;多实例多状态的应用可用数量不能小于仲裁数量;对于job类型,需要确保任务完成等。 minAvailable 或 maxUnavailable 的值可以表示为整数或百分比。 如果将值指定为百分比,则可能无法映射到确切数量的 Pod。 Kubernetes 采用向上取整到最接近的整数的办法,因此在这种情况下,必须有 4 个 Pod。 你可以检查控制此行为的 代码。

注意:

•policy/v1beta1 和 policy/v1 API 中 PodDisruptionBudget 的空选择算符的行为 略有不同。在 policy/v1beta1 中,空的选择算符不会匹配任何 Pods,而 policy/v1 中,空的选择算符会匹配名字空间中所有 Pods。

•PDB并不能真正保证指定数量/百分比的 Pod 一直处于运行状态。PDB只能够针对自发的驱逐提供保护,而不能针对所有 Pod 不可用的诱因。

污点和容忍

有时候由于节点上有重要的业务pod,我们给节点打上污点,需要这个节点不能被别的pod调度或者给业务pod打上容忍和亲和性,让业务pod指定到被打上污点的节点上。

tolerations:
- key: "key1"
 operator: "Equal"
 value: "value1"
effect: "NoSchedule"
 tolerations:
- key: "key1"
 operator: "Exists"
 effect: "NoSchedule"

•如果一个容忍度的 key 为空且 operator 为 Exists, 表示这个容忍度与任意的 key 、value 和 effffect 都匹配,即这个容忍度能容忍任意 taint。

如果 effffect 为空,则可以与所有键名 key1 的效果相匹配。

相关文章
|
2月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
458 108
|
2月前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
4月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
6月前
|
人工智能 关系型数据库 OLAP
光云科技 X AnalyticDB:构建 AI 时代下的云原生企业级数仓
AnalyticDB承载了光云海量数据的实时在线分析,为各个业务线的商家提供了丝滑的数据服务,实时物化视图、租户资源隔离、冷热分离等企业级特性,很好的解决了SaaS场景下的业务痛点,也平衡了成本。同时也基于通义+AnalyticDB研发了企业级智能客服、智能导购等行业解决方案,借助大模型和云计算为商家赋能。
425 17
|
4月前
|
存储 运维 安全
Docker化运维:容器部署的实践指南
Docker化运维:容器部署的实践指南
|
2月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
199 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
8月前
|
应用服务中间件 PHP nginx
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
简介: 本教程介绍如何基于 Dragonwell 的 Ubuntu 镜像创建一个运行 Nginx 的 Docker 容器。首先从阿里云容器镜像服务拉取基础镜像,然后编写 Dockerfile 确保 Nginx 作为主进程运行,并暴露 80 端口。最后,在包含 Dockerfile 的目录下构建自定义镜像并启动容器,确保 Nginx 在前台运行,避免容器启动后立即退出。通过 `docker build` 和 `docker run` 命令完成整个流程。
287 25
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
|
8月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
5月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
291 18
【赵渝强老师】数据库不适合Docker容器化部署的原因