Kubernetes 搭建RabbitMq集群环境 电脑版发表于:2021/12/2 22:53 ![](https://img.tnblog.net/arcimg/hb/585b0f1ffa7f4c2095baa20c175b32a0.png) >#Kubernetes 搭建RabbitMq集群环境 [TOC] tn2>由于Kubectl RabbitMQ 插件在官方是基于krew进行安装的所以我们首先需要安装krew插件。 安装Krew插件 ------------ tn2>Krew 本身是一个kubectl通过 Krew 安装和更新的插件。 可通过该链接根据不同环境进行安装:https://krew.sigs.k8s.io/docs/user-guide/setup/install/ ####MacOS/Linux安装 tn2>1.确保git已安装。 2.运行此命令下载并安装krew。 ```bash ( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && KREW="krew-${OS}_${ARCH}" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && tar zxvf "${KREW}.tar.gz" && ./"${KREW}" install krew ) ``` tn2>3.将该`$HOME/.krew/bin`目录添加到 PATH 环境变量中。为此,请更新您的`.bashrc`或`.zshrc`文件并附加以下行: ```bash export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" ``` tn2>4.运行`kubectl krew`以检查安装。 ![](https://img.tnblog.net/arcimg/hb/490abec3634d4bee99d1c4c21648d472.png) 安装 kubectl-rabbitmq 插件 ------------ tn2>通过如下命令可以使用krew进行安装: ```bash kubectl krew install rabbitmq ``` tn2>验证安装情况 ```bash kubectl rabbitmq help ``` ![](https://img.tnblog.net/arcimg/hb/9d7b63f983254b1d8e95db6278766a8b.png) tn2>安装Rabbitmq Cluster Operator ```bash kubectl rabbitmq install-cluster-operator ``` tn2>安装 Cluster Operator 会创建一堆 Kubernetes 资源。 Operator 需要这些来创建、更新和删除 RabbitMQ 集群。 它将创建于一个新的命名空间中`rabbitmq-system`,我们可以通过`kubectl get all -n rabbitmq-system`查看创建情况。 ![](https://img.tnblog.net/arcimg/hb/353a4a961a5d48529715e31b2ba41c19.png) 创建Rabbitmq集群 ------------ tn2>接着我们通过`kubectl rabbitmq create mq1`命令创建一个`mq1`的rabbitmq集群。 ![](https://img.tnblog.net/arcimg/hb/8ea91b9a2dc047179e38c9efb3e475cf.png) tn2>接着我们查看`mq1`的集群情况 ```bash kubectl rabbitmq get mq1 ``` ![](https://img.tnblog.net/arcimg/hb/6997d174a4a346b49e22af173625748d.png) tn2>我们发现pod一直处于Pending状态,一般为Pending状态多半是没有可绑定的pv的引起的。 ![](https://img.tnblog.net/arcimg/hb/0d4dc5de4b64499db9af7ecb187f8711.png) tn2>我们先在所有的机器上创建`/mq1data`目录,并赋予权限 ```bash mkdir /mq1data chmod -R 777 /mq1data ``` tn2>接着我们编写一个PV。并进行创建。 ```bash vim pv.yaml ``` ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: mq1-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/mq1data" ``` ```bash kubectl apply -f pv.yaml ``` ![](https://img.tnblog.net/arcimg/hb/4b64b1baeac144368f996c3a69798999.png) tn2>再次查看已经没问题了 ![](https://img.tnblog.net/arcimg/hb/fef848c2ee6145b486c75884ac462eda.png) 查看Dashborad UI ------------ tn2>查看用户与密码 ```bash kubectl rabbitmq secrets mq1 ``` ![](https://img.tnblog.net/arcimg/hb/01bc6d743d194c01b8a9a1c96ca5f351.png) tn2>接着我们通过port-forward端口转发的方式,访问我们mq1的服务。 ```bash kubectl port-forward "service/mq1" 15672 --address='0.0.0.0' ``` tn2>访问地址为:host:15672 ![](https://img.tnblog.net/arcimg/hb/7ec759aed8fa4e2b8f28f094939bfe84.png) ![](https://img.tnblog.net/arcimg/hb/8cbd9de878294576a2ec0a402ac8269b.png) 关于集群创建的相关参数 ------------ ```bash kubectl rabbitmq create mq1 [arg] ``` | 参数名 | 描述 | | ------------ | ------------ | | -n | 命名空间 | | --replicas | 集群副本数 | | --service | 服务类型(默认为:ClusterIP) | | --image | pod的镜像 | | --image-pull-secret | 拉取镜像的secret | | --tls-secret | https的证书secret | | --storage-class | 指定的SC动态卷(建议在此之前指定好SC动态卷) | 更多管理请参考 ------------ tn2>https://www.rabbitmq.com/kubernetes/operator/quickstart-operator.html https://www.rabbitmq.com/kubernetes/operator/kubectl-plugin.html https://www.rabbitmq.com/kubernetes/operator/install-operator.html