Kubernetes PetSet DNS无效

时间:2016-08-11 16:37:46

标签: kubernetes kube-dns

我有一个名为== var Nightmare = require('nightmare'), should = require('chai').should() describe('Frontend Masters', function() { this.timeout(20000); it('should show form when loaded', function(done) { var nightmare = new Nightmare({show: true}) nightmare .goto('https://frontendmasters.com/') .wait('a[href*="https://frontendmasters.com/login/"]') .click('a[href*="https://frontendmasters.com/login/"]') .wait('#rcp_login_form') .evaluate(function() { return window.document.title; }, function(result) { result.should.equal('Login to Frontend Masters'); done(); }) .run(function(){ console.log('done') }); }); }); 和serviceName == elasticsearch的Kubernetes PetSet。它确实创建了pod,正如预期的那样,它们的名称类似于eselasticsearch-0。但是,DNS似乎不起作用。 elasticsearch-1无法解决(elasticsearch-0.es等也无法解决)。如果你查看生成的srv记录,它们似乎是随机的而不是可预测的:

elasticsearch-0.default

有人有什么想法吗?

详情

这是实际的PetSet和服务定义:

# nslookup -type=srv elasticsearch
Server:        10.1.0.2
Address:    10.1.0.2#53

elasticsearch.default.svc.cluster.local    service = 10 100 0 9627d60e.elasticsearch.default.svc.cluster.local.

1 个答案:

答案 0 :(得分:6)

这是我误读文档的问题。 The docs说:

  

网络标识有两部分。首先,我们创建了一个无头服务,控制我们创建Pets的域。此服务管理的域采用以下形式:$(服务名称)。$(名称空间).svc.cluster.local,其中“cluster.local”是集群域。在创建每个宠物时,它会获得一个匹配的DNS子域,采用以下形式:$(petname)。$(管理服务域),其中管理服务由宠物集上的serviceName字段定义。

我认为这意味着serviceDomain字段的值是“管理服务域”的值,但这并不意味着它。这意味着threshold = tf.constant(0.25, dtype=tf.float32) raw_prob = tf.greater_equal(predictions, threshold) 的值必须与现有无头服务的名称匹配,并且该服务将用作管理服务域。如果不存在此类服务,则不会出现错误 - 您只需为您的宠物获取随机DNS名称。