6.3.2. 设置项目范围的 Node Selector
要使用节点选择器创建单个项目,请在创建项目时使用 --node-selector 选项。例如,如果您有一个带有多个区域的 OpenShift Container Platform 拓扑,您可以使用节点选择器限制特定的 OpenShift Container Platform 项目,仅将 pod 部署到特定区域的节点。
以下命令创建一个名为 myproject 的新项目,它规定 pod 部署到标有 user-node 和 east 的节点上:
oc adm new-project myproject \
--node-selector='type=user-node,region=east'
$ oc adm new-project myproject \
--node-selector='type=user-node,region=east'
运行此命令后,这便成为指定项目中包含的所有容器集的管理员设置节点选择器。
new-project 子命令分别可用于 oc adm 和 oc,而集群管理员和 developer 命令则分别可用于使用节点选择器创建新项目,但仅可使用 oc adm 命令使用。在自调配项目时,new-project 子命令不可供项目开发人员使用。
使用 oc adm new-project 命令,为项目添加 注解 部分。您可以编辑项目,并更改 openshift.io/node-selector 值来覆盖默认值:
...
metadata:
annotations:
openshift.io/node-selector: type=user-node,region=east
...
...
metadata:
annotations:
openshift.io/node-selector: type=user-node,region=east
...
您还可以使用以下命令覆盖现有项目命名空间的默认值:
oc patch namespace myproject -p \
'{"metadata":{"annotations":{"openshift.io/node-selector":"node-role.kubernetes.io/infra=true"}}}'
# oc patch namespace myproject -p \
'{"metadata":{"annotations":{"openshift.io/node-selector":"node-role.kubernetes.io/infra=true"}}}'
如果 openshift.io/node-selector 设置为空字符串(oc adm new-project --node-selector=""),则项目将无法具有管理员设置的节点选择器,即使已经设置了集群范围的默认值。这意味着,作为集群管理员,您可以设置默认值,将开发人员项目限制为节点的子集,并且仍然启用基础架构或其他项目来调度整个集群。