Выполнить команду оболочки в запущенном контейнере на GKE из Google Cloud Functions - PullRequest
0 голосов
/ 01 апреля 2020

Попытка использования облачных функций Google для выполнения команды оболочки в работающем контейнере в Google Kubernetes Engine (GKE).

По сути, требуется воспроизвести функциональность 'kubectl exe c -it "wordpress- cluster-xyz "- / bin / bash ', но через Python SDK в облачных функциях.

Я пробовал приведенный ниже код, однако ошибка при получении соединения отклонена.

from kubernetes import client
from kubernetes.stream import stream
from kubernetes.client import configuration                                              


def testing(event):
    v1=client.CoreV1Api()
    exec_command = [
    '/bin/sh',
    '-c',
    'touch ~/testing']
    resp = stream(v1.connect_get_namespaced_pod_exec,"wordpress-cluster-xyz", 'default',
              command=exec_command,
              stderr=True, stdin=False,
              stdout=True, tty=False)
    print("Response: " + resp)

Ошибка, которую я получаю:

Ошибка: функция прекращена. Рекомендуемое действие: проверить журналы по причине прекращения. отказано Подробности: (0) Причина: [Errno 111] Соединение

Полные журналы ошибок:

Трассировка (последний последний вызов): Файл "/ env / local / lib / python3 .7 / site-packages / kubernetes / stream / ws_client.py ", строка 296, в клиенте websocket_call = WSClient (конфигурация, файл get_websocket_url (url), заголовки, файл capture_all)" / env / local / lib / python3 .7 / site-packages / kubernetes / stream / ws_client.py ", строка 94, в init self.sock.connect (url, header = header) Файл" / env / local / lib /python3.7/site-packages/websocket/_core.py ", строка 223, в файле connect options.pop ('socket', None)) Файл" /env/local/lib/python3.7/site -packages / websocket / _http.py ", строка 121, в connect sock = _open_socket (addrinfo_list, options.sockopt, options.timeout) Файл" /env/local/lib/python3.7/site-packages/websocket/ _http.py ", строка 201, в файле _open_socket повысить ошибка err" /env/local/lib/python3.7/site-packages/websocket/_http.py ", строка 176, в _open_socket sock.connect (address) ConnectionRefusedError : [Errno 111] Соединение отказано Во время обработки вышеуказанного исключения произошло другое исключение: обратная связь (последний вызов был последним): файл "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py", строка 346, в run_http_function result = _function_handler.invoke_user_function (flask .request) Файл "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py", строка 217, в invoke_user_function возвращают call_user_function (request_or_event) файл "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py", строка 210, в call_user_function возвращают self._user_function (request_or_event) файл "/user_code/main.py", строка 15, при тестировании файла stdout = True, tty = False) "/env/local/lib/python3.7/site-packages/kubernetes/stream/stream.py", строка 35, в потоке возвращаем удовольствие c (* args, ** kwargs) Файл "/env/local/lib/python3.7/site-packages/kubernetes/client/api/core_v1_api.py", строка 841 , в connect_get_namespaced_pod_exe c (data) = self.connect_get_namespaced_pod_exec_with_http_info (name, nam espace, ** kwargs. "/env/local/lib/python3.7/site-packages/kubernetes/client/api_client.py", строка 345, в файле call_api _preload_content, _request_timeout) "/env/local/lib/python3.7 /site-packages/kubernetes/client/api_client.py ", строка 176, в файле __call_api _request_timeout = _request_timeout)" /env/local/lib/python3.7/site-packages/kubernetes/stream/stream.py " строка 30, в _intercept_request_call возвращает ws_client.websocket_call (config, * args, ** kwargs) Файл "/env/local/lib/python3.7/site-packages/kubernetes/stream/ws_client.py", строка 302 , в websocket_call вызовите ApiException (status = 0, reason = str (e)) kubernetes.client.rest.ApiException: (0) Причина: [Errno 111] Соединение отклонено

Заранее спасибо.

...