Raj*_*ain 2 dns kubernetes google-kubernetes-engine
我对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');
}
Run Code Online (Sandbox Code Playgroud)
参考:https : //github.com/GoogleCloudPlatform/container-engine-samples/blob/master/guestbook/php-redis/guestbook.php
如果有人有示例(最好是nodejs),我可以深入研究。
首先,这是完整的文档。无论如何,如果您想查询DNS以查明运行在哪里,可以通过指向以下位置知道服务名称来执行此操作:
my-svc.my-namespace.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)
此外,如果您也想抽象端口号,并且知道端口名称也可以,则可以查询SRV记录并获取端口号和CNAME:
_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)
对于您的特定示例,将类似于(假设默认名称空间):
_redis-client._tcp.redis-service.default.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)
查询SRV记录比依赖环境变量更为可靠,因为如果在Pod的生命周期内,外部服务更改了位置,则无法重新注入环境变量,但是重新查询DNS记录将产生更新的结果。
| 归档时间: |
|
| 查看次数: |
1547 次 |
| 最近记录: |