1.7. 알 수 없는 권한 오류로 클러스터 다시 가져오기 실패
관리형 클러스터를 Red Hat Advanced Cluster Management Hub 클러스터로 다시 가져올 때 문제가 발생하는 경우 절차에 따라 문제를 해결합니다.
1.7.1. 증상: 클러스터 가져오기가 실패하고 권한 없는 오류와 함께 클러스터 가져오기가 실패합니다.
Red Hat Advanced Cluster Management를 사용하여 OpenShift Container Platform 클러스터를 프로비저닝한 후 OpenShift Container Platform 클러스터에 API 서버 인증서를 변경하거나 추가할 때 알 수 없는 기관 오류로 인해
클러스터를 다시 가져오는 데 실패할 수 있습니다.
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", "awscluster1", "reconcileID": "reconcileID": "a2cccf24-2547-4e26-95b-f2580", "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! 다음 명령을 실행하여 관리형 클러스터
kubeconfig
보안 이름을 가져옵니다.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! 다음 명령을 실행하여
kubeconfig
를 새 파일로 내보냅니다.oc -n ${cluster_name} get secret ${kubeconfig_secret_name} -ojsonpath={.data.kubeconfig} | base64 -d > kubeconfig.old
oc -n ${cluster_name} get secret ${kubeconfig_secret_name} -ojsonpath={.data.kubeconfig} | base64 -d > kubeconfig.old
Copy to Clipboard Copied! export KUBECONFIG=kubeconfig.old
export KUBECONFIG=kubeconfig.old
Copy to Clipboard Copied! 다음 명령을 실행하여
kubeconfig
를 사용하여 관리 클러스터에서 네임스페이스를 가져옵니다.oc get ns
oc get ns
Copy to Clipboard Copied!
다음 메시지와 유사한 오류가 발생하면 클러스터 API 서버ceritificates가 변경되어 kubeconfig
파일이 유효하지 않습니다.
서버에 연결할 수 없음: x509: 알 수 없는 기관에서 서명한 인증서
1.7.3. 문제 해결: Reimporting cluster fails with unknown authority error
관리형 클러스터 관리자는 관리 클러스터에 유효한 새 kubeconfig
파일을 생성해야 합니다.
새 kubeconfig
를 생성한 후 다음 단계를 완료하여 관리 클러스터의 새 kubeconfig
를 업데이트합니다.
다음 명령을 실행하여 your-managed-cluster
-name을 관리형 클러스터의 이름으로
교체하여 관리형 클러스터 이름을 지정합니다.cluster_name=<your-managed-cluster-name>
cluster_name=<your-managed-cluster-name>
Copy to Clipboard Copied! 다음 명령을 실행하여 관리형 클러스터의 새
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! 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!