Исключение: OSError: [Errno 8] Ошибка формата Exec: «./kubectl» при публикации в приложении-функции Azure - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь написать API, а также опубликовать и запустить приложение-функцию Azure. А в функции мне нужно читать из kubectl. Чтение kubectl и настройка прекрасно работает на localhost. Но когда я публикую в приложении функции Azure, он возвращает мне сообщение об ошибке: «Exception: OSError: [Errno 8] Ошибка формата Exec: './kubectl'".

Я создаю функцию запуска в HTTP в Azure, используя Python на устройстве Mac. А план обслуживания Azure - это LinusDynamicPlan. Kubectl, который я использую, является бинарным Mac.

Код для чтения кубектл:

deployments = subprocess.check_output(["./kubectl", "get", "deployments", cluster_config_name])

Я могу успешно запустить скрипт на локальном хосте. Но не в приложении-функции Azure. Я получаю сообщение об ошибке в Azure:

2019-07-09T07:37:38.168 [Error] Executed 'Functions.nc6v3_usage' (Failed, Id=71d76d36-95ab-4bd6-9656-5578141c4c3f)
Result: Failure
Exception: OSError: [Errno 8] Exec format error: './kubectl'

Stack:   File "/usr/local/lib/python3.6/site-packages/azure/functions_worker/dispatcher.py", line 300, in _handle__invocation_request
    self.__run_sync_func, invocation_id, fi.func, args)

  File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)

  File "/usr/local/lib/python3.6/site-packages/azure/functions_worker/dispatcher.py", line 389, in __run_sync_func
    return func(**params)

  File "/home/site/wwwroot/nc6v3_usage/__init__.py", line 18, in main
    deployments = subprocess.check_output(["./kubectl", "get", "deployments", cluster_config_name])

  File "/usr/local/lib/python3.6/subprocess.py", line 356, in check_output
    **kwargs).stdout

  File "/usr/local/lib/python3.6/subprocess.py", line 423, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/local/lib/python3.6/subprocess.py", line 729, in __init__
    restore_signals, start_new_session)
  File "/usr/local/lib/python3.6/subprocess.py", line 1364, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)

1 Ответ

0 голосов
/ 09 июля 2019

kubectl, который я использую, является бинарным mac.

Пожалуйста, исправьте меня, если я вас не правильно понял.Используете ли вы двоичный файл Mac в системе Linux в своем экземпляре Azure?Если это так, вы просто не можете этого сделать, Mac = / = Linux.

Попробуйте установить kubectl на свой экземпляр Azure, следуя этой инструкции , предоставленной официальной документацией Kubernetes, и затем предоставьте полнуюпуть к бинарному kubectl, установленному для вашей системы, к вашему скрипту.Если вы будете следовать приведенным выше инструкциям, это будет /usr/local/bin/kubectl.

...