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

操作流程

步骤 1:安装环境控制台

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

步骤 2:创建 CAM 角色

AutoMQ 数据面集群需要独立的节点池,该节点池需要绑定独立的 CAM 角色用于访问云资源的权限验证。因此,在创建 TKE 集群之前,需要前往 CAM 控制台创建自定义角色。操作步骤如下:
  1. 前往 CAM 控制台,点击角色,新建角色, 选择腾讯云产品服务
  1. 选择产品服务 云服务器 CVM
  1. 输入自定义的角色名称,点击完成,创建自定义角色。记录角色名称,后续步骤 4 创建 TKE专属节点池需要配置角色名。

步骤 3:创建 TKE 集群

参考概述▸,用户需要提前创建独立的 TKE 集群分配给 AutoMQ 使用。用户可访问腾讯云 TKE 产品控制台按下方步骤操作。
  1. 登录腾讯云 TKE 控制台。点击创建集群
  1. 选择集群类型为标准集群。
  1. 填写基础配置 ,注意集群规格等信息,建议至少选择 L20 ,并开启自动升配。其他参数保持默认值即可。
建议至少选择 L20,管理 20 个左右节点,并开启自动升配。防止因 TKE 能力不足导致无法扩缩容。
  1. 填写网络配置, 选择正确的 VPC,网络插件选择推荐的 VPC-CNI,容器子网选择所有需要的可用区。
  1. 点击下一步,关闭非必须的 Prometheus 插件,完成创建

步骤 4:创建 TKE 公共节点池

参考概述▸,用户需要为 TKE 集群 创建一个公共节点池,用于部署 TKE 系统组件。参考以下步骤创建符合要求的节点池。
  1. 进入步骤 2 创建的 TKE 集群详情,点击节点菜单创建节点池
  1. 选择普通节点池类型, 参考下面的文档设置自定义参数,完成节点池创建。对于表格中没有说明的参数,请按照默认推荐值不要修改。
设置参数
取值说明
节点池名称
  • 说明:按照业务语义,填写一个有区分度的名称即可。
机型配置
  • 说明:建议至少选择 2c4G 的机型,用于部署 TKE 系统组件。
初始节点数量
  • 说明:根据 TKE 集群的规模,建议至少选择 2-3 台。

步骤 5:创建 AutoMQ 专用 TKE 节点池

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

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

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

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

CAM 角色
  • 说明: AutoMQ 集群需要访问 COS、网络等云服务,因此需要授权节点池上述操作权限。填写步骤 2 创建的 CAM 角色。
污点
  • 说明:为防止 Kubernetes 集群内其他工作负载占用 AutoMQ 独占节点的资源,需要对 AutoMQ 独占节点池打上污点。
  • 污点的键是dedicated,值是 automq,效果是 NO_SCHEDULE。
  1. 节点启动配置, 选择一个或三个子网,初始数量为 1。
  1. 填写运维功能设置, 选择开启弹性伸缩,节点数量设置至少为 1,弹性上限建议和 TKE 集群规格以及未来需要部署 AutoMQ 的机器规模一致。实例创建策略,选择多可用区打散。
  1. 节点池绑定 CAM 角色 ,信息来自 安装控制台后的输出参数 。然后点击创建节点池。 添加 AutoMQ 独占的污点。污点的键是dedicated,值是 automq,效果是 NO_SCHEDULE。
  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-tke-placeholder.yaml 文件。需要根据实际部署的节点池,修改其中的参数:
  • metadata.name : 建议修改成具有意义的 Placeholder 名称,例如 placeholder-for-nodegroup-A
  • replicas : Placeholder pod 预留数量,默认为 1,如果是多可用区部署,建议每个可用区保留 1 台机器,即数量设置为可用区的数量。
  • affinity.nodeAffinity : 用于选择 Placeholder 部署的节点,需要修改 matchExpressions 中的 keyvalues 来精确匹配 AutoMQ 的节点池。在示例的 yaml 文件中提供 2 个选项筛选节点。
    • eks.tke.cloud.tencent.com/nodegroup-id :在 TKE 上使用 eks.tke.cloud.tencent.com/nodegroup-id 标签筛选指定的节点池。
    • node.kubernetes.io/instance-type :在 TKE 上使用 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: eks.tke.cloud.tencent.com/nodegroup-id
                  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-tke-placeholder.yaml

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

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

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

首次进入 AutoMQ BYOC 控制台,需要创建部署配置,用于设置 Kubernetes 集群信息、OBS Bucket 等信息,之后才可创建实例。
  1. 复制步骤2 创建的 TKE 集群的集群 ID
  1. 找到 APIServer 配置菜单,获取 Kubeconfig 配置文件。
  1. 登录控制台,录入集群 ID 和 Kubeconfig 等配置,点击下一步。
    1. 云账号 ID:填写当前的云账号主账号 ID,从腾讯云控制台查看。
    2. 部署类型:选择 Kubernetes。
    3. Kubernetes 集群:填写 TKE 集群的集群 ID。
    4. Kubeconfig:填写上一步复制的内容。
    5. DNS ZoneId:填写用于部署 AutoMQ 的 Private DNS 的 ZoneId。
    6. Bucket 名称:填写用于部署 AutoMQ 存储消息的数据 Bucket,支持添加多个 COS Bucket。
  1. 填写云资源信息后,生成数据面 TKE 节点池需要授权的权限。参考控制台指引,创建自定义授权策略 。然后将授权策略绑定到步骤 2 创建的 AutoMQ CAM 角色,并录入该节点池角色名称点击下一步预览
  1. 预览部署配置信息,完成创建 。即可前往实例管理页面创建实例。