kubernetes - 在具有不同端口的多个服务中使用单个静态 IP 地址作为 LoadBalancerIP
问题描述
我正在尝试公开在我的集群上运行的有状态的 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。
解决方案
由于您为每个 Mongo 副本使用不同的端口,因此您必须为每个副本创建不同的 Kubernetes服务。您只能将 Kubernetes 服务与单个负载均衡器绑定,并且每个负载均衡器都有自己唯一的 IP(或多个 IP)地址,因此您将无法在LoadBalancer类型的服务中共享该 IP 地址。
解决方法是使用NodePort服务,基本上独立管理负载均衡器,并将其指向每个副本的 NodePort。
另一种解决方法是在 Mongo 副本上使用相同的端口并使用相同的 Kubernetes LoadBalancer 服务。你有什么理由不使用它吗?
推荐阅读
- javascript - 如何将值从一个网页传递到另一个网页
- typescript - Is it possible to infer a type for a tuple, where element's type depends on the previous?
- javascript - How can I loop through multiple instances of a JS component
- java - Gradle/Maven deploy to github packages - Preserving parameter/argument names
- android - How to find images on Android device using Android File Explorer?
- c++ - How do I determine the default thread count OpenMP uses for a parallel section?
- tcp - ProgMP page showing I'm not using MPTCP even when I'm using it
- polymorphism - 指定 Julia 函数只能采用其内容为特定类型的字典/数组的正确方法是什么?
- ios - SwiftUI/Combine no updates to @ObservedObject from @Published
- oracle - How to retain double quotes in a column while loading a file using SQL Loader