舰队开通联邦校验失败怎么办?
问题背景
舰队开通集群联邦功能后,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
问题原因:舰队启用联邦后,访问CCE集群,当前需要通过EIP解决网络连接问题。
解决方案:给CCE集群绑定EIP。详细操作请参考配置集群API Server公网访问。
现象三:CCE集群已绑定EIP,集群加入联邦仍失败,报错:network in cluster is unstable, please retry it later
问题原因:联邦需要访问CCE集群的5443端口,但是CCE集群的控制面安全组入方向规则不允许120.46.145.12(源地址)访问CCE集群的5443端口。
解决方案:修改CCE控制面入方向安全组,允许120.46.145.12(源地址)访问CCE集群的5443端口。
现象四:显示已接入集群联邦,状态异常,报错:cluster is not reachable
请在对应的成员集群中执行以下命令,查询ServiceAccount是否存在。其中{cluster_name}请替换为集群名称。
kubectl get sa -A|grep karmada-{cluster_name}.clusterspace.{cluster_name}
若回显显示ServiceAccount不存在,请先将该成员集群移出舰队,再重新添加该集群至对应舰队。
现象五:集群加入联邦报错:the same cluster has been registered with name xx 或者cluster xxx is joined successfully
问题原因:集群加入联邦中时异常中止。
解决方案:请先将集群从联邦中移出,再重新加入即可。