舰队开通联邦校验失败怎么办?
问题背景
舰队开通集群联邦功能后,UCS服务会把当前舰队已存在的集群及新加入到舰队的集群自动添加到联邦中。添加过程中,舰队会对集群的网络状态、集群版本、clusterrole、clusterrolebinding等项目做校验。如果添加过程中校验存在问题,集群加入联邦会失败。参考本章节内容修复问题后,可以单击“重新接入”尝试再次接入集群联邦。
现象一:提示clusterrole、clusterrolebinding已存在
问题原因:一个集群不能同时加入两个或两个以上的联邦。有这个报错提示,说明当前集群已经添加到联邦中,或者曾经加入过联邦但是存在资源残留。
解决方案:手工清理残留资源。
操作步骤:
- 获取报错集群的kubeconfig配置文件,并准备kubectl及运行节点,将kubeconfig文件放在运行节点/tmp目录。
- 执行如下命令,清理残留资源。
alias kubectl='kubectl --kubeconfig=/tmp/kubeconfig'
kubectl delete clusterrolebinding `kubectl get clusterrolebinding |grep karmada-controller-manager | awk '{print $1}'`
kubectl delete clusterrole `kubectl get clusterrole |grep karmada-controller-manager | awk '{print $1}'`
kubectl delete namespace `kubectl get namespace |egrep 'karmada-[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' |awk '{print $1}'`
现象三:CCE集群已绑定EIP,集群加入联邦仍失败,报错:network in cluster is stable, please retry it later
问题原因:联邦需要访问CCE集群的5443端口,但是CCE集群的控制面安全组入方向规则不允许124.70.21.61(源地址)访问CCE集群的5443端口。
解决方案:修改CCE控制面入方向安全组,允许124.70.21.61(源地址)访问CCE集群的5443端口。
现象四:显示已接入集群联邦,状态异常,报错:cluster is not reachable
请在对应的成员集群中执行以下命令,查询ServiceAccount是否存在。其中{cluster_name}请替换为集群名称。
kubectl get sa -A|grep karmada-{cluster_name}.clusterspace.{cluster_name}
若回显显示ServiceAccount不存在,请先将该成员集群移出舰队,再重新添加该集群至对应舰队。