- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试阅读GKE集群中 Activity pods 的列表。我还希望能够使用python客户端以编程方式创建和/或删除Pod。我应该授予我的服务帐户哪些IAM访问权限才能完成此任务?由于我一直在尝试使它工作的几乎所有方法,因此该服务帐户当前具有Kubernetes Engine Admin
,Kubernetes Engine Cluster Admin
和Kubernetes Engine Developer
访问权限。
这是一些示例代码,试图读取群集IP的“默认” namespace 中的Pod
import kubernetes
from oauth2client.client import GoogleCredentials
def get_access_config(cluster_ip):
# access the k8s cluster, https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/
credentials = GoogleCredentials.get_application_default()
access_token = credentials.get_access_token()
# Create a configuration object
access_configuration = kubernetes.client.Configuration()
# Specify the access configuration to access k8s cluster
access_configuration.host = f"https://{cluster_ip}:443"
access_configuration.verify_ssl = False
access_configuration.api_key = {"authorization": "Bearer " + access_token.access_token}
return access_configuration
def get_pod_list(access_configuration):
v1 = kubernetes.client.CoreV1Api(kubernetes.client.ApiClient(access_configuration))
print("Listing pods with their IPs:")
ret = v1.list_namespaced_pod(namespace='default')
cluster_ip = '0.0.0.0' # replace with your cluster_ip
access_configuration = get_access_config(cluster_ip)
get_pod_list(access_configuration)
每当我运行
get_pod_list
函数时,都会得到以下回溯:
Traceback (most recent call last): File "<input>", line 3, in
<module> File
"/Users/<user>/miniconda3/envs/<my_env>/lib/python3.7/site-packages/kubernetes/client/api/core_v1_api.py",
line 12803, in list_namespaced_pod
(data) = self.list_namespaced_pod_with_http_info(namespace, **kwargs) # noqa: E501 File "/Users/<user>/miniconda3/envs/<my_env>/lib/python3.7/site-packages/kubernetes/client/api/core_v1_api.py",
line 12905, in list_namespaced_pod_with_http_info
collection_formats=collection_formats) File "/Users/<user>/miniconda3/envs/<my_env>/lib/python3.7/site-packages/kubernetes/client/api_client.py",
line 345, in call_api
_preload_content, _request_timeout) File "/Users/<user>/miniconda3/envs/<my_env>/lib/python3.7/site-packages/kubernetes/client/api_client.py",
line 176, in __call_api
_request_timeout=_request_timeout) File "/Users/<user>/miniconda3/envs/<my_env>/lib/python3.7/site-packages/kubernetes/client/api_client.py",
line 366, in request
headers=headers) File "/Users/<user>/miniconda3/envs/<my_env>/lib/python3.7/site-packages/kubernetes/client/rest.py",
line 241, in GET
query_params=query_params) File "/Users/<user>/miniconda3/envs/<my_env>/lib/python3.7/site-packages/kubernetes/client/rest.py",
line 231, in request
raise ApiException(http_resp=r) kubernetes.client.rest.ApiException: (401) Reason: Unauthorized HTTP
response headers: HTTPHeaderDict({'Audit-Id':
'22bd2789-30d0-4be8-a211-277a39396de7', 'Content-Type':
'application/json', 'Date': 'Wed, 22 Jul 2020 22:12:17 GMT',
'Content-Length': '129'}) HTTP response body:
{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401} ```
GOOGLE_APPLICATION_CREDENTIALS
路径变量可能指向错误的JSON文件,但是我检查了以下代码,并指向了正确的文件:
import os
os.environ('GOOGLE_APPLICATION_CREDENTIALS')
检查之后,我尝试了
https://github.com/kubernetes-client/python的代码的简单版本:
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_namespaced_pod(namespace='default')
该版本适用!!!那么,将
GoogleCredentials
加载到
api_client
中的
kubernetes.client.CoreV1Api
版本有什么问题/差异?
GoogleCredentials.get_application_default()
行是否以某种方式寻找并找到了错误的凭证?如果是这样,如何将其指向正确的凭据?
最佳答案
您没有提供步骤❓,因此这对我有用,我的服务帐户具有“管理员GKE”访问权限:
创建服务帐户凭据:
gcloud iam service-accounts keys create cred.json --iam-account mytestserviceaccount@project.iam.gserviceaccount.com
created key [xxxxxxxxxx] of type [json] as [cred.json] for [mytestserviceaccount@project.iam.gserviceaccount.com]``
激活服务帐户:
gcloud auth activate-service-account mytestserviceaccount@project.iam.gserviceaccount.com --key-file=cred.json
您可以通过以下方式进行检查:
gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* mytestserviceaccount@dproject.iam.gserviceaccount.com
name@sample.com
然后:
gcloud container clusters get-credentials gke-cluster-name --zone us-central1-a --project project
确保您允许用户管理员访问您的服务帐户:
kubectl get pods
应该可以工作。 关于python - kubernetes.client.rest.ApiException:(401)原因:未经授权;创建/删除GKE Pane 的IAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63044154/
如何获取 Refit.ApiException 的内容? 根据内部内容是什么,我想让用户知道如何继续。所以我看到抛出的异常有以下内容...... 内容 "{\"error\":\"invalid_gr
我的排行榜无法正常工作。我可以显示我的排行榜,但提交分数无法使用以下代码我试图找出问题所在,我得到一个 APiException 留言: 26502:CLIENT_RECONNECT_REQUIRED
我同时使用 Refit 和 Polly 来调用 restful API,我想知道 Refits ApiException 的重试(如果有的话)策略应该是什么? public static Policy
我一直在尝试为 android 应用程序实现地理围栏,现在在初始化 GeoFenceRequest 之后根据 Google 的文档,然后将其添加到 GeoFencingClient geofencin
这个问题在这里已经有了答案: Firebase UI authentication with google fails with message (code:10 message:10) (4 个答
我正在为 Android Wear 构建一个 Android 应用。为了节省电池电量,我正在尝试使用 Geofences 来跟踪您是否进入或离开某个位置。但我无法让它工作。 首先,我不确定 Andro
当我尝试通过 google 登录时,出现此异常 2020-11-12 13:32:51.571 7351-7351/com.test.app W/aaab: com.google.android.gm
我的应用程序使用 client-java-8.0.2.jar 和 java 1.8.0_252 版本。使用以下代码创建 Pod 时出现以下错误, 代码: // get the default api-
目前,我有以下使用任务 API 的异步调用。 异步 Task task = googleSignInClient.silentSignIn(); if (!task.isSuccessful()) {
我收到 Facebook ApiException: Invalid Application error 当我尝试使用我的开发者帐户以外的其他帐户登录时,甚至我的沙盒模式已关闭,因为我已经检查了其他有
我创建了一个引用 http://django-rest-framework.org/api-guide/exceptions.html 的自定义异常. 请知道我有自己的身份验证后端。因此我没有使用 r
我正在 Android 工作室开发一个应用程序,该应用程序使用 Google Play 游戏服务获取成就和排行榜,但在尝试登录时出现错误。我按照文档进行操作,我的所有 key 和 OAuth 代码都匹
我已经成功实现了 Google 登录,它工作正常,当我实际完成整个登录过程时,我没有遇到任何异常。 但是如果我点击 Google 登录按钮然后点击后退按钮关闭对话框,我会以某种方式收到以下错误: Ca
是的一切都在 firebase 和 flutter 中设置得很好1)在firebase项目中添加了最新的SHA-1指纹2) 启用谷歌登录选项3) 添加了支持的邮箱 应用程序仍在调试中添加调试 key
我试图弄清楚为什么我的 ApiException 仍然返回文本/html 响应而不是 ApiException 渲染方法中表示的 json 响应。它给了我正确的错误消息,但它没有将它呈现为 json。
这是我遇到的异常:com.google.android.gms.common.api.ApiException: 12500: @Override public void onActivityResu
当我尝试在 Android 上静默登录时,我经常遇到以下错误。我该如何调试。这是什么原因。 (我的 Android 手机上有一个有效的 Google 帐户。) signInSilently(): fa
最近遇到一个问题,添加地理围栏会随机失败并出现 ApiException,状态代码 13 定义为“错误”,没有提供额外的详细信息。 通常错误代码是特定于地理围栏的,但这似乎是一个普遍的失败。有谁知道为
我正在使用 Algorithmia,它是互联网上经过训练的 ML 函数的存储库。几周前,出现了一个问题,从那时起,一直无法弄清楚发生了什么。我正在执行这段代码,可以在他们的官方网站上找到该代码。 im
我想在我的一个 Android 应用程序中使用 Google Places API。但是我收到了这个错误: com.google.android.gms.tasks.RuntimeExecutionE
我是一名优秀的程序员,十分优秀!