有没有办法在名称空间级别配置nodeSelector?
我只想在此命名空间的某些节点上运行工作负载。
发布于 2018-09-25 05:02:02
要实现这一点,可以使用PodNodeSelector准入控制器。
首先,您需要在kubernetes-apiserver中启用它
find --enable-admission-plugins=
/etc/kubernetes/manifests/kube-apiserver.yaml:--enable-admission-plugins=现在,您可以在名称空间的注释中指定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有关PodNodeSelector的更多信息,可以在Kubernetes官方文档中找到:https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#podnodeselector
kubeadm用户
如果您使用kubeadm部署了您的集群,并且如果您想使此配置持久存在,则必须更新kubeadm配置文件:
kubectl edit cm -n kube-system kubeadm-config在apiServer部分下使用自定义值指定extraArgs:
apiServer:
extraArgs:
enable-admission-plugins: NodeRestriction,PodNodeSelector然后更新所有控制平面节点上的kube-apiserver静态清单:
# Kubernetes 1.22 and forward:
kubectl get configmap -n kube-system kubeadm-config -o=jsonpath="{.data}" > kubeadm-config.yaml
# Before Kubernetes 1.22:
# "kubeadmin config view" was deprecated in 1.19 and removed in 1.22
# Reference: https://github.com/kubernetes/kubeadm/issues/2203
kubeadm config view > kubeadm-config.yaml
# Update the manifest with the file generated by any of the above lines
kubeadm init phase control-plane apiserver --config kubeadm-config.yaml库贝斯普雷用户
您可以只对您的api服务器配置变量使用kube_apiserver_enable_admission_plugins变量:
kube_apiserver_enable_admission_plugins:
- PodNodeSelector发布于 2019-02-21 17:09:28
我完全同意@kvaps的回答,但是缺少了一些东西:有必要在节点中添加一个标签:
kubectl label node <yournode> env=test这样,在名称空间中使用scheduler.alpha.kubernetes.io/node-selector: env=test创建的pod将只能在具有env=test标签的节点上进行调度
https://stackoverflow.com/questions/52487333
复制相似问题