SSLError: ("Тайм-аут операции чтения") при попытке развернуть Kuberntes с помощью Kubespray

Здравствуйте и спасибо заранее за вашу помощь!

Я пытаюсь развернуть кластер Kubernetes, используя Kubespray (ANSIBLE PlayBook). Я пытаюсь развернуть кластер на хосте 17 KVM (все узлы работают под управлением Centos 7 и размещены на голом сервере)

Тем не менее, когда я пытаюсь запустить playbook на задании [download : file_download | Download item]Я получаю следующую ошибку (и таким образом останавливаю установку):

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: SSLError: ('The read operation timed out',)                                                                                                                              
fatal: [node1]: FAILED! => {"attempts": 4, "changed": false, "msg": "failed to create temporary content file: ('The read operation timed out',)"} 

Эта ошибка одинакова для большинства узлов, НО некоторые узлы готовы к загрузке.

Вот ошибка в подробном режиме:

The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_get_url_payload_72qREk/__main__.py", line 360, in url_get
    shutil.copyfileobj(rsp, f)
  File "/usr/lib64/python2.7/shutil.py", line 49, in copyfileobj
    buf = fsrc.read(length)
  File "/usr/lib64/python2.7/socket.py", line 380, in read
    data = self._sock.recv(left)
  File "/usr/lib64/python2.7/httplib.py", line 602, in read
    s = self.fp.read(amt)
  File "/usr/lib64/python2.7/socket.py", line 380, in read
    data = self._sock.recv(left)
  File "/usr/lib64/python2.7/ssl.py", line 757, in recv
    return self.read(buflen)
  File "/usr/lib64/python2.7/ssl.py", line 651, in read
    v = self._sslobj.read(len or 1024)
SSLError: ('The read operation timed out',)

fatal: [node14]: FAILED! => {
    "attempts": 4,
    "changed": false,
    "invocation": {
        "module_args": {
            "attributes": null,
            "backup": null,
            "checksum": "",
            "client_cert": null,
            "client_key": null,
            "content": null,
            "delimiter": null,
            "dest": "/tmp/releases/kubeadm",
            "directory_mode": null,
            "follow": false,
            "force": false,
            "force_basic_auth": false,
            "group": null,
            "headers": null,
            "http_agent": "ansible-httpget",
            "mode": "0755",
            "owner": "root",
            "regexp": null,
            "remote_src": null,
            "selevel": null,
            "serole": null,
            "setype": null,
            "seuser": null,
            "sha256sum": "c4fc478572b5623857f5d820e1c107ae02049ca02cf2993e512a091a0196957b",
            "src": null,
            "timeout": 10,
            "tmp_dest": null,
            "unsafe_writes": null,
            "url": "https://storage.googleapis.com/kubernetes-release/release/v1.14.1/bin/linux/amd64/kubeadm",
            "url_password": null,
            "url_username": null,
            "use_proxy": true,
            "validate_certs": true
        }
    },
    "msg": "failed to create temporary content file: ('The read operation timed out',)"
}

Я попытался подключиться к узлам и попытаться загрузить элемент (я попытался загрузить почтовый индекс Kubspray), и это сработало, все узлы достигают Интернета и могут установить пакет.

Из многословного вывода я несколько понял, что ошибка исходит от python, но я действительно не знаю, как ее решить...

Дайте мне знать, если я могу дать вам еще одну информацию и англичанин, спасибо заранее!

1 ответ

Итак, я "решил" проблему.

Фактически, у Ansbible есть тайм-аут 10 секунд для всех связанных с ssh команд / задач чтения / записи. По неизвестным причинам задача записи на моих узлах была немного медленной, поэтому я получил эту ошибку. К счастью, вы можете изменить время до истечения времени ожидания.

Вы можете использовать аргумент -T (или-tiemout) time_wanted или изменить ansible.cfg. "Базовый" файл cfg находится в etc/ansible/ansible.etc, но будьте осторожны, у некоторой пользовательской ANSIBLE PlayBook будет собственный ANSIBLE.CFG, поэтому вам нужно будет найти его и изменить в соответствии со своими потребностями.

Мне повезло, 4 раза я запускал playbook, он плавно установил K8s.

По причине тестирования я запускаю свои узлы на KVM, поэтому, возможно, отсюда и медленная запись.

Надеюсь, что кто-то найдет мой ответ полезным!

Другие вопросы по тегам