执行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}