Я хотел бы перечислить пространства имен, присутствующие в кластере, используя API Kubernetes, то есть, используя метод list_namespace
.
Когда я запускаю приведенный ниже код с моей машины Linux, он работает нормально.
Я создал конвейерное задание Jenkins и вызвал файл python, как показано ниже, из-за его ошибки Connection Timeout.
Если я делаю 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: %s\n" % e)
sys.exit("EXITING")
Команда, которую я выполнил:
export KUBE_CONFIG=${env.WORKSPACE}/.kube/kube_config
python36 listns.py
Ошибка:
ПРЕДУПРЕЖДЕНИЕ Повторная попытка (Повторная попытка (всего = 0, подключение = Нет, чтение = Нет,
redirect = Нет, статус = Нет)) после разрыва соединения
'NewConnectionError (': не удалось установить новое соединение:
[Errno 110] Тайм-аут соединения ',)': / api / v1 / namespaces? Limit = 1
Исключение при вызове CoreV1Api-> list_namespace:
HTTPSConnectionPool (host = 'XXXXXXX', port = xxxx): превышено максимальное количество попыток
с url: / api / v1 / namespaces? limit = 1 (вызвано
NewConnectionError (': не удалось установить новое соединение: [Errno 110]
Тайм-аут соединения ',))