升级到3版本后,创建企业空间,再暴露给企业空间,之前操作没有问题;
这次手欠,添加了描述,导致导入企业空间后,企业空间里的生产项目全丢了,备份恢复也失败;
这个不知道是不是一个BUG,风险要命,请重视排查一下

    Connor

    可以检查下项目,也就是对于 namespaces 还在不在。这里可能是修改了集群角色之后,placement 需要自行设置一下。

      Connor 请问有没有删除workspace 或是 namespace呢, 是如何操作的。如果没有删除操作,资源不会平白无故的被删掉

        hongming 没有删除操作,就是创建了企业空间,然后添加了描述(之前操作的时候没有添加描述),目标集群里也有相同名字的企业空间。在目标集群设置集群可见性的时候,暴露了这个企业空间,结果就是该企业空间下的项目全部没有了

          Connor 不知道我理解的对不对, 你有两个H、M两个集群,H 作为host cluster使用,M集群在托管到H集群之前创建了 A workspace,将 M 托管到 H 之后又在 H 上创建了同名的 A workspace,通过 H 设置 M 集群可见性的时候勾选了 M 集群对 A workspace可见,然后你发现 A workspace 下 M 集群中的项目被删除了, 是我描述的这样吗?

          确认一下在 M 集群 kubectl get ns 可以看到你之前的namespace 吗?

            hongming 描述是正确的
            再加入到H集群后,M集群里对应的A workspace里的Namespace就全没了,从后台kubectl get ns也没有了;而且删除的比较快,比正常kubectl delete ns快很多,几乎是瞬间就没有了,比较奇怪

              Connor 可以在H 集群上看看这两个输出结果中的placement 包不包含 M集群

              kubectl get workspacetemplate <A workspace> -o yaml
              kubectl get federatedworkspace <A workspace> -o yaml

              Connor 我应该知道原因了, 因为你在H 集群创建A workspace 的时候并没有勾选 M 集群, 这时候A workspace的 placement 里是没有 M 集群的, 可能会导致 federated controller 将这个资源同步到 M 集群上导致 workspace 被删,应该是一个流程上的问题,我们尝试着复现一下。

              hongming 好的,以后我们就把label解绑一下企业空间再加入Host集群,看链接的帖子这样操作是比较安全的,可以回避这个bug

                Connor 我尝试着复现了一下, 不是我回复里猜测的那个问题,workspace 不会平白无故的被删, kubesphere 的代码中没有直接删除 workspace 和 namespace 的逻辑,只有通过kubesphere UI、通过kubectl delete、通过取消集群授权(取消时会有确认提示),这三方式进行删除。我验证了 kubefed-controller 的问题,即使在H 集群创建 A workspace 时没有勾选 M 集群 ,federated controller 也不会把M cluster 上已经存在的workspace给删掉,增加M集群或H集群授权时也不会影响到M 集群上的workspace。请确认一下是不是在集群授权的时候取消过M集群对A workspace的授权, 或者是直接操作过M集群删除过workspace

                集群上有启用审计模块吗, 可以查一下审计日志

                Connor 再确认一个问题, M集群之前独立使用的时候有开启多集群功能吗,cluster role 是什么

                  hongming 有的,原来有一个Host集群,磁盘IO有问题,切换成新的Host集群了

                  hongming M集群在加入之前,cluster role 是member;开始是加入到一个Host-old里,Host-old集群磁盘IO问题;我们要切换到新的Host集群,在切换到新的Host集群的时候出现的该问题

                    Connor 非常抱歉,问题的根源定位到了,GitHub 上创建了相关的issue。被托管集群加入新的Host 集群这种操作流程是存在一些风险, 我们会增加一些风险提示和校验来逻辑来规避。