1.7. 重新导入集群失败并显示未知颁发机构错误


如果您在将受管集群重新导入到 Red Hat Advanced Cluster Management hub 集群时遇到问题,请按照以下步骤排除此问题。

使用 Red Hat Advanced Cluster Management 置备 OpenShift Container Platform 集群后,当将 API 服务器证书添加到 OpenShift Container Platform 集群时,重新导入集群可能会失败,并显示一个 x509: certificate signed by unknown authority 错误。

在重新导入受管集群后,运行以下命令在 Red Hat Advanced Cluster Management hub 集群上获取导入控制器日志:

kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 -f
Copy to Clipboard Toggle word wrap

如果出现以下错误日志,受管集群 API 服务器证书可能会改变:

ERROR Reconciler error {"controller": "clusterdeployment-controller", "object": {"name":"awscluster1","namespace":"awscluster1"}, "namespace": "awscluster1", "name": "awscluster1", "reconcileID": "a2cccf24-2547-4e26-95fb-f258a6710d80", "error": "Get \"https://api.awscluster1.dev04.red-chesterfield.com:6443/api?timeout=32s\": x509: certificate signed by unknown authority"}

要确定受管集群 API 服务器证书是否已更改,请完成以下步骤:

  1. 运行以下命令,将 your-managed-cluster-name 替换为受管集群的名称来指定受管集群名称:

    cluster_name=<your-managed-cluster-name>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令获取受管集群 kubeconfig secret 名称:

    kubeconfig_secret_name=$(oc -n ${cluster_name} get clusterdeployments ${cluster_name} -ojsonpath='{.spec.clusterMetadata.adminKubeconfigSecretRef.name}')
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,将 kubeconfig 导出到新文件:

    oc -n ${cluster_name} get secret ${kubeconfig_secret_name} -ojsonpath={.data.kubeconfig} | base64 -d > kubeconfig.old
    Copy to Clipboard Toggle word wrap
    export KUBECONFIG=kubeconfig.old
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,使用 kubeconfig 从受管集群获取命名空间:

    oc get ns
    Copy to Clipboard Toggle word wrap

如果您收到类似以下消息的错误,您的集群 API 服务器符已更改,且 kubeconfig 文件无效。

无法连接到服务器:x509: certificate signed by unknown authority

受管集群管理员必须为受管集群创建一个新的有效的 kubeconfig 文件。

创建新的 kubeconfig 后,执行以下步骤为受管集群更新新的 kubeconfig

  1. 运行以下命令,将 your-managed-cluster-name 替换为受管集群的名称来指定受管集群名称:

    cluster_name=<your-managed-cluster-name>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令为受管集群更新新的 kubeconfig

    kubeconfig=$(cat <your-new-valid-kubeconfig-file-path> | base64 -w0)
    kubeconfig_patch="[{\"op\":\"replace\", \"path\":\"/data/kubeconfig\", \"value\":\"${kubeconfig}\"}]"
    kubeconfig_secret_name=$(oc -n ${cluster_name} get clusterdeployments ${cluster_name} -ojsonpath='{.spec.clusterMetadata.adminKubeconfigSecretRef.name}')
    Copy to Clipboard Toggle word wrap
    oc -n ${cluster_name} patch secrets ${kubeconfig_secret_name} --type='json' -p=${kubeconfig_patch}
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat