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 スクリプトは正常に実行されます。ただし、そのトークンの有効期限が切れると、トークンを更新できないようで、代わりに失敗し、設定するように指示され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