如何为某些节点分配名称空间?

时间:2018-09-24 21:02:02

标签: kubernetes

有什么方法可以在命名空间级别配置nodeSelector

我只想为此名称空间在某些节点上运行工作负载。

2 个答案:

答案 0 :(得分:6)

要实现此目的,您可以使用PodNodeSelector准入控制器。

首先,您需要在 kubernetes-apiserver 中启用它:

  • 编辑/etc/kubernetes/manifests/kube-apiserver.yaml
    • 找到--enable-admission-plugins=
    • 添加PodNodeSelector参数

现在,您可以在名称空间的注释中指定scheduler.alpha.kubernetes.io/node-selector选项,例如:

apiVersion: v1
kind: Namespace
metadata
 name: ns1
 annotations:
   scheduler.alpha.kubernetes.io/node-selector: env=test
spec: {}
status: {}

这些步骤之后,在此命名空间中创建的所有pod都会自动添加此部分:

nodeSelector
  env: test

有关PodNodeSelector的更多信息,您可以在Kubernetes官方文档中找到: https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#podnodeselector

答案 1 :(得分:0)

我完全同意@kvaps的答案,但是有一些遗漏:有必要在您的节点中添加标签:

kubectl label node <yournode> env=test

例如,在名称空间中使用scheduler.alpha.kubernetes.io/node-selector: env=test创建的pod只能在带有env=test标签的节点上进行调度