创建Kubernetes ClusterRoleBinding时遇数组反序列化错误求助
ClusterRoleBinding创建报错原因及修复
你提供的YAML文件中,ClusterRoleBinding的roleRef字段格式错误,这是导致报错的核心原因。
原错误YAML片段:
roleRef: - apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: nodes-admin
报错信息:
Error from server (BadRequest): error when creating "clusterrole.yaml": ClusterRoleBinding in version "v1" cannot be handled as a ClusterRoleBinding: json: cannot unmarshal array into Go struct field ClusterRoleBinding.roleRef of type v1.RoleRef
错误原因解析:
Kubernetes RBAC规范里,ClusterRoleBinding的roleRef是单个对象类型,不需要用-(数组标识)。你给roleRef添加了-,导致它被解析成数组,而K8s API期望的是一个v1.RoleRef结构体,因此无法完成反序列化,抛出上述错误。
修正后的完整YAML:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: nodes-admin rules: - apiGroups: [""] resources: - nodes verbs: - get - list - create - delete --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: nodes-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: user1387 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: nodes-admin
只需去掉roleRef下方的-,让它成为单独的对象即可正常创建。
内容的提问来源于stack exchange,提问作者brandizzi
相关产品推荐
相关产品推荐

