我想使用Kubernetes API,即使用list_namespace
方法列出集群中存在的命名空间。
当我从Linux机器上运行以下代码时,它工作正常。
我创建了一个Jenkins管道作业,并按以下引发连接超时错误的方式调用python文件。
如果我在相同的Jenkins文件中执行kubectl get ns
,则得到输出。
我认为代理服务器不允许这样做。但是找不到解决方法。
我的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,连接=无,读取=无, 断开连接后,重定向=无,状态=无)) 'NewConnectionError(':无法建立新的连接: [Errno 110]连接超时',)':/ api / v1 / namespaces?limit = 1
调用CoreV1Api-> list_namespace时发生异常: HTTPSConnectionPool(host ='XXXXXXX',port = xxxx):超过最大重试次数 网址:/ api / v1 / namespaces?limit = 1(由 NewConnectionError(':无法建立新的连接:[Errno 110] 连接超时',))
答案 0 :(得分:0)
通过使用Configuration类传递代理获得修补程序:
configuration = kubernetes.client.Configuration()
configuration.proxy='http://www-proxy-<myproxyserver>'
api_instance = kubernetes.client.ApiClient(configuration)