我需要将流量(实时音视频)直接路由到特定容器的实例中。pods的数量应该通过副本集进行水平缩放。我现在的解决方案是创建一个StatefulSet,它具有与pod一样多的NodePort类型的服务。
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: foobar
name: foobar-app
spec:
serviceName: foobar
replicas: 2
selector:
matchLabels:
app: foobar
template:
metadata:
labels:
app: foobar
spec:
containers:
- image: foobar:latest
name: foobar
---
apiVersion: v1
kind: Service
metadata:
name: foobar-service-0
spec:
type: NodePort
selector:
statefulset.kubernetes.io/pod-name: foobar-app-0
ports:
- protocol: TCP
nodePort: 30036
port: 3000
---
apiVersion: v1
kind: Service
metadata:
name: foobar-service-1
spec:
type: NodePort
selector:
statefulset.kubernetes.io/pod-name: foobar-app-1
ports:
- protocol: TCP
nodePort: 30037
port: 3000这是否被认为是可接受的解决方案,或者是否有更好的方案来为每个pod创建服务?
发布于 2020-03-13 16:00:39
正如在上面的注释中所解释的,我发现解决方案是通过使用NodePort服务来提供here的,该NodePort服务针对的是带有externalTrafficPolicy=Local的StatefulSet。这将禁用不同节点之间的群集范围负载平衡。前提条件是每个节点只能运行有状态集的一个pod,可以通过设置pod anti-affinity来实现。
https://stackoverflow.com/questions/60571405
复制相似问题