我想使用Kubernetes API列出集群中存在的名称空间,即使用list_namespace
方法。
当我从我的Linux机器上运行下面提到的代码时,它运行正常。
我创建了一个Jenkins管道作业,并调用python文件,如下面的抛出Connection Timeout错误。
如果我在相同的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):使用url超出最大重试次数:/ api / v1 / namespaces?limit = 1(由NewConnectionError引起(':无法建立新连接) :[Errno 110]连接超时',))
通过使用Configuration类传递代理得到了修复:
configuration = kubernetes.client.Configuration()
configuration.proxy='http://www-proxy-<myproxyserver>'
api_instance = kubernetes.client.ApiClient(configuration)