gpt4 book ai didi

dns - 微服务的kubernetes dns查找

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

我对 kubernetes DNS 查找有疑问,如果我在我的服务部署中使用“dns”而不是“env”,

我的微服务使用集群中的另一个微服务是否可以获取所有微服务的 dns 名称?

我得到这段代码,如果我使用 env 然后我从 env 得到主机的信息。但是如果我使用 dns 什么格式以及如何获取 dns 名称,是否有我可以在客户端查询的 DNS 对象?

if (isset($_GET['cmd']) === true) {
$host = 'redis-master';
if (getenv('GET_HOSTS_FROM') == 'env') {
$host = getenv('REDIS_MASTER_SERVICE_HOST');
}

引用:https://github.com/GoogleCloudPlatform/container-engine-samples/blob/master/guestbook/php-redis/guestbook.php

如果有人有示例(最好是 nodejs),我可以深入研究。

最佳答案

首先这是 documented throughly .在任何情况下,如果你想查询 DNS 以找出运行的地方,如果你知道服务名称,你可以通过指向:

my-svc.my-namespace.svc.cluster.local

此外,如果您还想提取端口号并且知道端口名称就可以了,您可以查询 SRV 记录并获取端口号和 CNAME:

_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster.local

对于您的具体示例,这类似于(假设默认命名空间):

_redis-client._tcp.redis-service.default.svc.cluster.local

查询 SRV 记录比依赖环境变量更可靠,因为如果在 pod 的生命周期内,外部服务更改位置,环境变量无法重新注入(inject),但重新查询 DNS 记录将产生更新的结果。

关于dns - 微服务的kubernetes dns查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079714/

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