k8s 部署单机rocketmq

参考:https://www.cnblogs.com/nuomm/p/17652344.html

 

1、创建rocketmq需要的pvc,sc根据实际修改。

pvc存储的是rocketmq的nameserver的日志、rocketmq的brocker的数据、dashboard的登录账号密码

vim rocketmq-pvc.yml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rocketmq-pvc
namespace: nmg-test spec: storageClassName:
"nfs-client" accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
kubectl apply -f rocketmq-pvc.yml

2、部署rocketmq的nameserver

部署deployment

vim rocketmq-nameserver-deployment.yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: rocketmq-nameserver
    k8s.kuboard.cn/layer: cloud
  name: rocketmq-namesrv
  namespace: nmg-test
spec:
replicas: 1 selector: matchLabels: app: rocketmq-nameserver template: metadata: labels: app: rocketmq-nameserver spec: # nodeName: tjgjc
-ai13 containers: - command: - sh - /home/rocketmq/rocketmq-5.3.1/bin/mqnamesrv env: - name: TZ value: Asia/Shanghai - name: JAVA_OPT_EXT value: '-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128m' - name: autoCreateTopicEnable value: 'true' image: 'apache/rocketmq:5.3.1' imagePullPolicy: IfNotPresent name: rocketmq-nameserver volumeMounts:
- mountPath: /home/rocketmq/logs name: rocketmq-pvc volumes: - name: rocketmq-pvc persistentVolumeClaim: claimName: rocketmq-pvc
kubectl apply -f rocketmq-nameserver-deployment.yml

 

Service部署

vim rocketmq-nameserver-svc.yml
---
apiVersion: v1
kind: Service
metadata:
  name: rocketmq-nameserver
  namespace: nmg-test
spec:
  ports:
    - name: nameserver-port
      port: 9876
      protocol: TCP
      targetPort: 9876
  selector:
    app: rocketmq-nameserver
  type: ClusterIP
kubectl apply -f rocketmq-nameserver-svc.yml

 

此时pv实际存储目录内容

 

3、部署rocketmq的broker

rocketmq的broker部署到K8s上,需要修改brockerIP1配置。 K8s 中,Broker 可能运行在 Pod 内,需明确指定 Service 或 NodePort 的访问地址。

configmap.yaml如下,需要修改brokerIP1 的值为broker的Service名称。

vim rocketmq-config.yml
---
apiVersion: v1
data:
  config: |-
    brokerClusterName = DefaultCluster
    brokerName = broker-c
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH
    brokerIP1 = rocketmq-broker
kind: ConfigMap
metadata:
  name: roketmq-config
  namespace: nmg-test
kubectl apply -f rocketmq-config.yml

 

rocketmq的broker部署的yaml文件如下:

/home/rocketmq/store是数据目录要挂载

vim rocketmq-broker-deployment.yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: rocketmq-broker
    k8s.kuboard.cn/layer: cloud
  name: rocketmq-broker
  namespace: nmg-test
spec:
  selector:
    matchLabels:
      app: rocketmq-broker
  template:
    metadata:
      labels:
        app: rocketmq-broker
    spec:
      containers:
        - command:
            - sh
            - /home/rocketmq/rocketmq-5.3.1/bin/mqbroker
            - '-n'
            - 'rocketmq-nameserver:9876'
            - '-c'
            - /home/rocketmq/rocketmq-5.3.1/conf/broker.conf
          env:
            - name: TZ
              value: Asia/Shanghai
            - name: JAVA_OPT_EXT
              value: '-Xms512M -Xmx512M -Xmn128m'
            - name: NAMESRV_ADDR
              value: 'rocketmq-nameserver:9876'
          image: 'apache/rocketmq:5.3.1'
          imagePullPolicy: IfNotPresent
          name: rocketmqbroker
          volumeMounts:
            - mountPath: /home/rocketmq/rocketmq-5.3.1/conf/broker.conf
              name: rocketmq-config
              subPath: broker.conf
            - mountPath: /home/rocketmq/store
              name: rocketmq-pvc
      # nodeName: tjgjc-ai13
      restartPolicy: Always
      volumes:
        - configMap:
            defaultMode: 420
            items:
              - key: config
                path: broker.conf
            name: roketmq-config
          name: rocketmq-config
        - name: rocketmq-pvc
          persistentVolumeClaim: 
            claimName: rocketmq-pvc
kubectl apply -f rocketmq-broker-deployment.yml

 

 Service部署

vim rocketmq-broker-svc.yml
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: rocketmq-broker
  name: rocketmq-broker
  namespace: nmg-test
spec:
  ports:
    - name: broker-port
      port: 10911
      protocol: TCP
      targetPort: 10911
    - name: 7cpk4a
      port: 10912
      protocol: TCP
      targetPort: 10912
    - name: ykdmnd
      port: 10909
      protocol: TCP
      targetPort: 10909
  selector:
    app: rocketmq-broker
  sessionAffinity: None
  type: ClusterIP
kubectl apply -f rocketmq-broker-svc.yml

 

此时pv实际存储目录内容

 

 

 4、部署rocketmq-dashboard

在pv的实际存储目录创建users.properties,创建登录账号密码

# 账号=密码,类型       0普通人员 1管理员
admin=sykj@2024,1

 

deployment部署

vim rocketmq-dashboard-deployment.yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: rocketmq-dashboard
  name: rocketmq-dashboard
  namespace: nmg-test
spec:
  selector:
    matchLabels:
      app: rocketmq-dashboard
  template:
    metadata:
      labels:
        app: rocketmq-dashboard
    spec:
      containers:
        - env:
            - name: TZ
              value: Asia/Shanghai
            - name: JAVA_OPTS
              value: >-
                -Drocketmq.namesrv.addr=rocketmq-nameserver:9876
                -Dcom.rocketmq.sendMessageWithVIPChannel=false
                -Drocketmq.config.loginRequired=true
                -Drocketmq.config.dataPath=/rocketmq-dashboard/config
          image: apacherocketmq/rocketmq-dashboard
          imagePullPolicy: IfNotPresent
          name: rocketmq-dashboard
          volumeMounts:
            - name: rocketmq-pvc
              mountPath: /rocketmq-dashboard/config
          livenessProbe:
            tcpSocket:
              port: 8080
      volumes:
        - name: rocketmq-pvc
          persistentVolumeClaim: 
            claimName: rocketmq-pvc
      dnsPolicy: ClusterFirst
      restartPolicy: Always
kubectl apply -f  rocketmq-dashboard-deployment.yml

 

service部署

vim rocketmq-dashboard-svc.yml
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    k8s.kuboard.cn/workload: rocketmq-dashboard
  labels:
    app: rocketmq-dashboard
  name: rocketmq-dashboard
  namespace: nmg-test
spec:
  ports:
    - name: port
      nodePort: 20880
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: rocketmq-dashboard
  type: NodePort
kubectl apply -f rocketmq-dashboard-svc.yml

 

此时pv实际存储目录内容

 

5、运行上面的yml文件后访问http://ip:20880登录dashboar

 

posted @ 2025-01-09 14:17  苦逼yw  阅读(807)  评论(0)    收藏  举报