部署Exchange Listener应用flannel RBAC配置时出现版本不匹配报错求助
问题原因
你执行的旧版flannel RBAC清单使用了已废弃的rbac.authorization.k8s.io/v1beta1API接口,该接口在Kubernetes 1.22及以上版本已被正式移除,因此会抛出资源类型不匹配的报错。你之前部署成功时集群版本应该低于1.22,后续集群升级后才会出现该报错。
解决方案
方案1(推荐,无需额外操作)
从你提供的集群Pod查询结果可以确认:kube-flannel-ds Pod已处于正常运行状态,就绪状态1/1,无重启记录,说明flannel所需的RBAC权限已经配置完成,完全不需要再执行这条kubectl apply命令,直接跳过该步骤继续部署Exchange Listener即可。
方案2(需要重新配置RBAC时使用)
如果你确实需要重新部署flannel RBAC规则,直接使用适配v1版本API的清单即可,步骤如下:
- 本地新建
kube-flannel-rbac.yml文件,写入以下内容:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: flannel rules: - apiGroups: - "" resources: - pods verbs: - get - apiGroups: - "" resources: - nodes verbs: - list - watch - apiGroups: - "" resources: - nodes/status verbs: - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: flannel roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: flannel subjects: - kind: ServiceAccount name: flannel namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: flannel namespace: kube-system
- 执行命令生效:
kubectl apply -f kube-flannel-rbac.yml
该清单适配所有Kubernetes 1.8+主流版本,不会再出现API版本不兼容的报错。
内容的提问来源于stack exchange,提问作者Jekaterina Aleksandrenkova
相关产品推荐
相关产品推荐

