gpt4 book ai didi

kubernetes - 如何通过名称访问kubernetes中的服务ip?

转载 作者:行者123 更新时间:2023-12-02 12:07:29 25 4
gpt4 key购买 nike

假设我有 rabbitmq服务如下:

apiVersion: v1
kind: Service
metadata:
name: my-rabbitmq
spec:
ports:
- port: 6379
selector:
app: my-rabbitmq

我还有另一个部署:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: A-worker
spec:
replicas: 1
containers:
- name: a-worker
image: worker-image
ports:
- containerPort: 80
env:
- name: rabbitmq_url
value: XXXXXXXXXXXXX

有没有办法通过某种选择器在我的第二次部署中将服务 ip 设置为环境变量?换句话说,应该去 value: XXXXXXXXXX在第二个部署 yaml 中。 (注意我知道我可以通过 kubectl get services 获取服务 ip,但我想知道如何通过服务名称或标签来设置它)。欢迎任何建议!

最佳答案

kubernetes 将服务主机、端口、协议(protocol)等的环境变量注入(inject)到 pod 容器中(参见 this doc)。
kubectl exec <pod> printenv是检查设置了哪些环境变量的一种方法。

如果服务是在 pod 之后创建的,则 env var 可能不存在,因此杀死(重新启动)pod 是确保填充新环境变量的一种方法。

约定通常为大写 <SERVICE_NAME>_SERVICE_HOST .
您可以使用以下语法在 pod 规范中显式设置它。

    - name: rabbitmq_url
value: $(MY-RABBITMQ_SERVICE_HOST)


请记住,变量已经由 k8s 注入(inject),这只是给它起别名。您可能希望更新应用层/script 中的引用以使用 k8s 注入(inject)的服务环境变量。

关于kubernetes - 如何通过名称访问kubernetes中的服务ip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49394266/

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