美文网首页
RocketMQ部署-docker+k8s部署

RocketMQ部署-docker+k8s部署

作者: do_young | 来源:发表于2020-03-27 11:29 被阅读0次

    前言

    前面已经讲述过关于基于docker生成RocketMQ部署镜像,并在docker中部署及高可用部署的文章。
    在Docker下部署RocketMQ(一)
    在Docker下部署RocketMQ(二)-namesrv高可用部署
    在Docker下部署RocketMQ(三)- broker高可用部署
    下面我将基于最简单的部署方案,讲述一下rocketmq在k8s上的部署。

    生成镜像

    可以基于之前的文章中链接的地址下载生成镜像的脚本,也可以基于以下新的地址。
    rocketmq-docker项目地址

    image.png

    部署

    上课以基于项目中的部署yaml文件进行部署


    image.png
    kubectl create -f  *.yaml
    

    需要注意的是上面的部署文件中没有指定镜像的版本号,这个需要与你生成的镜像名及版本号对应起来。

    扩展

    部署rocketmq-console

    • deployment.yaml
    kind: Deployment
    apiVersion: extensions/v1beta1
    metadata:
      name: rocketmq-console-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: rocketmq-console
          name: rocketmq-console
      template:
        metadata:
         labels:
          app: rocketmq-console
          name: rocketmq-console
        spec:
          containers:
          - name: rocketmq-console
            image: styletang/rocketmq-console-ng:latest
            imagePullPolicy: IfNotPresent
            ports:
              - containerPort: 8080
            env:
            - name: JAVA_OPTS
              value: "-Drocketmq.namesrv.addr=rocketmq-name-svc:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
    
    • service
    apiVersion: v1
    kind: Service
    metadata:
      name: rocketmq-console-service
      namespace: default
    spec:
      type: NodePort
      ports:
      - port: 8080
        targetPort: 8080
        name: rocketmq-console-service
        nodePort: 30001
      selector:
          app: rocketmq-console
          name: rocketmq-console
    

    其它

    默认的k8s部署文件中只配置了pod,如果有应用要访问MQ的话,需要将应用也部署在容器中,通过pod名访问。如果是本地开发环境上需要部署mq进行调试的话,就需要IDE中部署的应用结点通过容器的宿主机IP+端口来访问。所以需要对MQ的nameserver、brocker创建NodePort的service.

    相关文章

      网友评论

          本文标题:RocketMQ部署-docker+k8s部署

          本文链接:https://www.haomeiwen.com/subject/shxluhtx.html