Kubernetes准入控制器PodNodeSelector、PodTolerationRestriction
PodNodeSelector:
该准入控制器通过读取命名空间注解和全局配置,来为命名空间中可以使用的节点选择器设置默认值并实施限制。
配置文件格式
PodNodeSelector
使用配置文件来设置后端行为的选项。 请注意,配置文件格式将在将来某个版本中迁移为版本化文件。 该文件可以是 json 或 yaml,格式如下:
1 2 3 4 | podNodeSelectorPluginConfig: clusterDefaultNodeSelector: name-of-node-selector namespace1: name-of-node-selector namespace2: name-of-node-selector |
从文件中引用 PodNodeSelector
配置文件,提供给 API 服务器命令行标志 --admission-control-config-file
:
apiserver.config.k8s.io/v1:
apiserver.k8s.io/v1alpha1:
1 2 3 4 5 6 7 | # Deprecated in v1.17 in favor of apiserver.config.k8s.io/v1 apiVersion: apiserver.k8s.io/v1alpha1 kind: AdmissionConfiguration plugins: - name: PodNodeSelector path: podnodeselector.yaml ... |
配置注解格式
PodNodeSelector
使用键为 scheduler.alpha.kubernetes.io/node-selector
的注解将节点选择器分配给命名空间。
1 2 3 4 5 6 | apiVersion: v1 kind: Namespace metadata: annotations: scheduler.alpha.kubernetes.io/node-selector: name-of-node-selector name: namespace3 |
内部行为
该准入控制器行为如下:
- 如果
Namespace
的注解带有键scheduler.alpha.kubernetes.io/node-selector
,则将其值用作节点选择器。 - 如果命名空间缺少此类注解,则使用
PodNodeSelector
插件配置文件中定义的clusterDefaultNodeSelector
作为节点选择器。 - 评估 pod 节点选择器和命名空间节点选择器是否存在冲突。存在冲突将导致拒绝。
- 评估 pod 节点选择器和命名空间的白名单定义的插件配置文件是否存在冲突。存在冲突将导致拒绝。
说明:PodNodeSelector 允许 Pod 强制在特定标签的节点上运行。另请参阅 PodTolerationRestriction 准入插件,该插件可防止 Pod 在特定污点的节点上运行。
PodTolerationRestriction:
该准入控制器首先验证 Pod 的容忍度与其命名空间的容忍度之间的冲突。如果存在冲突,则拒绝 Pod 请求。 然后,它将命名空间的容忍度合并到 pod 的容忍度中,之后根据命名空间的容忍度白名单检查所得到的容忍度结果。 如果检查成功,则将接受 pod 请求,否则拒绝该请求。
如果 pod 的命名空间没有任何关联的默认容忍度或容忍度白名单,则使用集群级别的默认容忍度或容忍度白名单(如果有的话)。
命名空间的容忍度通过注解健 scheduler.alpha.kubernetes.io/defaultTolerations
和 scheduler.alpha.kubernetes.io/tolerationsWhitelist
设置。
参考:https://kubernetes.io/zh/docs/reference/access-authn-authz/admission-controllers/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2019-08-12 Centos7迁移fastdfs文件系统
2017-08-12 spring @Qualifier注解
2016-08-12 Linux命令行–更多bash shell命令(转)
2016-08-12 docker启动Mysql(转)
2014-08-12 背包
2014-08-12 sdut2193救基友记3(三维)
2014-08-12 hdu1542 Atlantis(矩阵面积的并)