登录
首页 >  Golang >  Go问答

StatefulSet中的Pod间通信

来源:stackoverflow

时间:2024-02-07 18:27:20 428浏览 收藏

从现在开始,努力学习吧!本文《StatefulSet中的Pod间通信》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

在属于同一有状态集的 Pod 之间进行通信的推荐方式是什么?

就我而言,kubernetes 服务公开了 POST API。因此,当有人访问此 API 时,获取请求的 pod 也应该将请求传递给同一 statefulset 中的其他 pod。

由于我使用的是 statefulset,如果我有三个 pod,并且假设 pod 的名称为 Pod1Pod2Pod3,并且如果我将这些 pod 绑定到无头服务(例如 MyService),我将能够通过以下方式访问 pod Pod1.MyServicePod2.MyServicePod3.MyService。我可以遍历 Pod id 并将请求复制到所有 pod。但在这种情况下,我不应该将此请求传递给已收到请求的 pod。 假设 Pod2 收到 API 请求,它应该将请求传递给 Pod1Pod3

有没有办法使用 Kubernetes 客户端在 Go 中实现这一点?向我指出任何此类示例也会有所帮助。


正确答案


通过 fieldref 将名称反映到环境变量,让 pod 知道自己的身份。

statefulset 清单的模板部分示例:

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 名称 replica_name。 您可能还需要让实例知道有多少个副本,但我不知道一个好的自动方法来做到这一点,您也可以为此设置一个变量,例如

env:
  - name: REPLICAS
    value: "3"

理论要掌握,实操不能落!以上关于《StatefulSet中的Pod间通信》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>