前言
前面已经讲述过关于基于docker生成RocketMQ部署镜像,并在docker中部署及高可用部署的文章。
在Docker下部署RocketMQ(一)
在Docker下部署RocketMQ(二)-namesrv高可用部署
在Docker下部署RocketMQ(三)- broker高可用部署
下面我将基于最简单的部署方案,讲述一下rocketmq在k8s上的部署。
生成镜像
可以基于之前的文章中链接的地址下载生成镜像的脚本,也可以基于以下新的地址。
rocketmq-docker项目地址
部署
上课以基于项目中的部署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.
网友评论