文档首页/ 华为云UCS/ 常见问题/ 容器舰队/ 执行kubectl命令报错Error from server (Forbidden)怎么办?
更新时间:2024-09-11 GMT+08:00

执行kubectl命令报错Error from server (Forbidden)怎么办?

问题描述

在使用集群联邦的过程中,执行kubectl命令,出现如下所示的报错信息。

可能原因

可能是由于集群联邦内成员集群的资源对象ClusterRole或者ClusterRoleBinding被删除。集群联邦内若有一个及以上的成员集群出现上述情况,就会导致kubectl命令请求中断并返回该错误。

解决方案

重新创建该成员集群的ClusterRole与ClusterRoleBinding资源对象。

ClusterRole的YAML文件示例如下。其中,{clusterName}请替换为成员集群的名称。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: karmada-controller-manager:karmada-{clusterName}
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'
- nonResourceURLs:
  - '*'
  verbs:
  - get

ClusterRoleBinding的YAML文件示例如下。其中,{clusterName}请替换为成员集群的名称,{karmada-manage-namespace}请替换为karmada管理的命名空间名称,您可以通过执行kubectl get ns|grep karmada获取。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: karmada-controller-manager:karmada-{clusterName}
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: karmada-controller-manager:karmada-{clusterName}
subjects:
- kind: ServiceAccount
  name: karmada-{clusterName}
  namespace: {karmada-manage-namespace}