我正在运行一个通过 python 客户端调用 kubernetes 的简单脚本:
from kubernetes import client, config
# Configs can be set in Configuration class directly or using helper utility
config.load_kube_config()
v1 = client.CoreV1Api()
print("Listing pods with their IPs:")
ret = v1.list_pod_for_all_namespaces(watch=False)
for i in ret.items:
print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))
.
但是,它似乎无法获得正确的凭据。我可以使用 kubectl 命令行界面,我注意到.kube/config
每当我发出命令(例如,kubectl get pods
)时,它都会使用访问令牌和到期时间填充我的文件。
只要该令牌尚未过期,我的 python 脚本就可以正常运行。但是,一旦该令牌过期,它似乎无法刷新它,而是失败并告诉我 set GOOGLE_APPLICATION_CREDENTIALS
。当然,当我使用密钥文件创建服务帐户并指向GOOGLE_APPLICATION_CREDENTIALS
该密钥文件时,它给了我以下错误:
RefreshError: ('invalid_scope: Empty or missing scope not allowed.', u'{\n "error" : "invalid_scope",\n "error_description" : "Empty or missing scope not allowed."\n}')
我对这个客户的理解有问题吗?感谢您对此的任何帮助!
我正在使用 kubernetes python 库的 3.0.0 版本。如果它有帮助,这是我的.kube/config
:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <CERTIFICATE_DATA>
server: <IP_ADDRESS>
name: <cluster_name>
contexts:
- context:
cluster: <cluster_name>
user: <cluster_name>
name: <cluster_name>
users:
- name: <cluster_name>
user:
auth-provider:
config:
access-token: <SOME_ACCESS_TOKEN>
cmd-args: config config-helper --format=json
cmd-path: /usr/lib/google-cloud-sdk/bin/gcloud
expiry: 2017-11-10T03:20:19Z
expiry-key: '{.credential.token_expiry}'
token-key: '{.credential.access_token}'
name: gcp