k8s使用Helm部署RabbitMQ消息队列

Helm添加仓库

helm add repo bitnami https://charts.bitnami.com/bitnami

查看可使用的RabbitMQ的版本

[root@k8s-master-1 data]# helm search repo rabbitmq
NAME                                 CHART VERSION    APP VERSION    DESCRIPTION                                       
bitnami/rabbitmq                     8.21.0           3.9.5          Open source message broker software that implem...
bitnami/rabbitmq-cluster-operator    0.1.1            1.8.1          The RabbitMQ Cluster Kubernetes Operator automa...

拉取指定版本

[root@k8s-master-1 rabbitmq]# helm pull bitnami/rabbitmq --version=8.21.0
[root@k8s-master-1 rabbitmq]# ls
rabbitmq-8.21.0.tgz

解压文件

[root@k8s-master-1 rabbitmq]# tar -xf rabbitmq-8.21.0.tgz 
[root@k8s-master-1 rabbitmq]# ls
rabbitmq  rabbitmq-8.21.0.tgz
[root@k8s-master-1 rabbitmq]# tree rabbitmq
rabbitmq
├── Chart.yaml # 这个chart的版本信息
├── OWNERS
├── README.md
├── templates # 模板文件
│   ├── alerts.yaml
│   ├── configmap.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── NOTES.txt # 这个chart的信息
│   ├── pdb.yaml
│   ├── rolebinding.yaml
│   ├── role.yaml
│   ├── secret.yaml
│   ├── serviceaccount.yaml
│   ├── service-discovery.yaml
│   ├── servicemonitor.yaml
│   ├── service.yaml
│   └── statefulset.yaml
└── values.yaml # 配置全局变量或者一些参数

1 directory, 18 files

创建NameSpace

kubectl create rabbitmq

创建PV&PVC

[root@k8s-master-1 emqx]# vi persistent.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: rabbitmq-pv
  labels:
    type: rabbitmq-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: "/rabbitmq"
    server: 127.0.0.1
    readOnly: false

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rabbitmq-pvc
  namespace: rabbitmq
spec:
  storageClassName: nfs
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

运行rabbitmq集群

helm upgrade --install \
--set auth.username=your_user \ # 账号
--set auth.password=your_password \ # 密码
--set resources.limits.cpu=1 \
--set resources.limits.memory=2Gi \
--set resources.requests.cpu=1 \
--set resources.requests.memory=2Gi \
--set persistence.enable=true \
--set persistence.storageClass=nfs \
--set persistence.accessMode=ReadWriteMany \
--set persistence.existingClaim=rabbitmq-pvc \
--set persistence.size=10Gi \
--set service.type=NodePort \
--set service.nodePort=31670 \
--set service.tlsNodePort=31671
--set service.distNodePort=31672 \
--set service.managerNodePort=31673 \
--set service.metricsNodePort=31674 \
--set service.epmdNodePort=31675 \
rabbitmq rabbitmq \
--namespace=rabbitmq

查看集群

kubectl get svc,pod,ingress -n rabbitmq

补充

删除rabbitmq集群

helm -n rabbitmq uninstall rabbitmq

弹性伸缩

templates模板文件夹下面创建hpa.yaml
[root@k8s-master-1 templates]# vi hpa.yaml 
{{- if .Values.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: {{ include "rabbitmq.fullname" . }}-hpa
  labels:
    app: {{ include "rabbitmq.fullname" . }}-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: StatefulSet
    name: {{ include "rabbitmq.fullname" . }}
  minReplicas: {{ .Values.autoscaling.minReplicas }}
  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
  metrics:
    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
    - type: Resource
      resource:
        name: cpu
        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
    {{- end }}
    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
    - type: Resource
      resource:
        name: memory
        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
    {{- end }}
{{- end }}
编辑value.yaml,在最后添加如下代码
autoscaling:
  enabled: true
  minReplicas: 1
  maxReplicas: 5
  targetCPUUtilizationPercentage: 80
更新rabbitmq集群
helm upgrade --install \
--set auth.username=your_user \ # 账号
--set auth.password=your_password\ # 密码
--set resources.limits.cpu=1 \
--set resources.limits.memory=2Gi \
--set resources.requests.cpu=1 \
--set resources.requests.memory=2Gi \
--set persistence.enable=true \
--set persistence.storageClass=nfs \
--set persistence.accessMode=ReadWriteMany \
--set persistence.existingClaim=rabbitmq-pvc \
--set persistence.size=10Gi \
--set service.type=NodePort \
--set service.nodePort=31670 \
--set service.tlsNodePort=31671
--set service.distNodePort=31672 \
--set service.managerNodePort=31673 \
--set service.metricsNodePort=31674 \
--set service.epmdNodePort=31675 \
rabbitmq rabbitmq \
--namespace
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐