有什么方法可以在 namespace 级别配置nodeSelector
?
我只想在此 namespace 的某些节点上运行工作负载。
最佳答案
为此,您可以使用PodNodeSelector
接纳 Controller 。
首先,您需要在 kubernetes-apiserver 中启用它:
/etc/kubernetes/manifests/kube-apiserver.yaml
:--enable-admission-plugins=
PodNodeSelector
参数现在,您可以在 namespace 的注释中指定
scheduler.alpha.kubernetes.io/node-selector
选项,例如:apiVersion: v1
kind: Namespace
metadata:
name: your-namespace
annotations:
scheduler.alpha.kubernetes.io/node-selector: env=test
spec: {}
status: {}
完成这些步骤之后,在此命名空间中创建的所有pod都会自动添加以下部分:
nodeSelector
env: test
您可以在Kubernetes官方文档中找到有关
PodNodeSelector
的更多信息:https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#podnodeselector
kubeadm用户
如果您使用kubeadm部署了集群,并且想要使此配置持久化,则必须更新kubeadm配置文件:
kubectl edit cm -n kube-system kubeadm-config
在
extraArgs
部分下使用自定义值指定apiServer
:apiServer:
extraArgs:
enable-admission-plugins: NodeRestriction,PodNodeSelector
然后在所有控制平面节点上更新kube-apiserver静态 list :
kubeadm config view > kubeadm-config.yaml
kubeadm init phase control-plane apiserver --config kubeadm-config.yaml
kubespray用户
您可以仅将
kube_apiserver_enable_admission_plugins
变量用于api-server配置变量: kube_apiserver_enable_admission_plugins:
- PodNodeSelector
关于kubernetes - 如何为某些节点分配 namespace ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52487333/