16.5.3. 使用 Node Selector 约束 Pod 放置


使用 节点选择器,您可以确保 pod 只放置到具有特定标签的节点上。作为集群管理员,您可以使用 Pod 节点约束准入控制器来设置一个策略,防止没有 pod/绑定 权限的用户使用节点选择器来调度 pod。

master 配置文件的 nodeSelectorLabelBlacklist 字段可让您控制 pod 配置的 nodeSelector 字段中特定角色可以指定的标签。具有 pod/binding 权限 角色 的用户、服务帐户和组可以指定任何节点选择器。没有 pods/binding 权限的组群会被禁止为 nodeSelectorLabelBlacklist 中出现的任何标签设置 nodeSelector

例如,OpenShift Container Platform 集群可能包含五个数据中心,分布在两个区域。U.S.:us-east, us-central, 和 us-west; Asia-Pacific region (APAC), apac-eastapac-west。每个地理区域中的每个节点都会进行相应的标记。例如 region: us-east

注意

有关分配标签的详情,请参阅在节点上更新标签

作为集群管理员,您可以创建一个基础架构,应用程序开发人员应在最接近其地理位置的节点上部署 pod。您可以创建节点选择器,将美国数据中心分组到 superregion: us,APAC 数据中心到 superregion: apac

要维护每个数据中心的资源甚至加载,您可以将所需的 区域 添加到 master 配置的 nodeSelectorLabelBlacklist 部分。然后,每当位于美国的开发人员创建 pod 时,它将部署到具有 superregion: us 标签的其中一个区域的节点。如果开发人员尝试将其容器集的特定区域作为目标(如 region: us-east),则他们会收到错误。如果他们再次尝试,其 pod 上没有节点选择器,它仍然可以部署到他们尝试的目标区域,因为 superregion: us 被设置为项目级别节点选择器,节点被标记为 region: us-east 的节点也被标记为 superregion: us

  1. 确保您有所需的标签(请参阅 在节点上更新标签)和节点选择器设置。

    例如,请确保您的 pod 配置具有指明所需标签的 nodeSelector 值:

    apiVersion: v1
    kind: Pod
    spec:
      nodeSelector:
        <key>: <value>
    ...
  2. 修改 master 配置文件 /etc/origin/master/master-config.yaml,将 nodeSelectorLabelBlacklist 添加到 admissionConfig 部分,带有分配给您要拒绝 pod 放置的节点主机的标签:

    ...
    admissionConfig:
      pluginConfig:
        PodNodeConstraints:
          configuration:
            apiversion: v1
            kind: PodNodeConstraintsConfig
            nodeSelectorLabelBlacklist:
              - kubernetes.io/hostname
              - <label>
    ...
  3. 重启 OpenShift Container Platform 以使更改生效。

    # master-restart api
    # master-restart controllers
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.