gpt4 book ai didi

kubernetes - 如何让两个 Kubernetes 服务相互通信?

转载 作者:行者123 更新时间:2023-12-04 10:14:33 24 4
gpt4 key购买 nike

目前,我在一个连接到 K8s Redis 服务的 K8s 服务中使用 K8s API pod,并拥有自己的 K8s pod。问题是,我使用的是 NodePort,这意味着两者都向公众公开。我只希望公众可以访问 API。问题是如果我不公开 Redis 服务,API 就看不到它。有没有办法在不向公众公开的情况下连接两个服务?

这是我的 API 服务 yaml:

apiVersion: v1
kind: Service
metadata:
name: app-api-svc
spec:
selector:
app: app-api
tier: api
ports:
- protocol: TCP
port: 5000
nodePort: 30400
type: NodePort

这是我的 Redis 服务 yaml:
apiVersion: v1
kind: Service
metadata:
name: app-api-redis-svc
spec:
selector:
app: app-api-redis
tier: celery_broker
ports:
- protocol: TCP
port: 6379
nodePort: 30537
type: NodePort

最佳答案

首先,将Redis服务配置为ClusterIP服务。它将是私有(private)的,仅对其他服务可见。这可以通过删除带有选项 type 的行来完成。 .

apiVersion: v1
kind: Service
metadata:
name: app-api-redis-svc
spec:
selector:
app: app-api-redis
tier: celery_broker
ports:
- protocol: TCP
port: 6379
targetPort: [the port exposed by the Redis pod]

最后,当你配置API到达Redis时,地址应该是 app-api-redis-svc:6379
就这样。我有很多服务以这种方式相互通信。如果这对您不起作用,请在评论中告诉我。

关于kubernetes - 如何让两个 Kubernetes 服务相互通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45720084/

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