время ожидания соединения k8s_api в конвейере Jenkins

#python #python-3.x #kubernetes #jenkins-pipeline #urllib3

#python #python-3.x #kubernetes #дженкинс-конвейер #urllib3

Вопрос:

Я хотел перечислить пространства имен, присутствующие в кластере, используя Kubernetes API, т.Е. Используя list_namespace метод.

Когда я запускаю приведенный ниже код со своей машины Linux, он работает нормально.

Я создал задание конвейера Дженкинса и вызвал файл python, как показано ниже, из-за ошибки тайм-аута подключения.

Если я выполняю a kubectl get ns в том же файле Jenkins, я получаю результат.

Я думал, что прокси-серверы этого не позволяют. Но не смог найти, как это исправить.

Мой код на Python:

 config.load_kube_config(os.environ['KUBE_CONFIG'])
v1_api = client.CoreV1Api()
api_instance = kubernetes.client.CoreV1Api()

try: 
    api_response = api_instance.list_namespace(limit="1")
    pprint(api_response)
except Exception as e:
    print("Exception when calling CoreV1Api->list_namespace: %sn" % e)

sys.exit("EXITING")
  

Команда, которую я запустил:

 export KUBE_CONFIG=${env.WORKSPACE}/.kube/kube_config
python36 listns.py 
  

Ошибка:

ПРЕДУПРЕЖДЕНИЕ о повторной попытке (повторите попытку (total = 0, connect = None, read = None, redirect = None, status = None)) после разрыва соединения с помощью ‘NewConnectionError (‘: Не удалось установить новое соединение: [Ошибка 110] Время ожидания соединения истекло’,)’: /api/ v1/namespaces?limit = 1

Исключение при вызове CoreV1Api-> list_namespace: HTTPSConnectionPool(host= ‘XXXXXXX’, port = xxxx): превышено максимальное количество попыток с url: /api/v1 /namespaces?limit=1 (Вызвано NewConnectionError(‘: Не удалось установить новое соединение: [Ошибка 110] Время ожидания соединения истекло’,))

Ответ №1:

Исправлено путем передачи прокси-сервера с использованием класса конфигурации:

 configuration = kubernetes.client.Configuration()
configuration.proxy='http://www-proxy-<myproxyserver>'

api_instance = kubernetes.client.ApiClient(configuration)