我有一个正在运行的 google kubernetes 集群,我正在尝试使用 python-client kubernetes SDK 手动扩展一些 pod。我在终端上使用以下命令来获取我的 Google 帐户凭据:
gcloud auth login
接下来,我使用默认命令连接到我的集群以在本地获取我的 kube-config:
gcloud container clusters get-credentials ${clusterName} --zone ${zoneName}--${projectName}
使用 python SDK 加载我的配置:
from kubernetes import client, config
import kubernetes.client
config.load_kube_config()
v1 = client.CoreV1Api()
api = client.CustomObjectsApi()
k8s_apps_v1 = client.AppsV1Api()
通过此代码,我可以获得集群信息,并且可以根据需要扩展我的 Pod。这会持续大约 30-45 分钟,之后当我尝试发出 API 请求来扩展集群中的 Pod 时,我会收到包含以下错误的响应:
kubernetes.client.exceptions.ApiException: (401)
Reason: Unauthorized
HTTP response headers: HTTPHeaderDict({'Audit-Id': '697f82b7-4db9-46c3-b873-cef49a45bb19', 'Cache-Control': 'no-cache, private', 'Content-Type': 'application/json', 'Date': 'Tue, 31 May 2022 01:20:53 GMT', 'Content-Length': '129'})
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401}
为什么我获得授权后却无法再进行 API 调用,如何解决此问题?
最佳答案
要解决此问题,您应该在调用 API 之前刷新 token 。这个doc对于检查 token 是否过期非常有用,load_gcp_token
函数仅在 GCP token 过期时刷新 GCP token 。
关于kubernetes - 为什么我有时会在 GKE 上的 gcloud API 中收到 "401 unauthorized"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72574725/