Jenkins管道中的k8s_api连接超时

问题描述 投票:4回答:1

我想使用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]连接超时',))

python python-3.x kubernetes jenkins-pipeline urllib3
1个回答
0
投票

通过使用Configuration类传递代理得到了修复:

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

api_instance = kubernetes.client.ApiClient(configuration)
© www.soinside.com 2019 - 2024. All rights reserved.