gpt4 book ai didi

go - 如何使一个 pod 与另一个 pod 的本地主机通信

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:13 24 4
gpt4 key购买 nike

我已经在 Go 中实现了一个 gRPC 客户端服务器。我现在已经在 Kubernetes 中将它们设置为客户端和服务器 pod,客户端在其中连接到服务器。我在我的电脑上使用 vagrant (centos/7) 设置了这个集群。我的问题是客户端想要访问端口 8090(服务器在此端口上服务)并向服务器发送消息,但是由于它们位于不同的 pod 中,客户端无法访问本地主机 8090,因此 pod 失败。我该如何解决这个问题?

func main() {
conn, err := grpc.Dial(":8090", grpc.WithInsecure())
if err != nil {
log.Fatalf("did not connect :%v", err)
}
cli := proto.NewPingClient(conn)

正如所见,它尝试调用 8090,但无法将其映射到服务器 pod 的本地主机。

最佳答案

localhost只能用于解决在单个 Pod 中运行的容器组。

Pod 到 Pod 的通信应该通过 Service 进行.

以下示例服务会将流量转发到任何标有 app: grpc-app 的 Pod

apiVersion: v1
kind: Service
metadata:
name: grpc-service
spec:
selector:
app: grpc-app
ports:
- protocol: TCP
port: 8090
targetPort: 8090

然后您将拥有一个 DNS 主机名来访问该服务。

grpc-service.<namespace>.svc.<cluster-domain>通常是
grpc-service.default.svc.cluster.local

func main() {
conn, err := grpc.Dial("name-of-your-grpc-service:8090", grpc.WithInsecure())
if err != nil {
log.Fatalf("did not connect :%v", err)
}
cli := proto.NewPingClient(conn)

关于go - 如何使一个 pod 与另一个 pod 的本地主机通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57439990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com