kubernetes 相同状态集合的pod之间的通信

beq87vna  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(147)

属于 同一 statefulset 的 Pod 之间 的 通信 建议 方式 是 什么 ?
在 我 的 例子 中 , kubernetes 服务 公开 了 一 个 POST API , 所以 当 有人 点击 这个 API 时 , 得到 请求 的 pod 应该 也 把 请求 传递 给 同一 个 statefulset 中 的 其他 pod 。
由于 我 使用 的 是 statefulset , 如果 我 有 三 个 pod , 假设 这些 pod 的 名称 分别 是 Pod1Pod2Pod3 , 如果 我 将 这些 pod 绑定 到 一 个 无头 服务 ( 例如 MyService ) , 我 将 能够 通过 Pod1.MyServicePod2.MyServicePod3.MyService 。 我 可以 遍历 Pod id 并 将 请求 复制 到 所有 pod 。 但 在 这种 情况 下 , 我 不 应该 将 此 请求 传递 到 已 接收 请求 的 pod 。 假设 Pod2 接收 到 API 请求 ,它 应该 将 该 请求 传递 到 x1M8N1x 和 x1M9N1x 。
在 Go 语言 中 有 没有 用 Kubernetes 客户 端 实现 这 一 点 ? 给 我 指 一 个 类似 的 例子 也 会 有所 帮助 。

eanckbw9

eanckbw91#

通过fieldRef将名称反映到环境变量,让pod知道自己的身份。
StatefulSet清单的 template 部分示例:

template:
    metadata:
      labels:
        app: my-distributed-app
    spec:
      containers:
        - name: my-distributed-app
          image: my-image
          env:
            - name: REPLICA_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name

在这里,pod name 作为REPLICA_NAME可用于示例。您可能还需要让示例知道有多少副本,但我不知道一个好的 * 自动 * 方法来完成此操作,您也可以为此设置一个变量,例如:

env:
  - name: REPLICAS
    value: "3"

相关问题