skydns 麻烦 - 我不能 'get it'?
skydns troubles - i must not 'get it'?
我正在使用 google 容器引擎,我可以在我的集群中创建 pods 和服务。但是当我尝试使用 DNS 功能 (skydns) 查找我的服务时,什么也找不到。如果我登录到非主节点,我可以看到 DNS 容器并可以使用 'host' 命令进行 DNS 查找(使用 apt-get 安装)。但是我找不到我的服务名称。它将 kubernetes.local 与服务的 IP 相关联。实际上,它将 kubernetes.local 与我的每一项服务(我有 9 个)的 IP 相关联。但是不关联服务名"my-service-name".
有人知道使它起作用的诀窍吗?创建服务不会导致 skydns 创建 DNS 条目(也许有一些魔法让它工作)......或者我完全无能为力(不那么神奇,也许更有可能)。
我不知道是哪个。
b
这里涉及到一些魔法,旨在使 Kubernetes 中的 DNS 从 pod 内更方便。让我试着解释一下。
在 Kubernetes 中构造 DNS 名称的方式是 <service-name>.<namespace>.kubernetes.local
。这就是为什么 kubernetes.local
从您的节点上解析,但 my-service-name
不是。假设您的服务是在默认命名空间中定义的(除非您在不同的命名空间中明确创建它,否则它将是),您应该能够在 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 pods 并尝试从容器中查找您的服务。
请注意,命名空间在版本 0.17.0 和 0.18.0 之间从 kubernetes.local
更改为 cluster.local
,因此如果您的第一次尝试没有成功,请检查您集群的版本(使用 kubectl version
)没用。
我正在使用 google 容器引擎,我可以在我的集群中创建 pods 和服务。但是当我尝试使用 DNS 功能 (skydns) 查找我的服务时,什么也找不到。如果我登录到非主节点,我可以看到 DNS 容器并可以使用 'host' 命令进行 DNS 查找(使用 apt-get 安装)。但是我找不到我的服务名称。它将 kubernetes.local 与服务的 IP 相关联。实际上,它将 kubernetes.local 与我的每一项服务(我有 9 个)的 IP 相关联。但是不关联服务名"my-service-name".
有人知道使它起作用的诀窍吗?创建服务不会导致 skydns 创建 DNS 条目(也许有一些魔法让它工作)......或者我完全无能为力(不那么神奇,也许更有可能)。
我不知道是哪个。
b
这里涉及到一些魔法,旨在使 Kubernetes 中的 DNS 从 pod 内更方便。让我试着解释一下。
在 Kubernetes 中构造 DNS 名称的方式是 <service-name>.<namespace>.kubernetes.local
。这就是为什么 kubernetes.local
从您的节点上解析,但 my-service-name
不是。假设您的服务是在默认命名空间中定义的(除非您在不同的命名空间中明确创建它,否则它将是),您应该能够在 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 pods 并尝试从容器中查找您的服务。
请注意,命名空间在版本 0.17.0 和 0.18.0 之间从 kubernetes.local
更改为 cluster.local
,因此如果您的第一次尝试没有成功,请检查您集群的版本(使用 kubectl version
)没用。