将流量路由到副本集的特定容器中

问题描述 投票:0回答:1

我需要将流量(实时音频/视频)直接路由到特定的Pod容器中。窗格的数量应与副本集一起水平缩放。我现在的解决方案是创建一个StatefulSet,该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

这被认为是可以接受的解决方案,还是为每个吊舱创建服务的更好的解决方案?

kubernetes kubernetes-pod traffic kubernetes-statefulset
1个回答
1
投票

如上所述,我发现通过使用以here为StatefulSet的NodePort服务提供了externalTrafficPolicy=Local的解决方案。这将禁用不同节点之间的群集范围的负载平衡。前提条件是每个节点只能运行有状态集的一个Pod,这可以通过设置pod anti-affinity来实现。]

© www.soinside.com 2019 - 2024. All rights reserved.