我正试图公开运行在群集上的有状态mongo副本集以供外部访问。
我有三个副本,并且为每个具有相同LoadBalancer
的副本创建了LoadBalancerIP
服务,同时将端口从10255
依次增加到10257
。
apiVersion: v1
kind: Service
metadata:
name: mongo-service-0
namespace: datastore
labels:
app: mongodb-replicaset
spec:
loadBalancerIP: staticip
type: LoadBalancer
externalTrafficPolicy: Local
selector:
statefulset.kubernetes.io/pod-name: mongo-mongodb-replicaset-0
ports:
- protocol: TCP
port: 10255
targetPort: 27017
问题在于,只有一个服务mongo-service-0
已通过静态IP成功部署,而另一项在一段时间后超时。
我要弄清楚的是,是否可以在具有不同端口的多个服务中使用单个静态IP地址作为LoadBalancerIP。
答案 0 :(得分:0)
由于每个Mongo副本使用不同的端口,因此必须为每个副本创建不同的Kubernetes Services。您只能将Kubernetes服务与单个负载平衡器绑定,并且每个负载平衡器将具有其自己的唯一IP地址,因此您将无法在LoadBalancer类型的服务中共享该IP地址。
解决方法是使用NodePort服务并基本上独立地管理负载均衡器,并将其指向每个副本的NodePort。
另一个解决方法是在Mongo副本上使用相同的端口,并使用相同的Kubernetes LoadBalancer服务。有什么理由不使用它?