#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)