3

我正在运行一个通过 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
4

0 回答 0