因为E-MapReduce(简称EMR)的组件和作业只会运行在设置了EMR专属标签信息的节点上,所以不设置EMR专属节点会导致无可用资源。设置污点以避免与ACK集群中已有的服务混部时相互影响。本文为您介绍如何为设置EMR专属的节点(标签信息和污点)。

前提条件

已创建Kubernetes集群,详情请参见创建Kubernetes专有版集群创建Kubernetes托管版集群

背景信息

节点池相关的信息,请参见节点池概述

方式一:在ACK控制台新建节点池

  1. 登录容器服务管理控制台
  2. 集群列表页面,单击集群操作列的节点池
  3. 节点池页面,单击上方的创建节点池
  4. 创建节点池页面,单击最下方的显示高级选项,添加污点(Taints)节点标签信息。
    • Spark集群:
      类型
      污点(Taints) emr-node-taint emr
      节点标签 emr-node-label emr
      add_spark
    • Shuffle Service集群:
      类型
      污点(Taints) emr-node-taint emr
      节点标签 rss-node-label rss
      add_spark
      注意 因为RSS会缓存大量Shuffle数据,所以对磁盘I/O性能有一定的要求,RSS目前仅支持大数据型和本地SSD两种规格族的ECS机型。
  5. 单击确认配置
    节点池页面,可以看到创建的节点池信息。

方式二:手动对已有Node添加label和traint

  1. 通过kubectl连接Kubernetes集群,详情请参见通过kubectl管理Kubernetes集群
  2. 执行以下命令,对已有Node添加traint和label。
    • 添加traint
      kubectl taint nodes <your-node-name> emr-node-taint=emr:NoSchedule
      移除traint命令如下。
      kubectl taint nodes <your-node-name> emr-node-taint=emr:NoSchedule-
    • 添加label
      • Spark集群:
        kubectl label nodes <your-node-name> emr-node-label=emr
        查询和删除标签命令如下。
        // 查询指定标签的node
        kubectl get node -l '<emr-node-label> in (emr)'
        // 删除一个标签
        kubectl label node <your-node-name> emr-node-label-
      • Shuffle Service集群:
        kubectl label nodes <your-node-name> rss-node-label=rss
        查询和删除标签命令如下。
        // 查询指定标签的node
        kubectl get node -l '<emr-node-label> in (rss)'
        // 删除一个标签
        kubectl label node <your-node-name> emr-node-label-