在这篇教程中,我们将先容如何通过 Helm 在 Kubernetes 集群中部署 RabbitMQ 高可用集群(HA)。我们将从下载和设置 Helm Chart 包开始,接着会先容一些常见错误的解决方案,以帮助你顺利完成部署。
步调 1:搜索并下载 RabbitMQ HA Helm Chart
首先,添加一些常见的 Helm 仓库,如 Bitnami、Aliyun 和 Azure 等
- helm repo add bitnami https://charts.bitnami.com/bitnami
- helm repo add stable http://mirror.azure.cn/kubernetes/charts
- helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
- helm repo add incubator https://charts.helm.sh/incubator
- helm repo update
复制代码 然后,我们必要在 Helm 仓库中搜索 RabbitMQ HA Chart。使用以下下令可以列出所有干系的 RabbitMQ Chart。
- helm search repo rabbitmq
复制代码 输出示例:
- NAME CHART VERSION APP VERSION DESCRIPTION
- aliyun/rabbitmq 0.6.21 3.7.3 Open source message broker software that implem...
- aliyun/rabbitmq-ha 1.0.0 3.7.3 Highly available RabbitMQ cluster, the open sou...
- bitnami/rabbitmq 15.2.3 4.0.5 RabbitMQ is an open source general-purpose mess...
- bitnami/rabbitmq-cluster-operator 4.4.2 2.12.0 The RabbitMQ Cluster Kubernetes Operator automa...
- stable/rabbitmq 0.6.21 3.7.3 Open source message broker software that implem...
- stable/rabbitmq-ha 1.0.0 3.7.3 Highly available RabbitMQ cluster, the open sou...
复制代码 选择 stable/rabbitmq-ha,然后使用 helm pull 下载该 Chart 包。
- helm pull stable/rabbitmq-ha
复制代码 解压下载的 Chart 包:
- tar -xvf rabbitmq-ha-1.0.0.tgz
- cd rabbitmq-ha/
复制代码 步调 2:修改 values.yaml 设置文件
在 Chart 解压后,我们可以找到 values.yaml 文件,修改此中的设置以满足我们的需求。
以下是关键设置项的修改示例:
- rabbitmqUsername: rabbitmq
- rabbitmqPassword: rabbitmq
- image:
- repository: docker-0.unsee.tech/rabbitmq
- tag: 3.7-alpine
- pullPolicy: IfNotPresent
- service:
- type: NodePort
- persistentVolume:
- enabled: false # 如果需要开启持久化存储,将此项改为 true
- accessModes:
- - ReadWriteMany
- size: 8Gi
复制代码 在这里,我们更改了 RabbitMQ 的用户名和暗码,还设置了 RabbitMQ 镜像的自界说地点。同时,我们设置了 NodePort 类型的服务,并禁用了长期化存储(你可以根据需求修改为启用)。
步调 3:安装 RabbitMQ HA
完成设置后,使用 Helm 安装 RabbitMQ HA 集群。
- helm install rabbitmq-ha ./rabbitmq-ha
复制代码 安装完成后,可以通过以下下令查看服务和 Pod 状态。
查看服务状态:
输出示例:
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d21h
- rabbitmq-ha-rabbitmq-ha NodePort 10.96.3.50 <none> 15672:32241/TCP,5672:31214/TCP,4369:32046/TCP 2m53s
复制代码 查看 Pod 状态:
输出示例:
- NAME READY STATUS RESTARTS AGE
- nfs-subdir-external-provisioner-dc68ff47f-g8k6n 0/1 ImagePullBackOff 0 47m
- rabbitmq-ha-rabbitmq-ha-0 1/1 Running 0 3m7s
- rabbitmq-ha-rabbitmq-ha-1 1/1 Running 0 84s
- rabbitmq-ha-rabbitmq-ha-2 1/1 Running 0 60s
复制代码 步调 4:浏览器访问 RabbitMQ 管理界面
RabbitMQ 管理界面可以通过 NodePort 服务进行访问,使用以下 IP 地点和端口:
- http://192.168.80.130:32241/
复制代码 登录账号暗码为:
常见错误及解决办法
错误 1:API 版本不兼容
如果在安装过程中碰到以下错误:
- Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "rabbitmq-ha-rabbitmq-ha" namespace: "" from "": no matches for kind "Role" in version "rbac.authorization.k8s.io/v1beta1"]
复制代码 分析: 这是由于 Kubernetes 1.16 版本后,许多 API 版本被更新或废弃,rbac.authorization.k8s.io/v1beta1 和 apps/v1beta1 已被废弃。
解决方法: 将 Helm Chart 中的 API 版本更新为实用于 Kubernetes 1.22 及以上版本的 API 版本,具体如下:
- rbac.authorization.k8s.io/v1(替换 v1beta1)
- apps/v1(替换 v1beta1)
你必要在 templates/ 目录下的资源界说文件中手动更新这些 API 版本。
错误 2:StatefulSet 的 selector 和 labels 不匹配
如果碰到以下错误:
- Error: INSTALLATION FAILED: StatefulSet.apps "rabbitmq-ha-rabbitmq-ha" is invalid: [spec.selector: Required value, spec.template.metadata.labels: Invalid value: map[string]string{"app":"rabbitmq-ha", "release":"rabbitmq-ha"}: `selector` does not match template `labels`]
复制代码 分析: 错误表明,StatefulSet 的 spec.selector 部分与 spec.template.metadata.labels 部分的内容不一致。
解决方法: 打开 statefulset.yaml 文件,确保 spec.selector.matchLabels 和 spec.template.metadata.labels 部分的标签一致。
比方,修改以下部分:
- selector:
- matchLabels:
- app: {{ template "rabbitmq-ha.name" . }}
- release: {{ .Release.Name }}
复制代码 同时确保 template.metadata.labels 部分的标签一致:
- labels:
- app: {{ template "rabbitmq-ha.name" . }}
- release: {{ .Release.Name }}
复制代码 完整的statefulset.yaml 示例:
结论
通过以上步调,你乐成地在 Kubernetes 集群上使用 Helm 部署了 RabbitMQ 高可用集群。你可以使用浏览器访问管理界面,并根据必要调解设置,处理常见的安装错误。在部署过程中,确保 Helm Chart 与 Kubernetes API 版本兼容,才能顺利完成安装。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |