使用kubespray的k8s在dns配置中失败

时间:2018-04-06 00:56:42

标签: docker kubernetes

我的k8s与kubespray总是因以下错误而失败 "Too many nameservers. You can relax this check by set docker_dns_servers_strict=no and we will only use the first 3

在我的cluster.yml中,我在- hosts下有这个 - docker_dns_servers_strict: no但我仍然收到错误。 我错过了什么?

4 个答案:

答案 0 :(得分:1)

对我来说,它可以添加-e 'docker_dns_servers_strict=no'

ansible-playbook -i ../inventories/kubernetes.yaml --become --become-user=root cluster.yml -e 'docker_dns_servers_strict=no'

答案 1 :(得分:0)

作为explained here,检查您的yaml文件的格式。

以下是一个例子:

- hosts: k8s-cluster:etcd:calico-rr
  any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
  vars:
    - docker_dns_servers_strict: no
  roles:
    - { role: kubespray-defaults}
    - { role: kernel-upgrade, tags: kernel-upgrade, when: kernel_upgrade is defined and kernel_upgrade }
    - { role: kubernetes/preinstall, tags: preinstall }
    - { role: docker, tags: docker }
    - role: rkt
      tags: rkt
      when: "'rkt' in [etcd_deployment_type, kubelet_deployment_type, vault_deployment_type]"

this issue中所述:

  

如果在运行kubespray角色之前在服务器上配置一组DNS服务器,通常会发生这种情况。

答案 2 :(得分:0)

就我而言,我在 all.yaml 文件中添加了docker_dns_servers_strict: false。解决了我的问题。

答案 3 :(得分:0)

下面通过将名称服务器修剪为最大 6 来为我的安装工作

将其添加到 roles/container-engine/docker/tasks/set_facts_dns.yml 就在下面修剪名称服务器

- name: rtrim number of numbers of search domain to 6
  set_fact:
    docker_dns_search_domains: "{{ docker_dns_search_domains[0:6] }}"
  when: docker_dns_search_domains|length > 6