похоже, что мой кластер AKS не может выполнять базовые c запросы к k8s api, т. Е. Используя внутрикластерный токен для модулей. Все работает нормально, когда я использую тот же код с моей локальной машины, т.е. с config.load_kube_config
.
Я использую python k8s client 11.0.0, и я загружаю конфигурацию через config.load_incluster_config()
. Я получаю следующую ошибку:
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401}
при попытке просто перечислить мои модули (используя client.list_namespaced_pod
). Я также попытался выполнить необработанный запрос на получение, но результат тот же.
Я попытался расширить роль кластера для конкретного доступа к ресурсам, здесь моя роль кластера и привязка кластера:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: clusterrolename
rules:
- apiGroups:
- ""
resources:
- pods
- namespaces
verbs:
- get
- list
- apiGroups:
- metrics.k8s.io
resources:
- '*'
verbs:
- get
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: clusterrolebindingname
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: clusterrolename
subjects:
- kind: ServiceAccount
name: default
namespace: mynamespace
но я всегда имеют одинаковый результат.
Один и тот же подход не работает одинаково на linux и windows узлах.
Использование одного и того же подхода раньше было успешным на машине linux (чистый linux кластер).
Может быть связано с версией SDK? Может быть что-то другое в кластере? Кто-нибудь знает, как я могу получить список авторизации для любого конкретного c ServiceAccount?