1.7. 重新导入集群失败并显示未知颁发机构错误
如果您在将受管集群重新导入到 Red Hat Advanced Cluster Management hub 集群时遇到问题,请按照以下步骤排除此问题。
1.7.1. 症状:重新导入集群失败并显示未知颁发机构错误 复制链接链接已复制到粘贴板!
使用 Red Hat Advanced Cluster Management 置备 OpenShift Container Platform 集群后,当将 API 服务器证书添加到 OpenShift Container Platform 集群时,重新导入集群可能会失败,并显示一个 x509: certificate signed by unknown authority 错误。
1.7.2. 鉴别问题: 重新导入集群失败并显示未知颁发机构错误 复制链接链接已复制到粘贴板!
在重新导入受管集群后,运行以下命令在 Red Hat Advanced Cluster Management hub 集群上获取导入控制器日志:
kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 -f
kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 -f
如果出现以下错误日志,受管集群 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 服务器证书是否已更改,请完成以下步骤:
运行以下命令,将
your-managed-cluster-name替换为受管集群的名称来指定受管集群名称:cluster_name=<your-managed-cluster-name>
cluster_name=<your-managed-cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令获取受管集群
kubeconfigsecret 名称:kubeconfig_secret_name=$(oc -n ${cluster_name} get clusterdeployments ${cluster_name} -ojsonpath='{.spec.clusterMetadata.adminKubeconfigSecretRef.name}')kubeconfig_secret_name=$(oc -n ${cluster_name} get clusterdeployments ${cluster_name} -ojsonpath='{.spec.clusterMetadata.adminKubeconfigSecretRef.name}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
kubeconfig导出到新文件:oc -n ${cluster_name} get secret ${kubeconfig_secret_name} -ojsonpath={.data.kubeconfig} | base64 -d > kubeconfig.oldoc -n ${cluster_name} get secret ${kubeconfig_secret_name} -ojsonpath={.data.kubeconfig} | base64 -d > kubeconfig.oldCopy to Clipboard Copied! Toggle word wrap Toggle overflow export KUBECONFIG=kubeconfig.old
export KUBECONFIG=kubeconfig.oldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
kubeconfig从受管集群获取命名空间:oc get ns
oc get nsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您收到类似以下消息的错误,您的集群 API 服务器符已更改,且 kubeconfig 文件无效。
无法连接到服务器:x509: certificate signed by unknown authority
1.7.3. 解决问题: 重新导入集群失败并显示未知颁发机构错误 复制链接链接已复制到粘贴板!
受管集群管理员必须为受管集群创建一个新的有效的 kubeconfig 文件。
创建新的 kubeconfig 后,执行以下步骤为受管集群更新新的 kubeconfig :
运行以下命令,将
your-managed-cluster-name替换为受管集群的名称来指定受管集群名称:cluster_name=<your-managed-cluster-name>
cluster_name=<your-managed-cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令为受管集群更新新的
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}')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 Copied! Toggle word wrap Toggle overflow oc -n ${cluster_name} patch secrets ${kubeconfig_secret_name} --type='json' -p=${kubeconfig_patch}oc -n ${cluster_name} patch secrets ${kubeconfig_secret_name} --type='json' -p=${kubeconfig_patch}Copy to Clipboard Copied! Toggle word wrap Toggle overflow