参考 概述▸,AutoMQ 支持部署到 Kubernetes 上。本文介绍 AutoMQ 部署到华为云 CCE 平台的安装过程。
本文中提及 AutoMQ 产品服务方、AutoMQ 服务方、AutoMQ,均特指 AutoMQ HK Limited及其附属公司。

操作流程

步骤 1:安装环境控制台

参考概述▸,AutoMQ 支持部署到 CCE 集群。在 CCE 部署模式下,首先仍然需要安装 AutoMQ 控制台,再通过控制台界面管理 CCE,将集群部署到 CCE。 在华为云上,支持基于云商店安装环境控制台。
注意:在 CCE 上 部署 AutoMQ 数据面集群,需要从公网环境拉取 Docker 镜像和 Helm Chart 产物。因此需要 VPC 环境支持通过 SNAT 等方式出公网。配置公网 SNAT 的操作说明请参考 从华为云云商店安装环境▸文档的附录部分
AutoMQ 控制台安装完成后,需要从控制台界面或者 Terraform output 输出菜单获取环境控制台地址、初始用户名、密码。

步骤 2:创建 CCE 集群

参考概述▸,用户需要提前创建独立的 CCE 集群分配给 AutoMQ 使用。用户可访问华为云 CCE 产品控制台按下方步骤操作。
  1. 登录华为云 CCE 控制台。点击购买集群
  1. 选择集群类型为CCE Turbo ,并按照建议选择计费模式、版本,集群规模建议选择 200-1000 节点
网络配置部分需要参考下方要求设置:
  • 节点子网: 选择拥有充足的 IP 段的子网,建议不少于/20,避免后期无法创建机器。
  • 容器子网和服务网段: 同样需要选择拥有充足 IP 的子网,建议不少于/20,避免后期无法创建Pod。
  • 服务转发模式: 务必选择 IPVS 模式。
注意:创建 CCE 集群时,建议取消勾选的“可观测和节点本地域解析加速等插件” 。以免消耗过多的节点资源,导致集群弹性伸缩异常。
  1. 点击创建集群,等待几分钟创建完成。
  2. 集群创建完成后,进入集群详情,插件中心 ,安装CCE 集群弹性引擎插件
注意:弹性插件部署时,选择 “小规模” 。以免CCE 的弹性伸缩组件占用过多的节点资源,导致安装失败。
  1. 进入集群配置中心网络配置 Tab ,开启 Pod 访问元数据 。确认后提交。
  1. 进入集群配置中心集群弹性伸缩 Tab ,开启 弹性缩容, 并勾选忽略 DaemonSet 类容器预分配的 CPU 和内存 。确认后提交。

步骤 3:创建CCE 集群公共节点池

参考概述▸,用户需要为 CCE 系统组件创建一个公共节点池,用于部署 CCE 系统组件。参考以下步骤创建符合要求的节点池。
  1. 进入步骤 1 创建的 CCE 集群详情,点击节点管理菜单创建节点池 。公共节点池建议选择至少 2 台 4c8G 的机型用于部署 CCE 系统组件。

步骤 4:创建 IAM 委托和 AutoMQ 专用 CCE 节点池

参考概述▸,用户需要创建 AutoMQ 独享的节点池以及对应的 IAM 委托,以便后续部署实例。参考以下步骤创建 IAM 委托以及符合要求的节点池。
  1. 前往 IAM 控制台,创建 IAM 委托,暂不授权。
  1. 进入步骤 1 创建的 CCE 集群详情,点击节点管理菜单创建节点池
  1. 参考下面的文档设置自定义参数,完成节点池创建。对于表格中没有说明的参数,请按照默认推荐值不要修改。
创建节点池时,只支持单可用区 或者三可用区 ,如果选择了其他数量的可用区,后期无法创建实例。
设置参数
取值说明
节点池名称
  • 说明:按照业务语义,填写一个有区分度的名称即可。
节点类型
  • 说明:指定节点池的机型,请参考文档概述▸。填写机型。

注意: AutoMQ 必须运行在指定机型的 VM 中,创建节点池如果选择了非预设的机型,后续无法使用该节点池。

可用区
  • 说明:根据实际 AutoMQ 集群的需求,选择一个三个可用区

注意:
AutoMQ 要求后续创建集群的可用区和节点池必须完全一致。因此,如果需要创建单可用区的 AutoMQ 集群,则此处创建单可用区节点池;如果需要创建三可用区 AutoMQ 集群,则此处同样创建三可用区节点池,两者不可混用。

委托名称
  • 说明: AutoMQ 集群需要访问 OBS、网络等云服务,因此需要授权节点池上述操作权限。需要用户创建一个独立的 IAM 委托,选择刚刚创建的 IAM 委托。

注意
创建 AutoMQ 专属的节点池时,建议创建新的 IAM 委托,后续在 AutoMQ 控制台为该委托分配相应的操作权限。如果复用了其他 IAM 委托可能会造成权限溢出。

污点
  • 说明:为防止 Kubernetes 集群内其他工作负载占用 AutoMQ 独占节点的资源,需要对 AutoMQ 独占节点池打上污点。
  • 污点的键是dedicated,值是 automq,效果是 NO_SCHEDULE。
  1. 为节点池绑定委托信息,委托是上一步创建的 IAM 委托。同时为节点池添加污点,污点的键是dedicated,值是 automq,效果是 NO_SCHEDULE。
  1. 节点池创建完成后,点击弹性伸缩开启指定可用区的弹性伸缩规则(可选,如不配置则需要手工添加节点)
设置节点池的弹性伸缩规则时,需要确保以下两个配置正确:节点数范围 :建议至少保留 1 台 ,范围根据后续 AutoMQ 集群的规模合理评估,如果设置太小,则导致无法创建足够的节点部署。规格选择: 务必把所有符合条件的可用区机型全部开启。
  1. 点击节点池的扩缩容菜单 ,为初始节点池扩容初始的节点容量。建议每个可用区扩容 1 个节点。
  1. 为 AutoMQ 使用的节点组创建 Placeholder Deployment 用于加速节点故障场景的 Failover 速度。
工作原理:Placeholder Deployment 的作用是在 Kubernetes 集群的节点上部署一个低优先级的“占位符”应用,预先占用若干节点。当 AutoMQ 集群的 Pod 所在节点出现故障时,可以快速抢占该 Placeholder 的节点,实现快速恢复。
部署 Placeholder Deployment 可以通过 kubectl 命令或者 Kubernetes 控制台进行操作。 首先点击链接,下载名为 automq-low-priority.yaml 的优先级申明文件,执行以下命令,创建优先级申明。

kubectl apply -f automq-low-priority.yaml

然后点击链接,下载 automq-cce-huawei-placeholder.yaml 文件。需要根据实际部署的节点池,修改其中的参数:
  • metadata.name : 建议修改成具有意义的 Placeholder 名称,例如 placeholder-for-nodegroup-A
  • replicas : Placeholder pod 预留数量,默认为 1,如果是多可用区部署,建议每个可用区保留 1 台机器,即数量设置为可用区的数量。
  • affinity.nodeAffinity : 用于选择 Placeholder 部署的节点,需要修改 matchExpressions 中的 keyvalues 来精确匹配 AutoMQ 的节点池。在示例的 yaml 文件中提供 2 个选项筛选节点。
    • node.kubernetes.io/pool-name :在 CCE 上使用 node.kubernetes.io/pool-name 标签筛选指定的节点池。
    • node.kubernetes.io/instance-type :在 CCE 上使用 node.kubernetes.io/instance-type 标签筛选指定的节点机型。
  • resources :
    • limits 的 cpu/memory 与 Node Group 具体的规格保持一致,比如2C16G 。
    • requests 的 cpu/memory 略小于 Node Group 具体的规格,比如实际占用 3/4 比例,确保 Placeholder Pod 能调度到额外 Node 并保证独占效果,避免集群其他 Pod 非预期占用导致实际 Failover 时因资源不足调度失败。
需要修改的参数片段,参考以下 yaml 文件:

metadata:
  # TODO: Replace with your custom name
  name: {Replace with your custom placeholder deployment name}
spec:
  # TODO: Replace with your custom node nums
  replicas: 1
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                - key: node.kubernetes.io/pool-name
                  operator: In
                  values:
                  # TODO: Replace with your custom Node Pool Name
                  - "Replace with your custom Node Pool Name"
                - key: node.kubernetes.io/instance-type
                  operator: In
                  values:
                  # TODO: Replace with your custom Node Pool VM Size
                  - "Replace with your custom Node Pool VM Size"
      containers:
        - name: placeholder
          resources:
          # TODO: Replace with your custom Memory and CPU size
            limits:
              cpu: 2000m
              memory: 16Gi
            requests:
              cpu: 1000m
              memory: 12Gi               

修改完成后,执行以下命令,安装 Placeholder。

kubectl apply -f automq-cce-huawei-placeholder.yaml

执行完成后,调用以下命令检查 Placeholder Pod 的状态,确保 Placeholder Pod 状态为 Running ,并观察它是否被调度到了期望的节点上。

kubectl get pods -l app=low-priority-placeholder -o wide

步骤 5:进入环境控制台,创建部署配置

首次进入 AutoMQ BYOC 控制台,需要创建部署配置,用于设置 Kubernetes 集群信息、OBS Bucket 等信息,之后才可创建实例。
  1. 复制步骤2 创建的 CCE 集群的集群 ID
  1. 找到 Kubectl 配置菜单,获取 Kubeconfig 配置文件。
点击 Kubectl 配置,设置为内网访问,下载 Kubeconfig 配置文件。
  1. 登录控制台,录入集群 ID 和 Kubeconfig等配置,点击下一步。
    1. 云账号 ID:填写当前的云账号主账号 ID,从华为云控制台我的凭证页面查看。
    2. 部署类型:选择 Kubernetes。
    3. Kubernetes 集群:填写 CCE 集群的集群 ID。
    4. Kubeconfig:填写上一步复制的内容。
    5. DNS ZoneId:填写用于部署 AutoMQ 的 Private DNS 的 ZoneId。
    6. Bucket 名称:填写用于部署 AutoMQ 存储消息的数据 Bucket,支持添加多个 OBS Bucket。
注意:DNS Zone Id 需要从浏览器地址栏获取,Bucket 不得和已有 Ops Bucket 重复。
  1. 填写云资源信息后,生成数据面 CCE 节点池需要授权的权限。参考控制台指引,创建两个自定义授权策略 。然后将授权策略绑定到步骤 4 创建的 AutoMQ IAM 委托,并录入该节点池委托名称点击下一步预览
因华为云 IAM 产品约束,AutoMQ 数据面集群需要分开创建并附加 OBS 权限和 ECS 相关权限。
  1. 预览部署配置信息,完成创建 。即可前往实例管理页面创建实例。