无法从 kubernetes python 客户端连接 GKE Autopilot 集群

问题描述

我在 GKE 上创建了一个 Autopilot 集群

我想通过 Python Kubernetes Client

连接和管理它

我可以获取集群的 kubeconfig

我可以使用命令在本地系统上使用 kubectl 访问集群

gcloud 容器集群获取凭据

当我尝试连接 kubernetes 的 python-client-library 时,出现以下错误

  File "lib/python3.7/site-packages/urllib3/util/retry.py",line 399,in increment
raise MaxRetryError(_pool,url,error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xxx.xx.xxx.xxx',port=443): Max 
retries exceeded with url: /apis/extensions/v1beta1/namespaces/default/ingresses (Caused by 
SSLError(SSLError(136,'[X509] no certificate or crl found (_ssl.c:4140)')))

这是我正在使用的代码

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "863924b908c7.json"

credentials,project = google.auth.default(
    scopes=['https://www.googleapis.com/auth/cloud-platform',])

credentials.refresh(google.auth.transport.requests.Request())

cluster_manager = ClusterManagerClient(credentials=credentials)
# cluster = cluster_manager.get_cluster(project)
config.load_kube_config('config.yaml')

解决方法

这是我想出来的。我认为这是一个很好的解决方案,因为它可以防止中间人攻击(使用 SSL),这与其他 python 代码片段不同。

- (BOOL) application: (UIApplication *) app
             openURL: (NSURL *) url
             options: (NSDictionary <UIApplicationOpenURLOptionsKey,id> *) 
               options {
                      if ([[FIRAuth auth] canHandleURL: url]) {
                           return YES;
                       } else {
                       // URL not auth related,developer should handle it.
                          return NO;
                       }
             }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...