先说一下我的环境和需求,我在kubernetes中部署了一个多主多从的rocketmq的集群,因为我的rocketmq集群属于公用的,所以不但集群外部需要访问,集群内部的也需要访问,针对集群外部访问本地加一下变量到broker的解析就可以了,但是集群内部员本也是想通过内部解析的方式实现的,但是偶尔会有service的ip会有变动,这就需要重新修改解析了,我就想是否有一种方式把变量解析到kubernets的dns上,这样我就不需要担心ip有变动影响到服务使用了.
经过各种网上查找资料发现,可以在当前需要使用到namespace下创建一个变量的service,然后service解析过去,这样就不需要固定ip地址了,下面看一下我的demo.
cat prod-tps-service.yaml apiVersion: v1 kind: Service metadata: name: broker-a-link spec: type: ExternalName externalName: broker-a-link.default.svc.cluster.local apiVersion: v1 kind: Service metadata: name: broker-b-link spec: type: ExternalName externalName: broker-b-link.default.svc.cluster.local
比如我现在namespace为demo下的服务需要用到default下的rocketmq时,我只需要在demo下创建这两个服务即可,
kubectl get service -n demo NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE broker-a-link ExternalName <none> broker-a-link.default.svc.cluster.local <none> 10m broker-b-link ExternalName <none> broker-b-link.default.svc.cluster.local <none> 9m37s
这样我就不用担心ip变动导致服务不可用的问题,这样既简单又安全,还比较好管理,淡然如果把externalName配置成实际的值也是可以的.

您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏