运行 kubectl 的 Pod 尝试访问外部集群

运行 kubectl 的 Pod 尝试访问外部集群

我在 kubernetes 集群(clusterA)中使用 pod(图像 bitnami/kubectl),但 kubeconfig 设置为指向另一个集群(clusterB)。

使用通过 kubeadm 安装的本地 kubernetes 1.21.7(在虚拟机上)。

使用的 kubeconfig:

apiVersion: v1
kind: Config
clusters:
- name: default-cluster
  cluster:
    certificate-authority-data: XXXXXXXXXXXXXXXXXXXXXX
    server: https://clusterB:6443
contexts:
- name: default-context
  context:
    cluster: default-cluster
    namespace: default
    user: default-user
current-context: default-context
users:
- name: default-user
  user:
    token: YYYYYYYYYYYYYYYYYYYYYY

但即使 kubeconfig 是正确的,clusterA 也不允许请求离开 clusterA 到达 clusterB。clusterA 中的 kubernetes 控制平面似乎将 pod kubectl 请求解释为试图控制 clusterA 本身,但这不是我想要做的。我试图访问 clusterB(在 kubeconfig 中的“服务器”中定义)。

这是 kubectl 运行时的错误:

Error from server (Forbidden): error when retrieving current configuration of:
Resource: "/v1, Resource=secrets", GroupVersionKind: "/v1, Kind=Secret"
Name: "mysecret", Namespace: "istio-system"
from server for: "STDIN": secrets "mysecret" is forbidden: User "system:serviceaccount:mynamespace:default" cannot get resource "secrets" in API group "" in the namespace "istio-system"

编辑:我正在使用 kubectl 设置自定义 kubeconfig:

# kubectl --kubeconfig=/etc/custom.kubeconfig cluster-info
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Error from server (Forbidden): services is forbidden: User "system:serviceaccount:mynamespace:default" cannot list resource "services" in API group "" in the namespace "kube-system"

# grep server /etc/letsencrypt/custom.kubeconfig
server: https://clusterB:6443

编辑2:

# kubectl --kubeconfig=/etc/custom.kubeconfig cluster-info dump
Error from server (Forbidden): nodes is forbidden: User "system:serviceaccount:cadeado--producao:default" cannot list resource "nodes" in API group "" at the cluster scope

答案1

从 pod 发出以下命令后:

kubectl cluster-info

你得到了什么?

您遇到的问题似乎与用户访问有关,您需要为
默认用户提供适当的 RBAC 权限。

相关内容