首页 文章

kubernetes.default未通过DNS解决

提问于
浏览
1

对于DNS发生的事情,我有点迷茫 . 我按照这里列出的说明进行操作:https://github.com/kubernetes/kubernetes/tree/v1.2.0-alpha.5/cluster/addons/dns

当我的测试pod在具有DNS pod的节点上运行时似乎可以工作,但是当我的测试pod在没有DNS pod的节点上运行时它不会 . 这让我相信某些东西没有正确配置,但我不确定是什么 .

我有一个主节点和两个使用Kubernetes运行CentOS的minion节点:1.2.0-alpha.5 . DNS在minion-2上运行 . 我使用的测试吊舱是按照上面链接中列出的示例 .

如果测试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

测试pods resolv.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相关的大多数文档,但我仍然处于亏损状态 . 如果有人能够提供任何见解或其他文档来查看调试此问题,将不胜感激 .

UPDATE 好吧,看来问题可能是由于我没有正确设置法兰绒 . 我按照此处列出的说明重新开始设置和验证法兰绒: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

从小兵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上的容器和具有相同IP地址的minion-2 . 这显然是不对的 .

[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

法兰绒服务正在使用以下参数启动,如果这有助于:

flanneld --ip-masq -etcd-endpoints=http://172.28.128.8:4001 -etcd-prefix=/coreos.com/network

1 回答

  • 0

    问题是由于我没有明确说明法兰绒应该用于主机间通信的网络接口 . 它似乎默认它找到的第一个接口,但这不是我用于设置的正确接口 . 因此,为了解决这个问题,我只需要明确告诉flannel使用哪个接口与--iface命令行选项 .

相关问题