kubernetes - 如何为某些节点分配 namespace ?

标签 kubernetes

有什么方法可以在 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/

    相关文章:

    docker - 为什么要求在 Kubernetes PodSecurityPolicy 冗余中删除所有功能并具有非 root + 禁止权限提升?

    kubernetes - 在 helm kubernetes 中使用 secret 存储敏感数据

    kubernetes - 将 Dockerfile 转换为 Kubernetes yaml

    kubernetes - Prometheus Operator + 新的 Kubernetes Minikube = DeadMansSwitch + KubeControllerManagerDown + KubeSchedulerDown + TargetDown

    json - kubernetes 上的 Keycloak 和使用 log4j2 记录 json 布局格式

    jenkins - 具有多个命名空间的 Kubernetes 集群上下文

    升级后 Kubernetes 停止工作

    azure - 在特定条件下扩展 Azure Kubernetes 集群的正确方法

    kubernetes - 入口 nginx 缓存

    kubernetes - kubectl 命令中的 POD 和 SERVICE 是什么?