Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes skydns麻烦-我一定不能“明白”吗?_Kubernetes - Fatal编程技术网

Kubernetes skydns麻烦-我一定不能“明白”吗?

Kubernetes skydns麻烦-我一定不能“明白”吗?,kubernetes,Kubernetes,我正在使用google容器引擎,我可以在集群中创建pod和服务。但是,当我尝试使用DNS功能skydns查找我的服务时,没有找到任何内容。如果我登录到非主节点,我可以看到DNS容器,并可以使用“host”命令执行安装了apt get的DNS查找。但我找不到我服务的名字。它将kubernetes.local与服务的IP相关联。实际上,它将kubernetes.local与我的每项服务的IP相关联。但它不会将服务名称与我的服务名称相关联 有人知道让它工作的诀窍吗?要么创建服务并没有导致skydns创

我正在使用google容器引擎,我可以在集群中创建pod和服务。但是,当我尝试使用DNS功能skydns查找我的服务时,没有找到任何内容。如果我登录到非主节点,我可以看到DNS容器,并可以使用“host”命令执行安装了apt get的DNS查找。但我找不到我服务的名字。它将kubernetes.local与服务的IP相关联。实际上,它将kubernetes.local与我的每项服务的IP相关联。但它不会将服务名称与我的服务名称相关联

有人知道让它工作的诀窍吗?要么创建服务并没有导致skydns创建DNS条目,要么可能是有一些魔法让它工作……要么我完全不懂魔法,也许更可能

我不知道是哪个


b

其中有一点魔力,旨在使Kubernetes中的DNS从一个pod中变得更加方便。让我试着解释一下

在Kubernetes中构造DNS名称的方式是..Kubernetes.local。这就是为什么kubernetes.local在您的节点上解析自,但我的服务名称不是。假设您的服务是在默认名称空间中定义的,除非您在其他名称空间中显式创建它,否则您应该能够在my-service-name.default.kubernetes.local解析它

关于DNS的文档假定您关心如何从pod内解析服务名称,而不是直接在主机上解析服务名称。在您的pod中,DNS应该设置为首先搜索您指定的相对于default.kubernetes.local和kubernetes.local的名称,这意味着在集群中任何非kube DNS的pod中,您应该能够使用my-service-name或my-service-name.default.kubernetes.local解析您的服务

如果您想尝试,请使用docker exec连接到集群的一个fluentd播客,并尝试从容器中查找您的服务


请注意,在版本0.17.0和0.18.0之间,名称空间从kubernetes.local更改为cluster.local,因此,如果第一次尝试失败,请使用kubectl版本检查群集的版本。

您正在运行的是哪个版本的GKE?你能在dns pod中的容器上运行kubectl日志吗?特别是kube2sky,看看它们是否显示任何持久性错误?没问题!作为警告,该格式很快将更改为..cluster.local,但该格式将成为1.0版本的一部分,并因此在很长一段时间内保持稳定。