kubernetes.default DNS 未解析
kubernetes.default not resolved by DNS
我有点不知道 DNS 是怎么回事。我按照此处概述的说明进行操作:
https://github.com/kubernetes/kubernetes/tree/v1.2.0-alpha.5/cluster/addons/dns
当我的测试 pod 在具有 DNS pod 的节点上运行时它似乎可以工作,但是当我的测试 pod 在没有 DNS pod 的节点上运行时它不起作用。这使我相信某些配置不正确,但我不确定是什么。
我有一个主节点和两个小节点 运行 CentOS 使用 Kubernetes:1.2.0-alpha.5。 minion-2 上的 DNS 是 运行。我使用的测试舱是根据上面 link 中概述的示例。
如果测试 pod 在 minion-1(没有 DNS 的节点)上 运行,那么测试 DNS 会产生:
$ kubectl exec busybox -- nslookup kubernetes.default
Server: 10.0.0.10
Address 1: 10.0.0.10
nslookup: can't resolve 'kubernetes.default'
error: error executing remote command: Error executing command in container: Error executing in Docker Container: 1
测试podsresolv.conf是:
search default.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.0.0.10
options ndots:5
服务集群IP范围:10.0.0.0/24
绒布网络配置:18.16.0.0/16
我已经查看了 Kuberentes repo 中的大部分 DNS 问题和大部分与 DNS 相关的文档,但我仍然一头雾水。如果有人可以向我提供任何见解或其他文档以查看调试此问题,将不胜感激。
更新
好的,看来问题可能是由于我没有正确设置法兰绒。我已按照此处概述的说明重新设置和验证法兰绒:https://github.com/kubernetes/kubernetes/blob/v1.2.0-alpha.5/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md
从 minion-1 我得到:
$ ip -4 a|grep inet
inet 127.0.0.1/8 scope host lo
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
inet 172.28.128.9/24 brd 172.28.128.255 scope global enp0s8
inet 18.16.45.0/16 scope global flannel0
inet 18.16.45.1/24 scope global docker0
从 minion-2 我得到:
$ ip -4 a|grep inet
inet 127.0.0.1/8 scope host lo
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
inet 172.28.128.9/24 brd 172.28.128.255 scope global enp0s8
inet 18.16.45.0/16 scope global flannel0
inet 18.16.45.1/24 scope global docker0
这似乎与目前记录的内容相符。但是,对于下一步,我不会为每个节点获得一个块。我只看到一个街区:
$ curl -s http://172.28.128.8:4001/v2/keys/coreos.com/network/subnets | python -mjson.tool
{
"action": "get",
"node": {
"createdIndex": 15,
"dir": true,
"key": "/coreos.com/network/subnets",
"modifiedIndex": 15,
"nodes": [
{
"createdIndex": 18,
"expiration": "2016-01-13T19:59:09.489854201Z",
"key": "/coreos.com/network/subnets/18.16.45.0-24",
"modifiedIndex": 18,
"ttl": 86272,
"value": "{\"PublicIP\":\"10.0.2.15\"}"
}
]
}
}
所有 subnet.env 文件似乎都匹配
来自 minion-1:
$ cat /run/flannel/subnet.env
FLANNEL_NETWORK=18.16.0.0/16
FLANNEL_SUBNET=18.16.45.1/24
FLANNEL_MTU=1472
FLANNEL_IPMASQ=true
来自 minion-2:
$ cat /run/flannel/subnet.env
FLANNEL_NETWORK=18.16.0.0/16
FLANNEL_SUBNET=18.16.45.1/24
FLANNEL_MTU=1472
FLANNEL_IPMASQ=true
如果我继续接下来的步骤来验证跨主机容器通信,我最终会发现 minion-1 和 minion-2 上的容器具有相同的 IP 地址。这显然是不对的。
[root@ecf25fd80d85 /]# ip -4 a l eth0 | grep inet
inet 18.16.45.2/24 scope global eth0
[root@9941f62e621d /]# ip -4 a l eth0 | grep inet
inet 18.16.45.2/24 scope global eth0
正在使用以下参数启动 flannel 服务(如果有帮助的话):
flanneld --ip-masq -etcd-endpoints=http://172.28.128.8:4001 -etcd-prefix=/coreos.com/network
问题是由于我没有明确说明 flannel 应使用哪个网络接口进行 inter-host 通信。它似乎默认了它找到的第一个接口,但这不是用于我的设置的正确接口。因此,为了解决这个问题,我只需要通过 --iface 命令行选项明确告诉 flannel 使用哪个界面。
我有点不知道 DNS 是怎么回事。我按照此处概述的说明进行操作: https://github.com/kubernetes/kubernetes/tree/v1.2.0-alpha.5/cluster/addons/dns
当我的测试 pod 在具有 DNS pod 的节点上运行时它似乎可以工作,但是当我的测试 pod 在没有 DNS pod 的节点上运行时它不起作用。这使我相信某些配置不正确,但我不确定是什么。
我有一个主节点和两个小节点 运行 CentOS 使用 Kubernetes:1.2.0-alpha.5。 minion-2 上的 DNS 是 运行。我使用的测试舱是根据上面 link 中概述的示例。
如果测试 pod 在 minion-1(没有 DNS 的节点)上 运行,那么测试 DNS 会产生:
$ kubectl exec busybox -- nslookup kubernetes.default
Server: 10.0.0.10
Address 1: 10.0.0.10
nslookup: can't resolve 'kubernetes.default'
error: error executing remote command: Error executing command in container: Error executing in Docker Container: 1
测试podsresolv.conf是:
search default.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.0.0.10
options ndots:5
服务集群IP范围:10.0.0.0/24 绒布网络配置:18.16.0.0/16
我已经查看了 Kuberentes repo 中的大部分 DNS 问题和大部分与 DNS 相关的文档,但我仍然一头雾水。如果有人可以向我提供任何见解或其他文档以查看调试此问题,将不胜感激。
更新 好的,看来问题可能是由于我没有正确设置法兰绒。我已按照此处概述的说明重新设置和验证法兰绒:https://github.com/kubernetes/kubernetes/blob/v1.2.0-alpha.5/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md
从 minion-1 我得到:
$ ip -4 a|grep inet
inet 127.0.0.1/8 scope host lo
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
inet 172.28.128.9/24 brd 172.28.128.255 scope global enp0s8
inet 18.16.45.0/16 scope global flannel0
inet 18.16.45.1/24 scope global docker0
从 minion-2 我得到:
$ ip -4 a|grep inet
inet 127.0.0.1/8 scope host lo
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
inet 172.28.128.9/24 brd 172.28.128.255 scope global enp0s8
inet 18.16.45.0/16 scope global flannel0
inet 18.16.45.1/24 scope global docker0
这似乎与目前记录的内容相符。但是,对于下一步,我不会为每个节点获得一个块。我只看到一个街区:
$ curl -s http://172.28.128.8:4001/v2/keys/coreos.com/network/subnets | python -mjson.tool
{
"action": "get",
"node": {
"createdIndex": 15,
"dir": true,
"key": "/coreos.com/network/subnets",
"modifiedIndex": 15,
"nodes": [
{
"createdIndex": 18,
"expiration": "2016-01-13T19:59:09.489854201Z",
"key": "/coreos.com/network/subnets/18.16.45.0-24",
"modifiedIndex": 18,
"ttl": 86272,
"value": "{\"PublicIP\":\"10.0.2.15\"}"
}
]
}
}
所有 subnet.env 文件似乎都匹配 来自 minion-1:
$ cat /run/flannel/subnet.env
FLANNEL_NETWORK=18.16.0.0/16
FLANNEL_SUBNET=18.16.45.1/24
FLANNEL_MTU=1472
FLANNEL_IPMASQ=true
来自 minion-2:
$ cat /run/flannel/subnet.env
FLANNEL_NETWORK=18.16.0.0/16
FLANNEL_SUBNET=18.16.45.1/24
FLANNEL_MTU=1472
FLANNEL_IPMASQ=true
如果我继续接下来的步骤来验证跨主机容器通信,我最终会发现 minion-1 和 minion-2 上的容器具有相同的 IP 地址。这显然是不对的。
[root@ecf25fd80d85 /]# ip -4 a l eth0 | grep inet
inet 18.16.45.2/24 scope global eth0
[root@9941f62e621d /]# ip -4 a l eth0 | grep inet
inet 18.16.45.2/24 scope global eth0
正在使用以下参数启动 flannel 服务(如果有帮助的话):
flanneld --ip-masq -etcd-endpoints=http://172.28.128.8:4001 -etcd-prefix=/coreos.com/network
问题是由于我没有明确说明 flannel 应使用哪个网络接口进行 inter-host 通信。它似乎默认了它找到的第一个接口,但这不是用于我的设置的正确接口。因此,为了解决这个问题,我只需要通过 --iface 命令行选项明确告诉 flannel 使用哪个界面。