RocketMQ部署-docker+k8s部署

2020-03-27  本文已影响0人  do_young

前言

前面已经讲述过关于基于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

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"
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.

上一篇下一篇

猜你喜欢

热点阅读