k8s 部署 RocketQM

  • 配置文件
cat <<END >broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
END 
  • 创建
kubectl -n zhihui-hr create configmap broker-conf --from-file=./broker-conf

在这里插入图片描述

  • 先部署rocketmqname
cat <<END> rocketmq-ns.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rocketmq-ns
  namespace: zhihui-hr
  labels:
    app: rocketmq-ns
spec:
  replicas: 1
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: rocketmq-ns
  template:
    metadata:
     labels:
      app: rocketmq-ns
    spec:
      containers:
      - name: rocketmq-nameserver
        image: foxiswho/rocketmq:4.8.0 
        #image: apacherocketmq/rocketmq:latest
        command: ["sh","mqnamesrv"]
        imagePullPolicy: IfNotPresent
        env:
          - name: JAVA_OPT_EXT
            value: '-Xmx4096m -Xms960m -Xmn1048m'
        resources:
          requests:
            cpu: 1000m
            memory: 512Mi
          limits:
            cpu: 6000m
            memory: 4024Mi
        ports:
          - containerPort: 9876
        volumeMounts:
          - mountPath: /home/rocketmq/logs
            name: namesrvlogs
          - mountPath: /etc/localtime
            name: timezone
            readOnly: true
      volumes:
      - name: namesrvlogs
        emptyDir: {}
      - name: namesrvstore 
        emptyDir: {}
      - name: timezone
        hostPath:
          path: /etc/localtime

---
apiVersion: v1
kind: Service
metadata:
  name: rocketmq-ns
  namespace: zhihui-hr
spec:
  clusterIP: None
  ports:
    - port: 9876
      targetPort: 9876
  selector:
    app: rocketmq-ns
---
apiVersion: v1
kind: Service
metadata:
  name: rocketmq-no
  namespace: zhihui-hr
spec:
  type: NodePort
  ports:
    - port: 9876
      targetPort: 9876
      nodePort: 31211
  selector:
    app: rocketmq-ns
END
  • 再部署 broker,本次使用的是云提供的csi动态存储
cat <<END>broker.yaml
apiVersion: apps/v1   
kind: Deployment
metadata:
  name: rocketmq-broker
  namespace: zhihui-hr
  labels:
    app: rocketmq-broker  
spec:
  replicas: 1
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: rocketmq-broker
  template:
    metadata:
     labels:
      app: rocketmq-broker
    spec:
      containers:
      - name: rocketmq-broker
        image: foxiswho/rocketmq:4.8.0 
        #image: apacherocketmq/rocketmq:latest
        command: ["sh","mqbroker", "-n","rocketmq-ns:9876","-c","/home/rocketmq/conf/broker.conf"]
        imagePullPolicy: IfNotPresent
        env:
          - name: JAVA_OPT_EXT
            value: '-Xmx4096m -Xms960m -Xmn1048m'
        resources:
          requests:
            memory: 2024Mi
            cpu: 1024m
          limits:
            memory: 6024Mi
            cpu: 6000m
        securityContext:
          privileged: true
          runAsUser: 0
        ports:
          - containerPort: 10909
          - containerPort: 10911
        volumeMounts:
          - mountPath: /home/rocketmq/logs
            name: brokerlogs
          - mountPath: /home/rocketmq/store
            name: brokerstore
          - mountPath: /etc/localtime
            name: timezone
          - mountPath: /home/rocketmq/conf
            name: conf
      volumes:
      - name: brokerlogs
        emptyDir: {}
      - name: brokerstore
        #emptyDir: {}
        persistentVolumeClaim:
          claimName: oss    
      - name: timezone
        hostPath:
          path: /usr/share/zoneinfo/Asia/Shanghai
      - name: conf
        configMap:
          name: broker-conf
 END
  • 最后创建 控制台
cat <<END> web-rocketmq.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-ns
  namespace: zhihui-hr
  labels:
    app: web-ns
spec:
  replicas: 1
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: web-ns
  template:
    metadata:
     labels:
      app: web-ns
    spec:
      containers:
      - name: web-nameserver
        image: apacherocketmq/rocketmq-console:2.0.0
        imagePullPolicy: IfNotPresent
        env:
          - name: JAVA_OPTS
            value: '-Drocketmq.namesrv.addr=rocketmq-ns:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false'
        resources:
          requests:
            cpu: 1000m
            memory: 512Mi
          limits:
            cpu: 6000m
            memory: 4024Mi
        ports:
          - containerPort: 8080
        volumeMounts:
          - mountPath: /etc/localtime
            name: timezone
            readOnly: true
      volumes:
      - name: timezone
        hostPath:
          path: /etc/localtime
---
apiVersion: v1
kind: Service
metadata:
  name: web-ns
  namespace: zhihui-hr
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 31330
  selector:
    app: web-ns
END

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在Kubernetes上部署RocketMQ,您可以按照以下步骤进行操作: 1. 创建RocketMQ的命名空间: ``` kubectl create namespace rocketmq ``` 2. 部署RocketMQ的Namesrv组件: 创建`namesrv.yaml`文件,并将以下配置添加到文件中: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: rocketmq-namesrv namespace: rocketmq spec: replicas: 1 selector: matchLabels: app: rocketmq-namesrv template: metadata: labels: app: rocketmq-namesrv spec: containers: - name: rocketmq-namesrv image: rocketmqinc/rocketmq:4.8.0 command: ["sh", "-c", "cd /opt/rocketmq/distribution && sh bin/mqnamesrv"] ports: - containerPort: 9876 ``` 使用以下命令创建Namesrv组件的Deployment: ``` kubectl apply -f namesrv.yaml ``` 3. 部署RocketMQ的Broker组件: 创建`broker.yaml`文件,并将以下配置添加到文件中: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: rocketmq-broker namespace: rocketmq spec: replicas: 2 selector: matchLabels: app: rocketmq-broker template: metadata: labels: app: rocketmq-broker spec: containers: - name: rocketmq-broker image: rocketmqinc/rocketmq:4.8.0 command: ["sh", "-c", "cd /opt/rocketmq/distribution && sh bin/mqbroker -n namesrv:9876"] ports: - containerPort: 10911 - containerPort: 10909 ``` 使用以下命令创建Broker组件的Deployment: ``` kubectl apply -f broker.yaml ``` 4. 验证RocketMQ部署是否成功: 使用以下命令检查Pod的状态: ``` kubectl get pods -n rocketmq ``` 如果所有的Pod都处于"Running"状态,则RocketMQ部署成功。 请注意,上述步骤仅提供了基本的部署配置。根据您的具体需求,您可能需要进一步配置RocketMQ的参数和持久化存储等。另外,为了确保数据的可靠性和高可用性,建议您配置RocketMQ的数据备份和故障恢复机制。 希望以上信息能对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值