Назад | Перейти на главную страницу

Обновление Openshift-Ansible: не удалось получить hostsubnet

Введение

Я пытаюсь обновить установленную версию Openshift-Ansible с 3.6 до более новой версии.

В настоящее время я использую следующее, пытаясь обновить до v3.7:

ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i hosts -k openshift-ansible/playbooks/byo/openshift-cluster/upgrades/v3_7/upgrade.yml

При запуске я получаю следующую невыполненную задачу:

TASK [Check for invalid namespaces and SDN errors] ***********************************************************************************************************************************************************************
fatal: [10.0.0.51]: FAILED! => {"changed": false, "msg": "Failed to GET hostsubnet.", "results": {"cmd": "/usr/bin/oc get hostsubnet -o json -n default", "results": [{}], "returncode": 1, "stderr": "Unable to connect to the server: dial tcp: lookup docker1.foo.bar on 10.0.0.1:53: no such host\n", "stdout": ""}, "state": "list"}

подробности

Я проверил release-3.9 филиал openshift-ansible проект.

Для краткости выложу только часть моих hosts файл, который я считаю актуальным, дайте мне знать, если я упустил важные детали:

[OSEv3:children]
masters
nodes
etcd

openshift_master_cluster_method=native
openshift_master_cluster_hostname=10.0.0.51
openshift_master_cluster_public_hostname=10.0.0.51
osm_cluster_network_cidr=10.168.0.0/13

[masters]
10.0.0.51

[etcd]
10.0.0.51

[nodes]
10.0.0.51 openshift_node_labels="{'region': 'infra','zone': 'default','node-role.kubernetes.io/compute': 'true'}" openshift_schedulable=true
10.0.0.52 openshift_node_labels="{'region': 'infra','zone': 'default','node-role.kubernetes.io/compute': 'true'}"
10.0.0.53 openshift_node_labels="{'region': 'infra','zone': 'default','node-role.kubernetes.io/compute': 'true'}"

Я думаю, что эта ошибка может быть связана с какой-то ошибкой разрешения имени, у меня /etc/resolv.conf внутри 10.0.0.53 со следующим содержимым:

nameserver 10.0.0.1
nameserver 10.0.0.53

Если я сделаю nslookup docker1.foo.bar 10.0.0.1, Я не могу найти, что ожидается, потому что 10.0.0.1 не может разрешить внутренние сетевые имена.

Если я сделаю docker1.foo.bar 10.0.0.53, Я разрешаю имя на 10.0.0.51 как и ожидалось.

Что я уже сделал до этого

Изначально, когда я бежал upgrade.retry как и выше, я получил следующую ошибку:

TASK [openshift_excluder : Check the available origin-docker-excluder version is at most of the upgrade target version] **********************************************************************
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|version_compare` use `result is version_compare`. This feature will be removed in version 2.9. 
Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
fatal: [docker1.foo.bar]: FAILED! => {"changed": false, "msg": "Available origin-docker-excluder version 3.9.0 is higher than the upgrade target version"}
    ...

Итак, я добавил в свой инвентарный файл следующее:

enable_excluders=false

Что, кажется, заставляет playbook продолжить эту ошибку, затем я обнаружил ошибку, как описано выше во введении.

Вопрос

Как я могу обновить свою установку Openshift-Ansible или что вызывает мою ошибку?

Сделайте 10.0.0.53 (или какой-нибудь другой сервер имен со знанием вашей частной сети) своим первичный сервер имен (перейти в начало /etc/resolv.conf).

Это позволит клиенту openshift получить подсеть хоста. Этого может быть недостаточно для завершения обновления, но это решит проблему.