3

对于 StateFul 集,我可以通过内部无头服务访问其 pod。

我认为,有一种简单的方法在外部公开单个 pod 是有道理的(因为 pod 通常有一个状态,因此对它们进行负载平衡是没有意义的)。

到目前为止,我没有找到直接的方法来做到这一点。即使做kubectl expose pod pod-1 --type NodePort也给了我一个平衡所有 pod 的服务。是否有这样的原因,或者是否有访问单个 pod 的好方法。

4

2 回答 2

4

您可以通过在标签上匹配来PodStatefulSet外部公开特定内容。statefulset.kubernetes.io/pod-name

例如,如果您StatefulSet已命名app并且您希望将端口 80 从第一个公开PodService

apiVersion: v1
kind: Service
metadata:
  name: app-0
spec:
  type: LoadBalancer
  selector:
    statefulset.kubernetes.io/pod-name: app-0
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
于 2021-05-22T03:18:29.570 回答
-1

我看不到他们将负载分配到单个 pod 的方式。如果您希望客户端使用一个 pod 保持此会话,您可以定义 service sessionAffinity: ClientIP。这将向同一个 pod 发送已建立的客户端流量。

于 2017-08-15T23:29:10.257 回答