您可通过为节点设置节点标签,然后通过配置 nodeSelector 对 pod 调度进行强制约束,将 pod 调度到指定的 Node 节点上。关于 nodeSelector 的详细实现原理,请参见 nodeselector

出于业务场景需要,如您需要将管控服务部署到 Master 节点;或者将某些服务部署到具有 SSD 盘的机器上。您可以采用这种方式实现指定节点调度。

前提条件

您已经成功部署一个 Kubernetes 集群,参见创建Kubernetes集群

步骤1 为节点添加标签

  1. 登录容器服务管理控制台
  2. 在 Kubernetes 菜单下,单击左侧导航栏中的集群 > 节点 ,进入节点列表页面。
  3. 选择所需的集群,在页面右上角单击标签管理


  4. 在节点列表中,选择所需节点,然后单击添加标签。本例中选择一个 worker 节点。


  5. 在弹出的添加标签对话框中,输入标签的名称和值,然后单击确定


    您可以在标签管理页面,看到该节点具有 group:worker标签。


您也可以通过命令 kubectl label nodes <node-name> <label-key>=<label-value> 为节点添加标签。

步骤2 将 pod 部署到指定节点

  1. 登录容器服务管理控制台
  2. 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 无状态 ,进入无状态(Deployment)页面。
  3. 单击页面右上角的使用模板创建


  4. 对模板进行相关配置,部署一个 pod,完成配置后,单击创建
    • 集群:选择所需的集群。
    • 命名空间:选择资源对象所属的命名空间,本例中是 default。
    • 示例模板:本示例选择自定义模板。


    本示例的编排模板如下。

     apiVersion: v1
     kind: Pod
     metadata:
       labels:
         name: hello-pod
       name: hello-pod
     spec:
       containers:
         - image: nginx
           imagePullPolicy: IfNotPresent
           name: hello-pod
           ports:
             - containerPort: 8080
               protocol: TCP
           resources: {}
           securityContext:
             capabilities: {}
             privileged: false
           terminationMessagePath: /dev/termination-log
       dnsPolicy: ClusterFirst
       restartPolicy: Always
       nodeSelector:                    
         group: worker                           ##注意与前面配置的节点标签一致
     status: {}
  5. 单击创建 后,会提示部署状态信息。 成功后,单击Kubernetes 控制台前往控制台查看部署状态。


  6. 您可单击 pod 名称,进入详情页,了解 pod 详情。
    您可看到 pod 的标签、所处的节点 ID 等信息,表明该 pod 已经成功部署到具有 group:worker 标签的指定节点上。