Skip to main content

部署到百度云 CCE

参考 概述▸,AutoMQ 支持部署到 Kubernetes 上。本文介绍 AutoMQ 部署到百度云 CCE 平台的安装过程。

本文中提及 AutoMQ 产品服务方、AutoMQ 服务方、AutoMQ,均特指 AutoMQ HK Limited及其附属公司。

操作流程

步骤 1:安装环境控制台

参考概述▸,AutoMQ 支持部署到 CCE 集群。在 CCE 部署模式下,首先仍然需要安装 AutoMQ 控制台,再通过控制台界面管理 CCE,将数据面集群部署到 CCE。

注意:

在 CCE 上 部署 AutoMQ 数据面集群,需要从公网环境拉取 Docker 镜像和 Helm Chart 产物。因此需要 VPC 环境支持通过 SNAT 等方式出公网。

在百度云上,需要通过云主机 BCC 镜像直接安装 AutoMQ 控制台。安装 AutoMQ 控制台的步骤如下:

  1. AutoMQ 控制台通过 IAM 角色授权访问云资源。因此在安装控制台机器之前,需要为 AutoMQ 控制台授予云资源的访问权限。操作步骤如如下,前往 IAM 控制台按如下步骤操作:

    1. 创建自定义授权策略, 授权策略内容参考下方文档。

    2. 创建自定义的 IAM 角色 ,选择授权类型为云产品 》BCC 实例

    3. 将授权策略附加到 IAM 角色


{
"id": "policy_8dc24a2639514662a4cc129f47dcb310",
"version": "v2",
"accessControlList": [
{
"service": "bce:cce",
"region": "bj",
"resource": [
"*"
],
"effect": "Allow",
"permission": [
"READ"
]
},
{
"service": "bce:ld",
"region": "bj",
"resource": [
"*"
],
"effect": "Allow",
"permission": [
"READ",
"OPERATE",
"FULL_CONTROL"
]
},
{
"service": "bce:network",
"region": "bj",
"resource": [
"*"
],
"effect": "Allow",
"permission": [
"READ",
"OPERATE",
"FULL_CONTROL"
]
},
{
"service": "bce:bos",
"region": "*",
"resource": [
"*"
],
"effect": "Allow",
"permission": [
"ListBuckets"
]
},
{
"service": "bce:bos",
"region": "*",
"resource": [
"*"
],
"effect": "Allow",
"permission": [
"READ",
"FULL_CONTROL",
"LIST"
]
}
]
}

  1. 前往 BCC 控制台,点击创建实例 。按照如下建议设置相关参数,完成 BCC 实例创建。

    1. 地域和可用区: 选择未来部署数据面集群所在的地域和可用区,保证VPC 内网通信。

    2. 实例配置: 建议至少选择 2 核 8 G的实例规格。

    3. 镜像类型: 选择自定义镜像,请提前联系 AutoMQ 技术人员获取 AutoMQ 控制台的主机镜像。

    4. 存储: 除去默认的系统盘之外还需要额外创建一块至少 40GB 的云磁盘(推荐通用型 SSD)。

    5. 私有网络: 选择数据面未来部署的 VPC,即使用 AutoMQ 的应用所在的 VPC。

    6. 安全组: 自行选择,需要注意设置入站规则,允许 8080 端口入规则。AutoMQ 控制台通过 8080 端口暴露 Web 服务。

  2. 实例创建完成后,选中该 BCC 实例,点击右侧更多操作设置 IAM 角色 。将上一步创建的 IAM 角色绑定到 AutoMQ 控制台所在的 BCC 实例。

  3. 登录控制台 ,即可进行下一步的初始化配置。

百度云 AutoMQ 控制台首次访问的初始用户名为 admin,初始密码为 BCC 实例的实例 ID。首次登录后需要立即修改密码。

步骤 2:创建 CCE 集群

参考概述▸,用户需要提前创建独立的 CCE 集群分配给 AutoMQ 使用。用户可访问百度云 CCE 产品控制台按下方步骤操作。

  1. 登录百度云 CCE 控制台。点击创建集群 ,选择标准托管集群。
  1. 按照建议选择计费模式、版本,集群规模建议至少选择 L50节点

网络配置部分需要参考下方要求设置:

  • 私有网络: 选择应用所在的 VPC网络,和控制台所在的网络保持一致。

  • API Server 访问: 选择自动创建负载均衡器。

  • API Server 子网: 选择预期安装的子网。

  • 容器子网: 选择用于部署 AutoMQ 实例的子网,建议选择单个子网或三个子网。

  1. 新建节点,用于部署 Kubernetes 系统组件。添加 Worker 节点时注意如下配置:

    • 节点数量:建议至少 2 个节点。

    • 节点规格:建议至少 4C8G 的 BCC 实例规格。

  1. 点击创建集群,等待几分钟创建完成。

  2. 集群创建完成后,进入集群详情,运维和管理 ,组件管理,安装CCE CSI CDS 存储插件

步骤 3:创建 IAM 角色和 AutoMQ 专用 CCE 节点池

参考概述▸,用户需要创建 AutoMQ 独享的节点池以及对应的 IAM 角色,以便后续部署实例。参考以下步骤创建 IAM 角色以及符合要求的节点池。

  1. 前往 IAM 控制台,创建 IAM 角色,暂不授权。
  1. 进入步骤 2 创建的 CCE 集群详情,点击节点管理菜单创建节点组
  1. 参考下面的文档设置自定义参数,完成节点组创建。对于表格中没有说明的参数,请按照默认推荐值不要修改。

创建节点组时,只支持单可用区 或者三可用区 ,如果选择了其他数量的可用区,后期无法创建实例。

设置参数
取值说明
节点组名称
  • 说明:按照业务语义,填写一个有区分度的名称即可。
节点配置
  • 说明:指定节点池的机型,请参考文档概述▸。填写机型。

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

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

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

污点
  • 说明:为防止 Kubernetes 集群内其他工作负载占用 AutoMQ 独占节点的资源,需要对 AutoMQ 独占节点池打上污点。
  • 污点的键是dedicated,值是 automq,效果是 NO_SCHEDULE。
  1. 为节点池绑定 IAM 角色信息,角色信息来自 上一步创建的角色名 。同时为节点池添加污点,污点的键是dedicated,值是 automq,效果是 NO_SCHEDULE。
  1. 点击创建节点组。

  2. 为 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-baidu-placeholder.yaml 文件。需要根据实际部署的节点池,修改其中的参数:

  • metadata.name : 建议修改成具有意义的 Placeholder 名称,例如 placeholder-for-nodegroup-A

  • replicas : Placeholder pod 预留数量,默认为 1,如果是多可用区部署,建议每个可用区保留 1 台机器,即数量设置为可用区的数量。

  • affinity.nodeAffinity : 用于选择 Placeholder 部署的节点,需要修改 matchExpressions 中的 keyvalues 来精确匹配 AutoMQ 的节点池。在示例的 yaml 文件中提供 2 个选项筛选节点。

    • ccs.bj.baidubce.com/node-pool :在 CCE 上使用 ccs.bj.baidubce.com/node-pool 标签筛选指定的节点池。

    • 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: ccs.bj.baidubce.com/node-pool
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-baidu-placeholder.yaml

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


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

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

首次进入 AutoMQ BYOC 控制台,需要创建部署配置,用于设置 Kubernetes 集群信息、Bucket 等信息,之后才可创建实例。

  1. 复制步骤2 创建的 CCE 集群的集群 ID
  1. 找到查看集群凭证菜单,获取 Kubeconfig 配置文件。

  2. 登录控制台,录入集群 ID 和 Kubeconfig等配置,点击下一步。

    1. 部署类型:选择 Kubernetes。

    2. Kubernetes 集群:填写 CCE 集群的集群 ID。

    3. Kubeconfig:填写上一步复制的内容。

    4. DNS ZoneId:填写用于部署 AutoMQ 的内网 DNS 的 ZoneId。

    5. Bucket 名称:填写用于部署 AutoMQ 存储消息的数据 Bucket,支持添加多个 BOS Bucket。

  1. 填写云资源信息后,生成数据面 CCE 节点池需要授权的权限。参考控制台指引,创建授权策略 。然后将授权策略绑定到步骤 3 创建的 AutoMQ IAM 角色,并录入该节点池角色名称点击下一步预览
  1. 预览部署配置信息,完成创建 。即可前往实例管理页面创建实例。