VMware RabbitMQ for Kubernetes v1.4.1 安装指南

April 20, 2023

Co-written by Xiaoqing Wang and Chunyi Lyu.

         VMware 公司在RabbitMQ开源版的基础上,基于多种部署方式提供了VMware RabbitMQ商业版,包括OVAKubernetesTASOCI(docker image)等版本VMware RabbitMQ 在开源版的基础上,增加了Disaster Recovery(灾备)功能,提供了集群节点间的流量压缩功能,增强了整体的安全性.
         本文旨在向中文用户介绍 VMware RabbitMQ for Kubernetes v1.4.x 的在线安装过程和注意事项,以及它的访问方式。关于VMware RabbitMQ for Kubernetes 的最新版本和更多技术内容请访问官方文档:VMware RabbitMQ for Kubernetes Documentation.

         在部署 VMware RabbitMQ for Kubernetes之前,您需要准备一个Kubernetes集群:

  • 一个X86_64 环境的Kubernetes集群,至少一个Master节点,一个Work节点.
  • 一个Kubernetes 客户端,安装 kubectl 且能连接到k8s集群。如果是测试环境,也可以直接登录K8s Master节点进行操作.
  • Kubernates 集群需要配置StorageClass,最好设置默认的StorageClass.
  • VMware Tanzu Nework 几乎支持所有的 Kubernetes-compliant 平台,包括 GKE/AKS/TKG/TKGI 等等,本文使用的K8s 版本为 v1.23.10,一个master节点,两个work节点,部署在ubuntu x86_64系统上.

本文涉及的主要安装步骤如下:

  1. 接受EULA并获取基础工具包
  2. Kubernetes 环境准备
  3. VMware RabbitMQ Package 安装准备
  4. 安装 VMware RabbitMQ Package
  5. 创建和访问 VMware RabbitMQ 集群

接受EULA并获取基础工具包

         VMware RabbitMQ for k8s 支持在线安装和离线安装,本文仅涉及在线安装过程,此处仅需要从 Tanzu Network 下载基础工具包.

如果您还没有Tanzu Network 账号,请访问 https://network.tanzu.vmware.com/ 使用邮箱免费注册.

接受EULA的方法

  1. 登录到 VMware Tanzu Network 分别搜索 Cluster Essentials for VMware Tanzu VMware RabbitMQ for Kubernetes(或直接点击链接)
  2. Cluster Essentials for VMware Tanzu 为例,如下图所示,点击黄色警告框中的Click here to sign the EULA链接,并在弹出页面中点击”Agree“按钮。如果看不到黄色警告框,则证明EULA已经接受。接受EULA后,即可下载 Cluster Essentials.
  3. 在线安装无需下载 VMware RabbitMQ for Kubernetes,但仍需要访问它的产品页面并接受EULA(方法与步骤 2相同 ).

 

Kubernetes 环境准备

在部署 VMware RabbitMQ Package 之前,您需要先在K8s上部署 Cluster Essentials for VMware。请根据您的k8s版本,选择合适的 Cluster Essentials版本。如果您的k8s版本在v1.20~v1.24之间,可以选择 Cluster Essentials v1.3.x;如果k8s版本在 v1.22~v1.25之间,可以选择Cluster Essentials v1.4.1。本文使用 k8s v1.23.10,选择使用 Cluster Essentials v1.4.1。点击此链接,登录 Tanzu Network并下载 tanzu-cluster-essentials-linux-amd64-1.4.1.tgz.

关于 Cluster Essentials for VMware 的最新版本和更多内容,请访问官方文档:Cluster Essentials for VMware Tanzu Documentation.

Cluster Essentials 安装步骤

1.将下载后 tanzu-cluster-essentials-linux-amd64-1.4.1.tgz 上传至k8s客户端(kubectl).

2.创建目录(目录名可自定义)并解压:

root@client:~# mkdir  /opt/tanzu-cluster-essentials
root@client:~# tar -zxvf tanzu-cluster-essentials-linux-amd64-1.4.1.tgz -C  /opt/tanzu-cluster-essentials

3.执行安装:

请把下面命令行中的“YourAccount”“YourPassword”更换为您的Tanzu Network账号和密码.

root@client:/opt/tanzu-cluster-essentials# cd /opt/tanzu-cluster-essentials
root@client:/opt/tanzu-cluster-essentials# export INSTALL_BUNDLE=registry.tanzu.vmware.com/tanzu-cluster-essentials/cluster-essentials-bundle@sha256:2354688e46d4bb4060f74fca069513c9b42ffa17a0a6d5b0dbb81ed52242ea44
root@client:/opt/tanzu-cluster-essentials# export INSTALL_REGISTRY_HOSTNAME=registry.tanzu.vmware.com
root@client:/opt/tanzu-cluster-essentials# export INSTALL_REGISTRY_USERNAME=YourAccount@mail.com
root@client:/opt/tanzu-cluster-essentials# export INSTALL_REGISTRY_PASSWORD=YourPassword
root@client:/opt/tanzu-cluster-essentials# ./install.sh --yes

安装结束后,会看到“Succeeded”的提示。

4.确认安装成功:

确认kap-controller-* secretgen-controller-* PodsSTATUSRunning.

root@client:/opt/tanzu-cluster-essentials# kubectl get all -n kapp-controller && kubectl get all -n secretgen-controller
NAME                                   READY   STATUS    RESTARTS   AGE
pod/kapp-controller-7c75b57c6c-wm2wf   2/2     Running   0          62m

NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/packaging-api   ClusterIP   10.99.125.69   <none>        443/TCP   62m

NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/kapp-controller   1/1     1            1           62m

NAME                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/kapp-controller-7c75b57c6c   1         1         1       62m
NAME                                        READY   STATUS    RESTARTS   AGE
pod/secretgen-controller-6fbfb976d7-vqzmq   1/1     Running   0          18m

NAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/secretgen-controller   1/1     1            1           18m

NAME                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/secretgen-controller-6fbfb976d7   1         1         1       18m

5. kapp复制到 /usr/local/bin,并授予可执行权限。

root@client:/opt/tanzu-cluster-essentials# cp kapp /usr/local/bin/kapp
root@client:/opt/tanzu-cluster-essentials# chmod +x /usr/local/bin/kapp

6.确认kapp 可以正常使用:

root@client:~# kapp version

kapp version 0.54.3
Succeeded

VMware RabbitMQ Package 安装准备

提供 imagePullSecrets

创建一个Secret,它包含访问Tanzu Network的账号和密码。然后,通过SecretExport 向安装 VMware RabbitMQ 的任意 namespace 提供(exports) imagePullSecret.

创建SecretsecretExportyaml文件,如下所示:

vi registry-creds.yml

---
apiVersion: v1
kind: Secret
metadata:
  name: tanzu-rabbitmq-registry-creds     # could be any name
  namespace: secrets-ns  # could be any namespace
type: kubernetes.io/dockerconfigjson 
stringData:
  .dockerconfigjson: |
    {
      "auths": {
        "registry.tanzu.vmware.com": {
          "username": "youraccount@mail.com", # your account name.
          "password": "yourpassword",         # your password.
          "auth": ""
        }
      }
    }
---
apiVersion: secretgen.carvel.dev/v1alpha1
kind: SecretExport
metadata:
  name: tanzu-rabbitmq-registry-creds       # must match source secret name
  namespace: secrets-ns  # must match source secret namespace
spec:
  toNamespaces:
  - "*"  # star means export is available for all namespaces

注意:

a.) Secret/SecretExport namespace都是“secrets-ns”,您可以自定义namespace的名字,但要确保它们的namespace相同.

b.) 请将.dockerconfigjson下的“username”“passowrd”替换为您的TanzuNetwork的账号密码.

执行 yaml 文件

root@client:~# kubectl create namespace secrets-ns

namespace/secrets-ns created

root@client:~# kubectl apply -f registry-creds.yml

secret/tanzu-rabbitmq-registry-creds created
secretexport.secretgen.carvel.dev/tanzu-rabbitmq-registry-creds created

安装 PackageRespository

1.创建 PackageRepository yaml文件

vi tanzu-rabbitmq-repo.yml

apiVersion: packaging.carvel.dev/v1alpha1
kind: PackageRepository
metadata:
  name: tanzu-rabbitmq-repo
  namespace: vmware-rabbitmq
spec:
  fetch:
    imgpkgBundle:
      # Replace BUNDLE_VERSION with the release version
      image: registry.tanzu.vmware.com/p-rabbitmq-for-kubernetes/tanzu-rabbitmq-package-repo:1.4.1

注意:

a.) 您可以把 “1.4.1”替换为其他有效版本.

b.) 本例将PackageRepository创建在 vmware-rabbitmq 命名空间(namespace).

2.使用下面的命令部署 PackageRepository 对象.

# 创建Namespace
root@client:~# kubectl create namespace vmware-rabbitmq

namespace/vmware-rabbitmq created

# vmware-rabbimq 命名空间下部署 vmware rabbitmq repo.
root@client:~# kapp deploy -a tanzu-rabbitmq-repo -f tanzu-rabbitmq-repo.yml -y

Target cluster 'https://192.168.126.90:6443' (nodes: master, 2+)

Changes

Namespace        Name                 Kind               Age  Op      Op st.  Wait to    Rs  Ri 
vmware-rabbitmq  tanzu-rabbitmq-repo  PackageRepository  -    create  -       reconcile  -   - 

Op:      1 create, 0 delete, 0 update, 0 noop, 0 exists
Wait to: 1 reconcile, 0 delete, 0 noop

12:23:25PM: ---- applying 1 changes [0/1 done] ----
12:23:25PM: create packagerepository/tanzu-rabbitmq-repo (packaging.carvel.dev/v1alpha1) namespace: vmware-rabbitmq
12:23:25PM: ---- waiting on 1 changes [0/1 done] ----
12:23:25PM: ongoing: reconcile packagerepository/tanzu-rabbitmq-repo (packaging.carvel.dev/v1alpha1) namespace: vmware-rabbitmq
12:23:25PM:  ^ Waiting for generation 1 to be observed
12:23:28PM: ongoing: reconcile packagerepository/tanzu-rabbitmq-repo (packaging.carvel.dev/v1alpha1) namespace: vmware-rabbitmq
12:23:28PM:  ^ Reconciling
12:24:01PM: ok: reconcile packagerepository/tanzu-rabbitmq-repo (packaging.carvel.dev/v1alpha1) namespace: vmware-rabbitmq
12:24:01PM: ---- applying complete [1/1 done] ----
12:24:01PM: ---- waiting complete [1/1 done] ----

Succeeded

3.验证 packages 是否安装成功,以及它们的版本

root@client:~# kubectl get packages -A

NAMESPACE         NAME                                               PACKAGEMETADATA NAME                     VERSION     AGE
vmware-rabbitmq   auditlogger.rabbitmq.tanzu.vmware.com.0.4.0        auditlogger.rabbitmq.tanzu.vmware.com    0.4.0       5m48s
vmware-rabbitmq   cert-manager.rabbitmq.tanzu.vmware.com.1.5.3+rmq   cert-manager.rabbitmq.tanzu.vmware.com   1.5.3+rmq   5m48s
vmware-rabbitmq   rabbitmq.tanzu.vmware.com.1.2.0                    rabbitmq.tanzu.vmware.com                1.2.0       5m48s
vmware-rabbitmq   rabbitmq.tanzu.vmware.com.1.2.1                    rabbitmq.tanzu.vmware.com                1.2.1       5m48s
vmware-rabbitmq   rabbitmq.tanzu.vmware.com.1.2.2                    rabbitmq.tanzu.vmware.com                1.2.2       5m48s
vmware-rabbitmq   rabbitmq.tanzu.vmware.com.1.2.3                    rabbitmq.tanzu.vmware.com                1.2.3       5m48s
vmware-rabbitmq   rabbitmq.tanzu.vmware.com.1.3.0                    rabbitmq.tanzu.vmware.com                1.3.0       5m48s
vmware-rabbitmq   rabbitmq.tanzu.vmware.com.1.3.1                    rabbitmq.tanzu.vmware.com                1.3.1       5m48s
vmware-rabbitmq   rabbitmq.tanzu.vmware.com.1.3.2                    rabbitmq.tanzu.vmware.com                1.3.2       5m48s
vmware-rabbitmq   rabbitmq.tanzu.vmware.com.1.4.0                    rabbitmq.tanzu.vmware.com                1.4.0       5m48s
vmware-rabbitmq   rabbitmq.tanzu.vmware.com.1.4.1                    rabbitmq.tanzu.vmware.com                1.4.1       5m48s

如果安装失败,在重新安装之前要删除旧的组件:

# 查看失败原因
kubectl describe packagerepository/tanzu-rabbitmq-repo -n vmware-rabbitmq

# 删除旧的组件
kapp delete -a tanzu-rabbitmq-repo

创建 ServiceAccount

安装 VMware RabbitMQ Package,您需要先创建一个有足够权限的 Service Account,主要包括三个步骤:

  • 创建一个ClusterRole.
  • vmware-rabbitmq 命名空间(namespace)下创建一个名为 “tanzu-rabbitmq” ServiceAccount.
  • 创建一个 ClusterRoleBinding,将ClusterRole的权限赋予新创建的ServiceAccount.

1.上述操作全部定义在ServiceAccount yaml 文件中,您可以通过下面的链接获取 ServiceAccount yaml 文件.

https://docs.vmware.com/en/VMware-RabbitMQ-for-Kubernetes/1.4/rmq/GUID-_serviceaccount.yml

2. ServiceAccount yaml 文件的基础上,您可以修改yaml 文件ServiceAccount 的两处namespace,在本例中使用“vmware-rabbitmq”命名空间.

如下面的代码所示 (注意添加注释的行)

vi service-account.yml

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tanzu-rabbitmq
  namespace: vmware-rabbitmq # your name space
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tanzu-rabbitmq-crd-install-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: tanzu-rabbitmq-crd-install
subjects:
- kind: ServiceAccount
  name: tanzu-rabbitmq
  namespace: vmware-rabbitmq # your name space

3.执行 yaml文件:

kubectl apply -f service-account.yml

如果执行出错,在重试之前,请先删除旧的对象:

kubectl delete -f service-account.yml

安装 cert-manager

在您安装 VMware RabbitMQ Package 之前,还需要在K8S集群上安装cert-manager. VMware RabbitMQ for Kubernetes 需要 cert-manager v1.5.0 或更高版本,在本例中使用cert-manager v1.5.3.

使用下面的命令检查您的K8S集群是否已安装了cert-manager

root@client:~# kubectl api-resources | grep 'cert-manager'

如果没有安装,请使用下面的命令在线安装 GitHub发行的cert-manager v1.5.3.

root@client:~# kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.5.3/cert-manager.yaml

安装 VMware RabbitMQ Package

接下来,我们就可以开始安装 VMware RabbitMQ Package了, 它包括了 VMware RabbitMQ Cluster Operator, Message Topology Operator, 以及 Standby Replication Operator

具体步骤如下:

1.创建 PackageInstall yaml 文件

vi package-install.yml

apiVersion: packaging.carvel.dev/v1alpha1
kind: PackageInstall
metadata:
  name: tanzu-rabbitmq
  namespace: vmware-rabbitmq # Replace with namesapce name
spec:
  serviceAccountName: tanzu-rabbitmq # Replace with service account name
  packageRef:
    refName: rabbitmq.tanzu.vmware.com
    versionSelection:
      constraints: 1.4.1 # Replace with release version

注意:

a.) 在本例中 PackageInstall 对象创建在“vmware-rabbitmq”命名空间下.

b.) serivceAccountName 应填写创建 ServiceAccount时指定的名称“tanzu-rabbitmq”.

c.) constraints 可以指定其他版本号。

2.执行yaml 文件,部署 PackageInstall:

kapp deploy -a tanzu-rabbitmq -f package-install.yml -y

注意,虽然 PackageInstall 对象是部署在 vmware-rabbitmq 命名空间下的,但是Operators默认是被安装在 rabbitmq-system 命名空间下的,当然你也可以改变Operaters的命名空间,具体方法请参考官方文档,点击此链接并搜索 "rabbitmq-system" .

3.确认安装成功:

使用下面的命令确认“rabbitmq-system” 命名空间下的三个pod状态均为Running.

root@master:~# kubectl get pod -n rabbitmq-system

NAME                                           READY   STATUS    RESTARTS            AGE
messaging-topology-operator-788f7bbb77-bbhd7   1/1     Running   1 (<invalid> ago)   8h
rabbitmq-cluster-operator-746dffb948-f7wb6     1/1     Running   1 (<invalid> ago)   8h
standby-replication-operator-5469d694f-nvsrf   1/1     Running   1 (<invalid> ago)   8h

如果安装失败,可以使用下面的命令查看问题原因,删除失败对象并重试:

# 查看失败原因
kubectl describe PackageInstall/tanzu-rabbitmq -n vmware-rabbitmq
# 删除 PackageInstall
kapp delete -a tanzu-rabbitmq

创建和访问 RabbitMQ 集群

下面我们就可以创建 RabbitMQ Cluster了。在此过程中,因为需要从Tanzu Network 在线拉取 VMware RabbitMQ 容器镜像,所以必须要提供 imagePullSecrets.

创建 image-pull-secret

本文计划将RabbitMQ Cluster部署在“vmware-rabbitmq”命名空间下,所以在此命名空间下需要创建imagePullSecrets

请注意,在前面 “VMware RabbitMQ Package 安装准备的章节,我们已经创建了名为“tanzu-rabbitmq-registry-creds”secrets,并把它Export 到所有的namespace。所以,在下面的yaml文件中,我们可以使用占位符的方式创建一个同名的Secret对象,把它指向前面步骤创建的"secrets-ns/tanzu-rabbitmq-registry-creds".

vi tanzu-rabbitmq-image-pull-creds.yml

---
apiVersion: v1
kind: Secret
metadata:
  name: tanzu-rabbitmq-registry-creds
  namespace: vmware-rabbitmq
  annotations:
    secretgen.carvel.dev/image-pull-secret: "secrets-ns/tanzu-rabbitmq-registry-creds"
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: e30K

执行 yaml 文件,创建image-pull-secret.

kubectl apply -f tanzu-rabbitmq-image-pull-creds.yml

创建 RabbitMQ Cluster

1.创建集群定义的yaml文件

在下面的yaml文件中,定义了一个三节点的 RabbitMQ 集群.

vi test-rabbit-cluster.yml

apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
  name: test-rabbit-cluster
  namespace: vmware-rabbitmq
spec:
  replicas: 3
  imagePullSecrets:
  - name: tanzu-rabbitmq-registry-creds
  service:
    type: NodePort

注意:

a. ) raplicas 参数决定了 RabbitMQ Cluster 的节点数量.

b.) sepc.imagePullSecrets 要填写上个步骤在“vmware-rabbitmq”命名空间下创建的Secret名称.

c.) 为了便于通过management UI 验证结果,spec.service.type 使用了NodePort方式。除了NodePort之外,VMware RabbitMQ 还支持ClusterIP/LoadBalancer.

d.) VMware RabbitMQ Pods 默认分配的CPU/内存资源如下,您可以根据需要,在Yaml文件中添加”resources:”定义,并对参数进行修改:

...
spec:
  resources:
    requests:
      cpu: 1000m  # 默认值
      memory: 2Gi # 默认值
    limits:
      cpu: 2000m  # 默认值
      memory: 2Gi # 默认值
...

e.) VMware RabbitMQ Pods 默认使用 Defalult StoreageClass,分配的存储空间为10G。如果k8s没有设置 Default StoreageClass,必须要在Yaml文件中指定 spec.persistence.storageClassName.

...
spec:
  persistence:
     storageClassName: nfs-storage
     storage: 10Gi  # 默认为 10GB
...

f.) 关于RabbitMQ Cluster yaml 文件的更多参考样例,请访问如下链接:

cluster-operator/docs/examples at main · rabbitmq/cluster-operator · GitHub

2.执行 yaml 文件

#创建 rabbitmq 集群
root@client:~# kubectl apply -f test-rabbit-cluster.yml 

rabbitmqcluster.rabbitmq.com/test-rabbit-cluster created

3.验证集群成功创建:

root@client:~# kubectl get pod -n vmware-rabbitmq

NAME                           READY   STATUS    RESTARTS   AGE
test-rabbit-cluster-server-0   1/1     Running   0          2m
test-rabbit-cluster-server-1   1/1     Running   0          2m
test-rabbit-cluster-server-2   1/1     Running   0          2m

访问和管理 RabbitMQ Cluster

1.应用(RabbitMQ客户端)访问消息队列(5672端口)

您可以通过如下命令查看RabbitMQ Cluster SVC IPPORTS,应用系统(RabbitMQ客户端)可以通过内部IPPORTS访问RabbitMQ Broker如果应用系统没有部署在同一K8S集群,则您需要使用K8S节点IPNodePort映射后的端口号(本例为30105)来访问.

root@client:~# kubectl get svc -n vmware-rabbitmq

NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                          AGE
test-rabbit-cluster         NodePort    10.101.66.46   <none>        5672:30105/TCP,15672:31796/TCP,15692:31315/TCP   35m
test-rabbit-cluster-nodes   ClusterIP   None           <none>        4369/TCP,25672/TCP                               35m

2.访问Management UI

如果您希望通过客户端浏览器(Chrome)访问 RabbitMQ Management UI,可以通过如下命令获取15672映射出的端口号(本例为31796),然后使用URL “http://k8s_node_ip:31796访问即可。 如果您的RabbitMQ集群 services.type 使用的是ClusterIP,则需要使用 kubectl port-forward(或其他方式)15672的端口映射出来,然后再通过客户端浏览器访问。

root@client:~# kubectl get svc -n vmware-rabbitmq

NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                          AGE
test-rabbit-cluster         NodePort    10.101.66.46   <none>        5672:30105/TCP,15672:31796/TCP,15692:31315/TCP   35m
test-rabbit-cluster-nodes   ClusterIP   None           <none>        4369/TCP,25672/TCP                               35m

通过下面的命令获取RabbitMQ集群默认的用户名和密码.

# 获取test-rabbitmq-clustersecrets的名字:test-rabbit-cluster-default-user
root@client:~# kubectl get secret -n vmware-rabbitmq

NAME                                     TYPE                                  DATA   AGE
default-token-gpbzd                      kubernetes.io/service-account-token   3      14h
tanzu-rabbitmq-fetch-0                   kubernetes.io/dockerconfigjson        1      11h
tanzu-rabbitmq-registry-creds            kubernetes.io/dockerconfigjson        1      147m
tanzu-rabbitmq-repo-fetch-0              kubernetes.io/dockerconfigjson        1      14h
tanzu-rabbitmq-token-pjgsb               kubernetes.io/service-account-token   3      12h
test-rabbit-cluster-default-user         Opaque                                7      103m
test-rabbit-cluster-erlang-cookie        Opaque                                1      103m
test-rabbit-cluster-server-token-qm6z7   kubernetes.io/service-account-token   3      103m

# 获取默认用户名
root@client:~# kubectl get secret test-rabbit-cluster-default-user -o jsonpath='{.data.username}' -n vmware-rabbitmq | base64 –decode

default_user_WrKHy6mzuciPuVE_4JV

# 获取密码
root@client:~# kubectl get secret test-rabbit-cluster-default-user -o jsonpath='{.data.password}' -n vmware-rabbitmq | base64 –decode

2C8R46R9CCoJgEEkDnO4x-5l9ZR7ohc8

使用 user/passworddefault_user_WrKHy6mzuciPuVE_4JV / 2C8R46R9CCoJgEEkDnO4x-5l9ZR7ohc8)登录 RabbitMQ Management UI http://k8s_node_ip:31796/ ),在Overview页面您可以看到集群中每个节点的状态.

Title: fig:

3.登录 RabbitMQ Pod.

使用下面的命令登录Pod,可以执行rabbitmqctl /rabbitmqadmin 命令.

# 查看 RabbitMQ Cluster Pods 名称
root@client:~# kubectl get pod -n vmware-rabbitmq

NAME                           READY   STATUS    RESTARTS   AGE
test-rabbit-cluster-server-0   1/1     Running   0          133m
test-rabbit-cluster-server-1   1/1     Running   0          133m
test-rabbit-cluster-server-2   1/1     Running   0          133m

# 登录 Pod: test-rabbit-cluster-server-0
root@client:~# kubectl exec -it test-rabbit-cluster-server-0 -n vmware-rabbitmq -- /bin/bash

Defaulted container "rabbitmq" out of: rabbitmq, setup-container (init)

# 使用 rabbitmqctl 命令查看 cluster 状态
rabbitmq [ ~ ]$ rabbitmqctl cluster_status

Cluster status of node rabbit@test-rabbit-cluster-server-0.test-rabbit-cluster-nodes.vmware-rabbitmq ...
Basics
Cluster name: test-rabbit-cluster
Disk Nodes
rabbit@test-rabbit-cluster-server-0.test-rabbit-cluster-nodes.vmware-rabbitmq
rabbit@test-rabbit-cluster-server-1.test-rabbit-cluster-nodes.vmware-rabbitmq
rabbit@test-rabbit-cluster-server-2.test-rabbit-cluster-nodes.vmware-rabbitmq
.....
# 使用 rabbitmqadmin 命令查看节点
rabbitmq [ ~ ]$ rabbitmqadmin list nodes

+-------------------------------------------------------------------------------+------+-----------+
|                                     name                                      | type | mem_used  |
+-------------------------------------------------------------------------------+------+-----------+
| rabbit@test-rabbit-cluster-server-0.test-rabbit-cluster-nodes.vmware-rabbitmq | disc | 150994944 |
| rabbit@test-rabbit-cluster-server-1.test-rabbit-cluster-nodes.vmware-rabbitmq | disc | 152858624 |
| rabbit@test-rabbit-cluster-server-2.test-rabbit-cluster-nodes.vmware-rabbitmq | disc | 151732224 |
+-------------------------------------------------------------------------------+------+-----------+

通过上面的步骤,我们就完成了 VMware RabbitMQ for kubernetes 的部署和基本配置,并创建了一个三节点 RabbitMQ Cluster。接下来,您就可以正式开启对VMware RabbitMQ for k8s的探索之旅了,感受VMware RabbitMQ Operator为日常运维和管理带来的便利性.

在下一篇文章中,我们将讲解如何基于 VMware RabbitMQ for Kubernetes 配置DR(Disaster Recovery),敬请期待.

Previous
VMware RabbitMQ for Kubernetes v1.4.1 DR 配置指南
VMware RabbitMQ for Kubernetes v1.4.1 DR 配置指南

VMware RabbitMQ 为用户提供了Disaster Recovery功能(也称为 Warm Standby Replication) ,本文在上一篇“VMware RabbitMQ for Kuberne...

Next
Tanzu Application Platform 推出全新功能,可提升跨多个集群和云环境的用户体验
Tanzu Application Platform 推出全新功能,可提升跨多个集群和云环境的用户体验