登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  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 的名称为 Pod1、Pod2 和 Pod3,并且如果我将这些 pod 绑定到无头服务(例如 MyService),我将能够通过以下方式访问 pod Pod1.MyService、Pod2.MyService、Pod3.MyService。我可以遍历 Pod id 并将请求复制到所有 pod。但在这种情况下,我不应该将此请求传递给已收到请求的 pod。 假设 Pod2 收到 API 请求,它应该将请求传递给 Pod1 和 Pod3。

有没有办法使用 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删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>