1.9. 문제 해결
문제 해결 가이드를 사용하기 전에 oc adm must-gather
명령을 실행하여 세부 정보, 로그 및 디버깅 문제 단계를 수행할 수 있습니다. 자세한 내용은 must-gather 명령 실행을 참조하십시오.
또한 역할 기반 액세스를 확인합니다. 자세한 내용은 다중 클러스터 엔진 운영자 역할 기반 액세스 제어를 참조하십시오.
1.9.1. 문서화된 문제 해결
다중 클러스터 엔진 Operator의 문제 해결 주제 목록을 확인합니다.
설치:
설치 작업의 기본 문서를 보려면 다중 클러스터 엔진 Operator 설치 및 업그레이드를 참조하십시오.
클러스터 관리:
클러스터 관리에 대한 주요 문서를 보려면 클러스터 라이프사이클 소개를 참조하십시오.
- 기존 클러스터에 Day-two 노드 추가 문제 해결 실패
- 오프라인 클러스터 문제 해결
- 관리형 클러스터 가져오기 실패 문제 해결
- 알 수 없는 권한 오류로 클러스터 다시 가져오기 실패
- 가져오기 보류 중 상태의 클러스터 문제 해결
- 인증서 변경 후 가져온 클러스터 오프라인 문제 해결
- 클러스터 상태가 오프라인에서 사용 가능으로 변경 문제 해결
- VMware vSphere에서 클러스터 생성 문제 해결
- 보류 중 또는 실패 상태의 콘솔에서 클러스터 문제 해결
- OpenShift Container Platform 버전 3.11 클러스터 가져오기 실패 문제 해결
- 성능이 저하된 조건으로 Klusterlet 문제 해결
- 클러스터를 삭제한 후에도 네임스페이스가 남아 있음
- 클러스터를 가져올 때 auto-import-secret-exists 오류
- 배치 생성 후 누락된 PlacementDecision 문제 해결
- Dell 하드웨어에서 베어 메탈 호스트의 검색 실패 문제 해결
- 최소 ISO 부팅 실패 문제 해결
-
호스팅된 컨트롤 플레인 클러스터를 사용하여 ROSA에
설치
중인 설치 상태 문제 해결 -
호스트된 컨트롤 플레인 클러스터가
있는
ROSA에서 모든 관리 클러스터의 알 수 없음
1.9.2. must-gather 명령을 실행하여 문제 해결
문제 해결을 시작하려면 사용자가 must-gather
명령을 실행하여 문제를 디버깅하는 데 필요한 문제 해결 시나리오에 대해 확인한 다음 명령 사용을 시작하는 절차를 참조하십시오.
필수 액세스: 클러스터 관리자
1.9.2.1. must-gather 시나리오
시나리오 1: 문서화된 문제 해결 섹션을 사용하여 문제에 대한 해결 방법이 문서화되어 있는지 확인합니다. 이 가이드는 제품의 주요 기능에 의해 구성됩니다.
이 시나리오에서는 가이드가 설명서에 있는지 확인합니다.
-
시나리오 2: 해결 단계에 문제가 문서화되지 않은 경우
must-gather
명령을 실행하고 출력을 사용하여 문제를 디버깅합니다. -
시나리오 3:
must-gather
명령의 출력을 사용하여 문제를 디버깅할 수 없는 경우 Red Hat 지원과 출력을 공유하십시오.
1.9.2.2. must-gather 절차
must-gather
명령을 사용하려면 다음 절차를 참조하십시오.
-
must-gather
명령에 대해 알아보고 OpenShift Container Platform 설명서에서 클러스터에 대한 데이터 수집에 필요한 사전 요구 사항을 설치합니다. 클러스터에 로그인합니다. 일반적인 사용 사례의 경우 엔진 클러스터에 로그인하는 동안
must-gather
를 실행해야 합니다.참고: 관리 클러스터를 확인하려면
cluster-scoped-resources
디렉터리에 있는gather-managed.log
파일을 찾습니다.<your-directory>/cluster-scoped-resources/gather-managed.log>
JOINED 및 AVAILABLE 열에
True
가 설정되지 않은 관리형 클러스터를 확인합니다.True
상태와 연결되지 않은 클러스터에서must-gather
명령을 실행할 수 있습니다.- 데이터 및 디렉터리 수집에 사용되는 Kubernetes 이미지에 대한 다중 클러스터 엔진을 추가합니다. 다음 명령을 실행합니다.
oc adm must-gather --image=registry.redhat.io/multicluster-engine/must-gather-rhel9:v2.5 --dest-dir=<directory>
지정된 디렉터리로 이동하여 다음 수준에서 구성된 출력을 확인합니다.
-
두 개의 피어 수준:
cluster-scoped-resources
및namespace
resources. - 각 하위 수준: 클러스터 범위 및 네임스페이스 범위 리소스 모두에 대한 사용자 정의 리소스 정의에 대한 API 그룹입니다.
-
유형별로 정렬된 YAML 파일 각의 다음 수준 .
-
두 개의 피어 수준:
1.9.2.3. 연결이 끊긴 환경의 must-gather
연결이 끊긴 환경에서 must-gather
명령을 실행하려면 다음 단계를 완료합니다.
- 연결이 끊긴 환경에서 Red Hat Operator 카탈로그 이미지를 미러 레지스트리에 미러링합니다. 자세한 내용은 연결이 끊긴 네트워크에 설치를 참조하십시오.
-
다음 명령을 실행하여 미러 레지스트리에서 이미지를 참조하는 로그를 추출합니다.
sha256
을 현재 이미지로 교체합니다.
REGISTRY=registry.example.com:5000 IMAGE=$REGISTRY/multicluster-engine/must-gather-rhel9@sha256:ff9f37eb400dc1f7d07a9b6f2da9064992934b69847d17f59e385783c071b9d8> oc adm must-gather --image=$IMAGE --dest-dir=./data
1.9.2.4. 호스트 클러스터의 must-gather
호스팅된 컨트롤 플레인 클러스터에 문제가 발생하는 경우 must-gather
명령을 실행하여 문제 해결을 위한 정보를 수집할 수 있습니다.
필수 액세스: 클러스터 관리
1.9.2.4.1. 호스팅된 클러스터의 must-gather 명령 정보
must-gather
명령은 관리 클러스터 및 호스팅 클러스터에 대한 출력을 생성합니다. 수집되는 데이터에 대해 자세히 알아보십시오.
다음 데이터는 다중 클러스터 엔진 Operator 허브 클러스터에서 수집됩니다.
- 클러스터 범위 리소스: 이러한 리소스는 관리 클러스터의 노드 정의입니다.
-
hypershift-dump
압축 파일: 이 파일은 다른 사용자와 콘텐츠를 공유해야 하는 경우에 유용합니다. - 네임스페이스 리소스: 이러한 리소스에는 구성 맵, 서비스, 이벤트 및 로그와 같은 관련 네임스페이스의 모든 오브젝트가 포함됩니다.
- 네트워크 로그: 이 로그에는 OVN northbound 및 southbound 데이터베이스와 각각에 대한 상태가 포함됩니다.
- 호스트 클러스터: 이 수준의 출력에는 호스팅된 클러스터 내부의 모든 리소스가 포함됩니다.
다음 데이터는 호스팅 클러스터에서 수집됩니다.
- 클러스터 범위 리소스: 이러한 리소스에는 노드 및 CRD와 같은 모든 클러스터 전체 오브젝트가 포함됩니다.
- 네임스페이스 리소스: 이러한 리소스에는 구성 맵, 서비스, 이벤트 및 로그와 같은 관련 네임스페이스의 모든 오브젝트가 포함됩니다.
출력에 클러스터의 보안 오브젝트가 포함되어 있지 않지만 시크릿 이름에 대한 참조를 포함할 수 있습니다.
1.9.2.4.2. 사전 요구 사항
must-gather 명령을 실행하여 정보를 수집하려면 다음 사전 요구 사항을 충족해야 합니다.
-
kubeconfig
파일이 로드되고 다중 클러스터 엔진 Operator 허브 클러스터를 가리키는지 확인해야 합니다. -
HostedCluster
리소스의 name 값과 사용자 정의 리소스가 배포된 네임스페이스가 있어야 합니다.
1.9.2.4.3. 호스트된 클러스터에 대한 must-gather 명령 입력
must-gather
명령에서 정보를 수집하려면 다음 프로세스를 참조하십시오.
호스트된 클러스터에 대한 정보를 수집하려면 다음 명령을 입력합니다. &
lt;v2.x
>를 사용 중인 버전으로 바꿉니다.oc adm must-gather --image=registry.redhat.io/multicluster-engine/must-gather-rhel9:<v2.x> /usr/bin/gather hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE hosted-cluster-name=HOSTEDCLUSTERNAME
hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE
매개변수는 선택 사항입니다. 매개변수를 포함하지 않으면 호스트된 클러스터가 기본 네임스페이스인 클러스터인 것처럼 명령이실행됩니다
.명령의 결과를 압축 파일에 저장하려면 동일한 명령을 실행하고 선택 사항인
--dest-dir=NAME
매개 변수를 추가합니다.NAME
을 결과를 저장할 디렉터리의 이름으로 바꿉니다. <v2.x
>를 사용 중인 버전으로 바꿉니다. 선택적 매개변수를 사용하여 다음 명령을 참조하십시오.oc adm must-gather --image=registry.redhat.io/multicluster-engine/must-gather-rhel9:<v2.x> /usr/bin/gather hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE hosted-cluster-name=HOSTEDCLUSTERNAME --dest-dir=NAME ; tar -cvzf NAME.tgz NAME
1.9.2.4.4. 연결이 끊긴 환경에서 must-gather 명령 입력
연결이 끊긴 환경에서 must-gather
명령을 실행하려면 다음 단계를 완료합니다.
- 연결이 끊긴 환경에서 Red Hat Operator 카탈로그 이미지를 미러 레지스트리에 미러링합니다. 자세한 내용은 연결이 끊긴 네트워크에 설치를 참조하십시오.
다음 명령을 실행하여 미러 레지스트리에서 이미지를 참조하는 로그를 추출합니다.
REGISTRY=registry.example.com:5000 IMAGE=$REGISTRY/multicluster-engine/must-gather-rhel8@sha256:ff9f37eb400dc1f7d07a9b6f2da9064992934b69847d17f59e385783c071b9d8 oc adm must-gather --image=$IMAGE /usr/bin/gather hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE hosted-cluster-name=HOSTEDCLUSTERNAME --dest-dir=./data
1.9.2.4.5. 추가 리소스
- 호스트된 컨트롤 플레인 문제 해결에 대한 자세한 내용은 OpenShift Container Platform 설명서의 호스트된 컨트롤 플레인 문제 해결을 참조하십시오.
1.9.3. 문제 해결: 보류 중인 사용자 작업과 함께 기존 클러스터에 Day-two 노드 추가 실패
설치 중에 Zero Touch 프로비저닝 또는 호스트 인벤토리를 사용하여 Kubernetes Operator에 대해 다중 클러스터 엔진에 의해 생성된 기존 클러스터에 노드를 추가하거나 축소할 수 없습니다. 설치 프로세스는 검색 단계에서 올바르게 작동하지만 설치 단계에서는 실패합니다.
네트워크 구성이 실패합니다. 통합 콘솔의 hub 클러스터에서 Pending
사용자 작업이 표시됩니다. 설명에서 재부팅 단계에서 실패하는 것을 확인할 수 있습니다.
설치 호스트에서 실행 중인 에이전트에서 정보를 보고할 수 없기 때문에 실패에 대한 오류 메시지는 매우 정확하지 않습니다.
1.9.3.1. 증상: 2 일 작업자를 위한 설치 실패
Discover 단계 후에는 호스트가 재부팅되어 설치를 계속하지만 네트워크를 구성할 수 없습니다. 다음 증상 및 메시지를 확인합니다.
통합 콘솔의 hub 클러스터에서 추가 노드에서
Pending
사용자 작업을 확인하고재부팅 표시기를
사용합니다.This host is pending user action. Host timed out when pulling ignition. Check the host console... Rebooting
Red Hat OpenShift Container Platform 구성 관리 클러스터에서 기존 클러스터
의 MachineConfig
를 확인합니다.MachineConfigs
중 하나가 다음 디렉토리에 파일을 생성하는지 확인합니다.-
/sysroot/etc/NetworkManager/system-connections/
-
/sysroot/etc/sysconfig/network-scripts/
-
-
설치 호스트의 터미널에서 다음 메시지가 실패하는 호스트를 확인합니다.
journalctl
을 사용하여 로그 메시지를 볼 수 있습니다.
info: networking config is defined in the real root info: will not attempt to propagate initramfs networking
로그에 마지막 메시지가 표시되면 이전에 Symptom 에 나열된 폴더에 기존 네트워크 구성이 이미 발견되었기 때문에 네트워킹 구성이 전파되지 않습니다.
1.9.3.2. 문제 해결: 노드 병합 네트워크 구성 다시 생성
설치 중에 적절한 네트워크 구성을 사용하려면 다음 작업을 수행합니다.
- 허브 클러스터에서 노드를 삭제합니다.
- 이전 프로세스를 반복하여 동일한 방식으로 노드를 설치합니다.
다음 주석을 사용하여 노드의
BareMetalHost
오브젝트를 생성합니다."bmac.agent-install.openshift.io/installer-args": "[\"--append-karg\", \"coreos.force_persist_ip\"]"
노드가 설치를 시작합니다. 검색 단계 후 노드는 기존 클러스터의 변경 사항과 초기 구성 간의 네트워크 구성을 병합합니다.
1.9.4. 에이전트 플랫폼에서 호스트된 컨트롤 플레인 클러스터 삭제 실패 문제 해결
에이전트 플랫폼에서 호스팅된 컨트롤 플레인 클러스터를 삭제하면 일반적으로 모든 백엔드 리소스가 삭제됩니다. 머신 리소스가 올바르게 삭제되지 않으면 클러스터 삭제에 실패합니다. 이 경우 나머지 시스템 리소스를 수동으로 제거해야 합니다.
1.9.4.1. 증상: 호스트된 컨트롤 플레인 클러스터를 제거할 때 오류가 발생합니다.
에이전트 플랫폼에서 호스트된 컨트롤 플레인 클러스터를 제거하려고 하면 다음과 같은 오류와 함께 hcp destroy
명령이 실패합니다.
+
2024-02-22T09:56:19-05:00 ERROR HostedCluster deletion failed {"namespace": "clusters", "name": "hosted-0", "error": "context deadline exceeded"} 2024-02-22T09:56:19-05:00 ERROR Failed to destroy cluster {"error": "context deadline exceeded"}
1.9.4.2. 문제 해결: 나머지 머신 리소스를 수동으로 제거
에이전트 플랫폼에서 호스트된 컨트롤 플레인 클러스터를 성공적으로 제거하려면 다음 단계를 완료합니다.
다음 명령을 실행하여 <
hosted_cluster_namespace>를 호스팅된 클러스터 네임스페이스
이름으로 교체하여 나머지 머신 리소스 목록을 확인합니다.oc get machine -n <hosted_cluster_namespace>
다음 예제 출력을 참조하십시오.
NAMESPACE NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION clusters-hosted-0 hosted-0-9gg8b hosted-0-nhdbp Deleting 10h 4.15.0-rc.8
다음 명령을 실행하여 머신 리소스에 연결된
machine.cluster.x-k8s.io
종료자를 제거합니다.oc edit machines -n <hosted_cluster_namespace>
다음 명령을 실행하여 터미널에
No resources found
메시지가 표시되는지 확인합니다.oc get agentmachine -n <hosted_cluster_namespace>
다음 명령을 실행하여 에이전트 플랫폼에서 호스팅된 컨트롤 플레인 클러스터를 제거합니다.
hcp destroy cluster agent --name <cluster_name>
&
lt;cluster_name
>을 클러스터 이름으로 바꿉니다.
1.9.5. 설치 또는 보류 중인 설치 상태 문제 해결
다중 클러스터 엔진 Operator를 설치할 때 MultiClusterEngine
은 Installing
단계에 남아 있거나 여러 Pod가 Pending
상태를 유지합니다.
1.9.5.1. 증상: 보류 중 상태 발생
MultiClusterEngine을 설치한 후 10분 이상 전달되었으며
리소스의 MultiClusterEngine
status.components
필드에서 하나 이상의 구성 요소가 ProgressDeadlineExceeded
. 클러스터의 리소스 제약 조건이 문제가 될 수 있습니다.
MultiClusterEngine
이 설치된 네임스페이스에서 Pod를 확인합니다. 다음과 유사한 상태로 보류
중이 표시될 수 있습니다.
reason: Unschedulable message: '0/6 nodes are available: 3 Insufficient cpu, 3 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate.'
이 경우 제품을 실행하기 위해 작업자 노드 리소스가 클러스터에 충분하지 않습니다.
1.9.5.2. 문제 해결: 작업자 노드 크기 조정
이 문제가 있는 경우 더 큰 작업자 노드로 클러스터를 업데이트해야 합니다. 클러스터 크기 지정에 대한 지침은 클러스터 크기 조정을 참조하십시오.
1.9.6. 설치 실패 문제 해결
다중 클러스터 엔진 Operator를 다시 설치할 때 Pod가 시작되지 않습니다.
1.9.6.1. 증상: 재설치 실패
다중 클러스터 엔진 Operator를 설치한 후 Pod가 시작되지 않는 경우 이전 멀티 클러스터 엔진 Operator의 항목이 제거될 때 올바르게 제거되지 않았기 때문에 종종 Pod가 시작되지 않습니다.
이 경우 설치 프로세스를 완료한 후 Pod가 시작되지 않습니다.
1.9.6.2. 문제 해결: 설치 실패
이 문제가 있는 경우 다음 단계를 완료합니다.
- 설치 제거 프로세스를 실행하여 설치 제거의 단계에 따라 현재 구성 요소를 제거합니다. ???
- Helm 설치 지침에 따라 Helm CLI 바이너리 버전 3.2.0 이상을 설치합니다. https://helm.sh/docs/intro/install/
-
Red Hat OpenShift Container Platform CLI가
oc
명령을 실행하도록 구성되어 있는지 확인합니다.oc
명령 구성에 대한 자세한 내용은 OpenShift Container Platform 설명서에서 OpenShift CLI 시작하기 를 참조하십시오. 다음 스크립트를 파일에 복사합니다.
#!/bin/bash MCE_NAMESPACE=<namespace> oc delete multiclusterengine --all oc delete apiservice v1.admission.cluster.open-cluster-management.io v1.admission.work.open-cluster-management.io oc delete crd discoveredclusters.discovery.open-cluster-management.io discoveryconfigs.discovery.open-cluster-management.io oc delete mutatingwebhookconfiguration ocm-mutating-webhook managedclustermutators.admission.cluster.open-cluster-management.io oc delete validatingwebhookconfiguration ocm-validating-webhook oc delete ns $MCE_NAMESPACE
스크립트에서
<namespace
>를 다중 클러스터 엔진 Operator가 설치된 네임스페이스의 이름으로 바꿉니다. 네임스페이스가 정리 및 삭제되므로 올바른 네임스페이스를 지정해야 합니다.- 스크립트를 실행하여 이전 설치에서 아티팩트를 제거합니다.
- 설치를 실행합니다. 온라인으로 연결하는 동안 설치를 참조하십시오.
1.9.7. 오프라인 클러스터 문제 해결
오프라인 상태를 표시하는 클러스터에는 몇 가지 일반적인 원인이 있습니다.
1.9.7.1. 증상: 클러스터 상태가 오프라인 상태
클러스터 생성 절차를 완료한 후에는 Red Hat Advanced Cluster Management 콘솔에서 액세스할 수 없으며 오프라인
상태가 표시됩니다.
1.9.7.2. 문제 해결: 클러스터 상태가 오프라인 상태입니다.
관리 클러스터를 사용할 수 있는지 확인합니다. Red Hat Advanced Cluster Management 콘솔의 Clusters 영역에서 확인할 수 있습니다.
사용할 수 없는 경우 관리 클러스터를 다시 시작하십시오.
관리 클러스터 상태가 여전히 오프라인 상태인 경우 다음 단계를 완료합니다.
-
hub 클러스터에서
oc get managedcluster <cluster_name> -o yaml
명령을 실행합니다. <cluster_name
>을 클러스터 이름으로 바꿉니다. -
status.conditions
섹션을 찾습니다. -
ManagedClusterConditionAvailable 유형의
메시지를 확인하고 모든 문제를 해결합니다.
-
hub 클러스터에서
1.9.8. 관리형 클러스터 가져오기 실패 문제 해결
클러스터 가져오기에 실패하면 클러스터 가져오기에 실패한 이유를 확인하기 위해 수행할 수 있는 몇 가지 단계가 있습니다.
1.9.8.1. 증상: 가져온 클러스터를 사용할 수 없음
클러스터 가져오기 절차를 완료한 후에는 콘솔에서 액세스할 수 없습니다.
1.9.8.2. 문제 해결: 가져온 클러스터를 사용할 수 없음
가져오기를 시도한 후에는 가져온 클러스터를 사용할 수 없는 몇 가지 이유가 있을 수 있습니다. 클러스터 가져오기에 실패하면 가져오기에 실패한 이유를 찾을 때까지 다음 단계를 완료합니다.
hub 클러스터에서 다음 명령을 실행하여 가져오기 컨트롤러가 실행 중인지 확인합니다.
kubectl -n multicluster-engine get pods -l app=managedcluster-import-controller-v2
실행 중인 Pod 두 개가 표시되어야 합니다. Pod 중 하나가 실행 중이 아닌 경우 다음 명령을 실행하여 로그를 확인하여 이유를 확인합니다.
kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 --tail=-1
hub 클러스터에서 다음 명령을 실행하여 가져오기 컨트롤러에서 관리 클러스터 가져오기 보안이 성공적으로 생성되었는지 확인합니다.
kubectl -n <managed_cluster_name> get secrets <managed_cluster_name>-import
가져오기 보안이 없는 경우 다음 명령을 실행하여 가져오기 컨트롤러의 로그 항목을 보고 생성되지 않은 이유를 확인합니다.
kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 --tail=-1 | grep importconfig-controller
허브 클러스터에서 관리 클러스터가
로컬
클러스터이고 Hive에서 프로비저닝하거나 자동 가져오기 시크릿이 있는 경우 다음 명령을 실행하여 관리 클러스터의 가져오기 상태를 확인합니다.kubectl get managedcluster <managed_cluster_name> -o=jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.message}{"\n"}{end}' | grep ManagedClusterImportSucceeded
ManagedClusterImportSucceeded
조건이true
가 아닌 경우 명령의 결과는 실패 이유를 나타냅니다.- 성능이 저하된 상태에 대해 관리 클러스터의 Klusterlet 상태를 확인합니다. Klusterlet의 성능이 저하된 이유를 찾으려면 성능이 저하된 Klusterlet 문제 해결을 참조하십시오.
1.9.9. 알 수 없는 권한 오류로 클러스터 다시 가져오기 실패
관리 클러스터를 다중 클러스터 엔진 Operator 허브 클러스터로 다시 가져올 때 문제가 발생하는 경우 절차를 수행하여 문제를 해결합니다.
1.9.9.1. 증상: 알 수 없는 권한 오류로 클러스터 가져오기 실패
다중 클러스터 엔진 Operator를 사용하여 OpenShift Container Platform 클러스터를 프로비저닝한 후 OpenShift Container Platform 클러스터에 API 서버 인증서를 변경하거나 API 서버 인증서를 추가할 때 알 수 없는 기관에서 서명한 x509:
인증서로 클러스터를 다시 가져올 수 있습니다.
1.9.9.2. 문제 식별: 알 수 없는 권한 오류로 인해 클러스터를 다시 가져오지 못했습니다
관리 클러스터를 다시 가져오지 못한 후 다음 명령을 실행하여 다중 클러스터 엔진 Operator 허브 클러스터에서 가져오기 컨트롤러 로그를 가져옵니다.
kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 -f
다음 오류 로그가 표시되면 관리 클러스터 API 서버 인증서가 변경될 수 있습니다.
ERROR Reconciler error {"controller": "clusterdeployment-controller", "object": {"name":"awscluster1","namespace": "awscluster1", "name": "awscluster1", "reconcileID": "reconcileID": "a2cccf24-2547-4e26-f258a6710", "a2cccf24-2547-4e26-f258a6710", "error": "awscluster1"}
관리형 클러스터 API 서버 인증서가 변경되었는지 확인하려면 다음 단계를 완료합니다.
다음 명령을 실행하여
your-managed-cluster-name
을 관리 클러스터 이름으로 교체하여 관리 클러스터 이름을 지정합니다.cluster_name=<your-managed-cluster-name>
다음 명령을 실행하여 관리형 클러스터
kubeconfig
시크릿 이름을 가져옵니다.kubeconfig_secret_name=$(oc -n ${cluster_name} get clusterdeployments ${cluster_name} -ojsonpath='{.spec.clusterMetadata.adminKubeconfigSecretRef.name}')
다음 명령을 실행하여
kubeconfig
를 새 파일로 내보냅니다.oc -n ${cluster_name} get secret ${kubeconfig_secret_name} -ojsonpath={.data.kubeconfig} | base64 -d > kubeconfig.old
export KUBECONFIG=kubeconfig.old
다음 명령을 실행하여
kubeconfig
를 사용하여 관리 클러스터에서 네임스페이스를 가져옵니다.oc get ns
다음 메시지와 유사한 오류가 발생하면 클러스터 API 서버 ceritificates가 변경되었으며 kubeconfig
파일이 유효하지 않습니다.
서버에 연결할 수 없음: x509: 알 수 없는 기관에서 서명한 인증서
1.9.9.3. 문제 해결: 알 수 없는 권한 오류로 인해 클러스터를 다시 가져오지 못했습니다
관리 클러스터 관리자는 관리 클러스터에 유효한 새 kubeconfig
파일을 생성해야 합니다.
새 kubeconfig
를 생성한 후 다음 단계를 완료하여 관리 클러스터의 새 kubeconfig
를 업데이트합니다.
다음 명령을 실행하여
kubeconfig
파일 경로와 클러스터 이름을 설정합니다. <path_to_kubeconfig&
gt;를 새kubeconfig
파일의 경로로 바꿉니다. <managed_cluster_name
>을 관리 클러스터 이름으로 바꿉니다.cluster_name=<managed_cluster_name> kubeconfig_file=<path_to_kubeconfig>
다음 명령을 실행하여 새
kubeconfig
를 인코딩합니다.kubeconfig=$(cat ${kubeconfig_file} | base64 -w0)
참고: macOS에서 다음 명령을 실행합니다.
kubeconfig=$(cat ${kubeconfig_file} | base64)
다음 명령을 실행하여
kubeconfig
json 패치를 정의합니다.kubeconfig_patch="[\{\"op\":\"replace\", \"path\":\"/data/kubeconfig\", \"value\":\"${kubeconfig}\"}, \{\"op\":\"replace\", \"path\":\"/data/raw-kubeconfig\", \"value\":\"${kubeconfig}\"}]"
다음 명령을 실행하여 관리 클러스터에서 관리자
kubeconfig
시크릿 이름을 검색합니다.kubeconfig_secret_name=$(oc -n ${cluster_name} get clusterdeployments ${cluster_name} -ojsonpath='{.spec.clusterMetadata.adminKubeconfigSecretRef.name}')
다음 명령을 실행하여 관리자
kubeconfig
시크릿을 새kubeconfig
로 패치합니다.oc -n ${cluster_name} patch secrets ${kubeconfig_secret_name} --type='json' -p="${kubeconfig_patch}"
1.9.10. 가져오기 보류 중 상태의 클러스터 문제 해결
클러스터 콘솔에서 보류 중 가져오기 가 계속되는 경우 절차에 따라 문제를 해결합니다.
1.9.10.1. 증상: 가져오기 상태가 보류 중인 클러스터
Red Hat Advanced Cluster Management 콘솔을 사용하여 클러스터를 가져온 후 클러스터에 Pending import 상태로 콘솔에 표시됩니다.
1.9.10.2. 문제 확인: 가져오기 보류 중인 클러스터
관리 클러스터에서 다음 명령을 실행하여 문제가 있는 Kubernetes Pod 이름을 확인합니다.
kubectl get pod -n open-cluster-management-agent | grep klusterlet-registration-agent
관리 클러스터에서 다음 명령을 실행하여 오류의 로그 항목을 찾습니다.
kubectl logs <registration_agent_pod> -n open-cluster-management-agent
registration_agent_pod 를 1단계에서 확인한 포드 이름으로 교체합니다.
-
반환된 결과에 네트워킹 연결 문제가 있음을 나타내는 텍스트를 검색합니다. 예제에는
이러한 호스트가 없습니다
.
1.9.10.3. 문제 해결: 가져오기 보류 중인 클러스터
hub 클러스터에 다음 명령을 입력하여 문제가 있는 포트 번호를 검색합니다.
oc get infrastructure cluster -o yaml | grep apiServerURL
관리 클러스터의 호스트 이름을 확인할 수 있고 호스트와 포트에 대한 아웃바운드 연결이 발생하는지 확인합니다.
관리 클러스터에서 통신을 설정할 수 없는 경우 클러스터 가져오기가 완료되지 않습니다. 관리 클러스터의 클러스터 상태는 가져오기 보류 중입니다.
1.9.11. 인증서 변경 후 가져온 클러스터 오프라인 문제 해결
사용자 정의 apiserver
인증서 설치가 지원되지만 인증서 정보를 변경하기 전에 가져온 하나 이상의 클러스터의 상태가 오프라인
상태가 될 수 있습니다.
1.9.11.1. 증상: 인증서 변경 후 오프라인 클러스터
인증서 보안 업데이트 절차를 완료한 후 온라인 상태의 클러스터 중 하나 이상이 이제 콘솔에 오프라인
상태를 표시합니다.
1.9.11.2. 문제 식별: 인증서 변경 후 오프라인 클러스터
사용자 정의 API 서버 인증서에 대한 정보를 업데이트한 후 새 인증서가 이제 오프라인
상태가 되기 전에 가져온 클러스터입니다.
인증서가 문제가 있음을 나타내는 오류는 오프라인 관리 클러스터의 open-cluster-management-agent
네임스페이스에 있는 Pod 로그에서 확인할 수 있습니다. 다음 예제는 로그에 표시되는 오류와 유사합니다.
다음 work-agent
로그를 참조하십시오.
E0917 03:04:05.874759 1 manifestwork_controller.go:179] Reconcile work test-1-klusterlet-addon-workmgr fails with err: Failed to update work status with err Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/namespaces/test-1/manifestworks/test-1-klusterlet-addon-workmgr": x509: certificate signed by unknown authority E0917 03:04:05.874887 1 base_controller.go:231] "ManifestWorkAgent" controller failed to sync "test-1-klusterlet-addon-workmgr", err: Failed to update work status with err Get "api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/namespaces/test-1/manifestworks/test-1-klusterlet-addon-workmgr": x509: certificate signed by unknown authority E0917 03:04:37.245859 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1.ManifestWork: failed to list *v1.ManifestWork: Get "api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/namespaces/test-1/manifestworks?resourceVersion=607424": x509: certificate signed by unknown authority
다음 registration-agent
로그를 참조하십시오.
I0917 02:27:41.525026 1 event.go:282] Event(v1.ObjectReference{Kind:"Namespace", Namespace:"open-cluster-management-agent", Name:"open-cluster-management-agent", UID:"", APIVersion:"v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'ManagedClusterAvailableConditionUpdated' update managed cluster "test-1" available condition to "True", due to "Managed cluster is available" E0917 02:58:26.315984 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1beta1.CertificateSigningRequest: Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/managedclusters?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dtest-1&resourceVersion=607408&timeout=9m33s&timeoutSeconds=573&watch=true"": x509: certificate signed by unknown authority E0917 02:58:26.598343 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1.ManagedCluster: Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/managedclusters?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dtest-1&resourceVersion=607408&timeout=9m33s&timeoutSeconds=573&watch=true": x509: certificate signed by unknown authority E0917 02:58:27.613963 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1.ManagedCluster: failed to list *v1.ManagedCluster: Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/managedclusters?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dtest-1&resourceVersion=607408&timeout=9m33s&timeoutSeconds=573&watch=true"": x509: certificate signed by unknown authority
1.9.11.3. 문제 해결: 인증서 변경 후 오프라인 클러스터
관리 클러스터가 로컬 클러스터이거나 관리되는 클러스터
가 다중 클러스터 엔진 Operator에 의해 생성된 경우 관리 클러스터를 복구하기 위해 10분 이상 기다려야 합니다.
관리 클러스터를 즉시 복구하려면 hub 클러스터에서 관리 클러스터 가져오기 보안을 삭제하고 다중 클러스터 엔진 Operator를 사용하여 복구할 수 있습니다. 다음 명령을 실행합니다.
oc delete secret -n <cluster_name> <cluster_name>-import
& lt;cluster_name
>을 복구하려는 관리 클러스터의 이름으로 바꿉니다.
다중 클러스터 엔진 Operator를 사용하여 가져온 관리 클러스터를 복구하려면 다음 단계를 완료하십시오. 관리 클러스터를 다시 가져옵니다.
hub 클러스터에서 다음 명령을 실행하여 관리 클러스터 가져오기 보안을 다시 생성합니다.
oc delete secret -n <cluster_name> <cluster_name>-import
&
lt;cluster_name
>을 가져올 관리 클러스터의 이름으로 바꿉니다.허브 클러스터에서 다음 명령을 실행하여 관리 클러스터 가져오기 보안을 YAML 파일에 노출합니다.
oc get secret -n <cluster_name> <cluster_name>-import -ojsonpath='{.data.import\.yaml}' | base64 --decode > import.yaml
&
lt;cluster_name
>을 가져올 관리 클러스터의 이름으로 바꿉니다.관리 클러스터에서 다음 명령을 실행하여
import.yaml
파일을 적용합니다.oc apply -f import.yaml
참고: 이전 단계에서는 hub 클러스터에서 관리 클러스터를 분리하지 않습니다. 이 단계에서는 새 인증서 정보를 포함하여 관리 클러스터의 현재 설정으로 필요한 매니페스트를 업데이트합니다.
1.9.12. 클러스터 상태가 오프라인에서 사용 가능으로 변경 문제 해결
관리 클러스터의 상태는 환경 또는 클러스터를 수동으로 변경하지 않고 오프라인에서
사용 가능한
상태로 변경됩니다.
1.9.12.1. 증상: 클러스터 상태가 오프라인에서 사용 가능으로 변경
관리 클러스터를 허브 클러스터에 연결하는 네트워크가 불안정한 경우 허브 클러스터 사이클에 의해 오프라인
과 사용 가능
으로 보고되는 관리 클러스터의 상태가 불안정합니다.
1.9.12.2. 문제 해결: 클러스터 상태가 오프라인에서 사용 가능으로 변경
이 문제를 해결하려면 다음 단계를 완료하십시오.
다음 명령을 입력하여 hub 클러스터에서
ManagedCluster
사양을 편집합니다.oc edit managedcluster <cluster-name>
cluster-name 을 관리 클러스터의 이름으로 바꿉니다.
-
ManagedCluster
사양에서leaseDurationSeconds
값을 늘립니다. 기본값은 5분이지만 네트워크 문제와의 연결을 유지하기에 충분한 시간이 아닐 수 있습니다. 리스에 더 많은 시간을 지정합니다. 예를 들어 설정을 20분으로 늘릴 수 있습니다.
1.9.13. VMware vSphere에서 클러스터 생성 문제 해결
VMware vSphere에서 Red Hat OpenShift Container Platform 클러스터를 생성할 때 문제가 발생하는 경우 다음 문제 해결 정보를 참조하여 문제가 해결되었는지 확인하십시오.
참고: VMware vSphere에서 클러스터 생성 프로세스가 실패하면 로그를 볼 수 있는 링크가 활성화되어 있지 않을 수 있습니다. 이 경우 hive-controllers
Pod의 로그를 확인하여 문제를 식별할 수 있습니다. hive-controllers
로그는 hive
네임스페이스에 있습니다.
1.9.13.1. 인증서 IP SAN 오류와 함께 관리되는 클러스터 생성 실패
1.9.13.1.1. 증상: 관리형 클러스터 생성이 인증서 IP SAN 오류로 인해 실패합니다.
VMware vSphere에서 새 Red Hat OpenShift Container Platform 클러스터를 생성한 후 클러스터에 인증서 IP SAN 오류를 나타내는 오류 메시지와 함께 실패합니다.
1.9.13.1.2. 문제 식별: 관리형 클러스터 생성이 인증서 IP SAN 오류로 인해 실패합니다.
관리 클러스터의 배포가 실패하고 배포 로그에 다음 오류를 반환합니다.
time="2020-08-07T15:27:55Z" level=error msg="Error: error setting up new vSphere SOAP client: Post https://147.1.1.1/sdk: x509: cannot validate certificate for xx.xx.xx.xx because it doesn't contain any IP SANs" time="2020-08-07T15:27:55Z" level=error
1.9.13.1.3. 문제 해결: 인증서 IP SAN 오류로 관리되는 클러스터 생성에 실패합니다.
자격 증명의 IP 주소 대신 VMware vCenter 서버 정규화된 호스트 이름을 사용합니다. VMware vCenter CA 인증서를 업데이트하여 IP SAN을 포함할 수도 있습니다.
1.9.13.2. 알 수 없는 인증 기관으로 관리 클러스터 생성 실패
1.9.13.2.1. 증상: 관리형 클러스터 생성이 알 수 없는 인증 기관으로 인해 실패함
VMware vSphere에서 새 Red Hat OpenShift Container Platform 클러스터를 생성하면 인증서가 알 수 없는 기관에서 서명했기 때문에 클러스터가 실패합니다.
1.9.13.2.2. 문제 식별: Managed cluster creation fails with unknown certificate authority
관리 클러스터의 배포가 실패하고 배포 로그에 다음 오류를 반환합니다.
Error: error setting up new vSphere SOAP client: Post https://vspherehost.com/sdk: x509: certificate signed by unknown authority"
1.9.13.2.3. 문제 해결: 알 수 없는 인증 기관을 사용하면 관리형 클러스터 생성이 실패합니다.
인증 정보를 생성할 때 인증 기관에서 올바른 인증서를 입력했는지 확인합니다.
1.9.13.3. 만료된 인증서로 관리되는 클러스터 생성 실패
1.9.13.3.1. 증상: 만료된 인증서로 관리 클러스터 생성에 실패합니다.
VMware vSphere에서 새 Red Hat OpenShift Container Platform 클러스터를 생성한 후 인증서가 만료되거나 유효하지 않기 때문에 클러스터가 실패합니다.
1.9.13.3.2. 문제 식별: 만료된 인증서로 관리 클러스터 생성이 실패합니다.
관리 클러스터의 배포가 실패하고 배포 로그에 다음 오류를 반환합니다.
x509: certificate has expired or is not yet valid
1.9.13.3.3. 문제 해결: 만료된 인증서로 관리 클러스터 생성이 실패합니다.
ESXi 호스트의 시간이 동기화되었는지 확인합니다.
1.9.13.4. 관리 클러스터 생성에 실패하여 태그 지정 권한이 충분하지 않음
1.9.13.4.1. 증상: 관리형 클러스터 생성이 실패하고 태그 지정 권한이 충분하지 않음
VMware vSphere에서 새 Red Hat OpenShift Container Platform 클러스터를 생성한 후 태그 지정을 사용할 수 있는 권한이 부족하기 때문에 클러스터가 실패합니다.
1.9.13.4.2. 문제 식별: 관리형 클러스터 생성이 실패하여 태그 지정 권한이 부족하지 않습니다.
관리 클러스터의 배포가 실패하고 배포 로그에 다음 오류를 반환합니다.
time="2020-08-07T19:41:58Z" level=debug msg="vsphere_tag_category.category: Creating..." time="2020-08-07T19:41:58Z" level=error time="2020-08-07T19:41:58Z" level=error msg="Error: could not create category: POST https://vspherehost.com/rest/com/vmware/cis/tagging/category: 403 Forbidden" time="2020-08-07T19:41:58Z" level=error time="2020-08-07T19:41:58Z" level=error msg=" on ../tmp/openshift-install-436877649/main.tf line 54, in resource \"vsphere_tag_category\" \"category\":" time="2020-08-07T19:41:58Z" level=error msg=" 54: resource \"vsphere_tag_category\" \"category\" {"
1.9.13.4.3. 문제 해결: 태그 지정에 대한 권한이 부족하여 관리되는 클러스터 생성이 실패합니다.
VMware vCenter 필수 계정 권한이 올바른지 확인합니다. 자세한 내용은 이미지 레지스트리 를 참조하십시오.
1.9.13.5. 관리 클러스터 생성이 유효하지 않은 dnsVIP와 함께 실패합니다.
1.9.13.5.1. 증상: 관리형 클러스터 생성이 유효하지 않은 dnsVIP와 함께 실패합니다.
VMware vSphere에서 새 Red Hat OpenShift Container Platform 클러스터를 생성한 후 잘못된 dnsVIP가 있으므로 클러스터가 실패합니다.
1.9.13.5.2. 문제 식별: Managed 클러스터 생성이 유효하지 않은 dnsVIP와 함께 실패합니다.
VMware vSphere를 사용하여 새 관리 클러스터를 배포하려고 할 때 다음 메시지가 표시되면 VMware 설치 관리자 프로비저닝 인프라(IPI)를 지원하지 않는 이전 OpenShift Container Platform 릴리스 이미지가 있기 때문입니다.
failed to fetch Master Machines: failed to load asset \\\"Install Config\\\": invalid \\\"install-config.yaml\\\" file: platform.vsphere.dnsVIP: Invalid value: \\\"\\\": \\\"\\\" is not a valid IP
1.9.13.5.3. 문제 해결: 잘못된 dnsVIP와 함께 관리 클러스터 생성이 실패합니다.
VMware 설치 관리자 프로비저닝 인프라를 지원하는 이후 버전의 OpenShift Container Platform에서 릴리스 이미지를 선택합니다.
1.9.13.6. 관리형 클러스터 생성이 잘못된 네트워크 유형과 함께 실패합니다.
1.9.13.6.1. 증상: 관리형 클러스터 생성이 잘못된 네트워크 유형과 함께 실패합니다.
VMware vSphere에서 새 Red Hat OpenShift Container Platform 클러스터를 생성한 후 잘못된 네트워크 유형이 지정되어 있으므로 클러스터가 실패합니다.
1.9.13.6.2. 문제 식별: Managed cluster creation fails with incorrect network type
VMware vSphere를 사용하여 새 관리 클러스터를 배포하려고 할 때 다음 메시지가 표시되면 VMware Installer Provisioned Infrastructure (IPI)를 지원하지 않는 이전 OpenShift Container Platform 이미지가 있기 때문입니다.
time="2020-08-11T14:31:38-04:00" level=debug msg="vsphereprivate_import_ova.import: Creating..." time="2020-08-11T14:31:39-04:00" level=error time="2020-08-11T14:31:39-04:00" level=error msg="Error: rpc error: code = Unavailable desc = transport is closing" time="2020-08-11T14:31:39-04:00" level=error time="2020-08-11T14:31:39-04:00" level=error time="2020-08-11T14:31:39-04:00" level=fatal msg="failed to fetch Cluster: failed to generate asset \"Cluster\": failed to create cluster: failed to apply Terraform: failed to complete the change"
1.9.13.6.3. 문제 해결: 관리형 클러스터 생성이 잘못된 네트워크 유형으로 인해 실패합니다.
지정된 VMware 클러스터에 유효한 VMware vSphere 네트워크 유형을 선택합니다.
1.9.13.7. 디스크 처리 디스크 변경 오류와 함께 관리되는 클러스터 생성 실패
1.9.13.7.1. 증상: 오류 처리 디스크 변경으로 인해 VMware vSphere 관리 클러스터 추가 실패
VMware vSphere에서 새 Red Hat OpenShift Container Platform 클러스터를 생성한 후 디스크 변경 사항을 처리할 때 오류가 있기 때문에 클러스터가 실패합니다.
1.9.13.7.2. 문제 식별: 오류 처리 디스크 변경으로 인해 VMware vSphere 관리 클러스터를 추가할 수 없습니다
다음과 유사한 메시지가 로그에 표시됩니다.
ERROR ERROR Error: error reconfiguring virtual machine: error processing disk changes post-clone: disk.0: ServerFaultCode: NoPermission: RESOURCE (vm-71:2000), ACTION (queryAssociatedProfile): RESOURCE (vm-71), ACTION (PolicyIDByVirtualDisk)
1.9.13.7.3. 문제 해결: 오류 처리 디스크 변경으로 인해 VMware vSphere 관리 클러스터를 추가할 수 없습니다
VMware vSphere 클라이언트를 사용하여 프로파일 중심 스토리지 권한에 대한 모든 권한을 사용자에게 부여합니다.
1.9.14. 보류 중 또는 실패 상태의 콘솔에서 클러스터 문제 해결
생성한 클러스터의 콘솔에서 Pending 상태 또는 실패 상태를 모니터링하는 경우 절차를 수행하여 문제를 해결합니다.
1.9.14.1. 증상: 보류 중이거나 실패한 콘솔의 클러스터
콘솔을 사용하여 새 클러스터를 생성하면 Pending 상태 이상으로 클러스터가 진행되지 않거나 Failed 상태가 표시됩니다.
1.9.14.2. 문제 식별: 보류 중이거나 실패한 콘솔의 클러스터
클러스터에 Failed 상태가 표시되면 클러스터의 세부 정보 페이지로 이동하여 제공된 로그 링크를 따릅니다. 로그를 찾을 수 없거나 클러스터에 Pending 상태가 표시되면 다음 절차를 계속 실행하여 로그를 확인합니다.
절차 1
허브 클러스터에서 다음 명령을 실행하여 새 클러스터의 네임스페이스에 생성된 Kubernetes Pod의 이름을 확인합니다.
oc get pod -n <new_cluster_name>
new_cluster_name
을 생성한 클러스터 이름으로 교체합니다.이름에
provision
문자열이 포함된 Pod가 나열되지 않은 경우 Procedure 2를 계속합니다. 제목에프로비저닝
이 있는 Pod가 있는 경우 허브 클러스터에서 다음 명령을 실행하여 해당 Pod의 로그를 확인합니다.oc logs <new_cluster_name_provision_pod_name> -n <new_cluster_name> -c hive
new_cluster_name_provision_pod_name
을 생성한 클러스터 이름 및 프로비저닝이 포함된 포드 이름으로 교체합니다
.- 문제의 원인을 설명할 수 있는 로그에서 오류를 검색합니다.
절차 2
이름이
provision
인 Pod가 없는 경우 프로세스 초기에 문제가 발생했습니다. 로그를 보려면 다음 절차를 완료합니다.hub 클러스터에서 다음 명령을 실행합니다.
oc describe clusterdeployments -n <new_cluster_name>
new_cluster_name
을 생성한 클러스터 이름으로 교체합니다. 클러스터 설치 로그에 대한 자세한 내용은 Red Hat OpenShift 설명서의 설치 로그 수집을 참조하십시오.- 리소스의 Status.Conditions.Message 및 Status.Conditions.Reason 항목에서 문제에 대한 추가 정보가 있는지 확인하십시오.
1.9.14.3. 문제 해결: 보류 중이거나 실패한 콘솔의 클러스터
로그에서 오류를 확인한 후 클러스터를 제거하고 다시 생성하기 전에 오류를 해결하는 방법을 확인합니다.
다음 예제에서는 지원되지 않는 영역을 선택할 때 발생할 수 있는 로그 오류와 이를 해결하는 데 필요한 작업을 제공합니다.
No subnets provided for zones
클러스터를 생성할 때 지원되지 않는 리전 내에서 하나 이상의 영역을 선택했습니다. 클러스터를 재생성하여 문제를 해결할 때 다음 작업 중 하나를 완료합니다.
- 지역 내에서 다른 영역을 선택합니다.
- 다른 영역이 나열된 경우 지원을 제공하지 않는 영역을 생략합니다.
- 클러스터의 다른 리전을 선택합니다.
로그에서 문제를 확인한 후 클러스터를 제거하고 다시 생성합니다.
클러스터 생성에 대한 자세한 내용은 클러스터 생성 소개 를 참조하십시오.
1.9.15. OpenShift Container Platform 버전 3.11 클러스터 가져오기 실패 문제 해결
1.9.15.1. 증상: OpenShift Container Platform 버전 3.11 클러스터 가져오기 실패
Red Hat OpenShift Container Platform 버전 3.11 클러스터를 가져오려고 하면 다음 콘텐츠와 유사한 로그 메시지와 함께 가져오기가 실패합니다.
customresourcedefinition.apiextensions.k8s.io/klusterlets.operator.open-cluster-management.io configured clusterrole.rbac.authorization.k8s.io/klusterlet configured clusterrole.rbac.authorization.k8s.io/open-cluster-management:klusterlet-admin-aggregate-clusterrole configured clusterrolebinding.rbac.authorization.k8s.io/klusterlet configured namespace/open-cluster-management-agent configured secret/open-cluster-management-image-pull-credentials unchanged serviceaccount/klusterlet configured deployment.apps/klusterlet unchanged klusterlet.operator.open-cluster-management.io/klusterlet configured Error from server (BadRequest): error when creating "STDIN": Secret in version "v1" cannot be handled as a Secret: v1.Secret.ObjectMeta: v1.ObjectMeta.TypeMeta: Kind: Data: decode base64: illegal base64 data at input byte 1313, error found in #10 byte of ...|dhruy45="},"kind":"|..., bigger context ...|tye56u56u568yuo7i67i67i67o556574i"},"kind":"Secret","metadata":{"annotations":{"kube|...
1.9.15.2. 문제 식별: OpenShift Container Platform 버전 3.11 클러스터 가져오기 실패
이는 설치된 kubectl
명령줄 툴이 1.11 이하이기 때문에 발생하는 경우가 많습니다. 다음 명령을 실행하여 실행 중인 kubectl
명령줄 툴 버전을 확인합니다.
kubectl version
반환된 데이터에 버전 1.11 또는 이전 버전이 나열된 경우 문제 해결 방법 중 하나를 완료하십시오: OpenShift Container Platform 버전 3.11 클러스터 가져오기 실패.
1.9.15.3. 문제 해결: OpenShift Container Platform 버전 3.11 클러스터 가져오기 실패
다음 절차 중 하나를 완료하여 이 문제를 해결할 수 있습니다.
kubectl
명령줄 툴의 최신 버전을 설치합니다.-
Kubernetes 문서에서 Install and Set Up
kubectl
툴의 최신 버전을 다운로드합니다. -
kubectl
툴을 업그레이드한 후 클러스터를 다시 가져옵니다.
-
Kubernetes 문서에서 Install and Set Up
import 명령이 포함된 파일을 실행합니다.
- CLI를 사용하여 관리 클러스터 가져오기 절차를 시작합니다.
-
클러스터를 가져오는 명령을 생성할 때 해당 명령을
import.yaml
이라는 YAML 파일에 복사합니다. 다음 명령을 실행하여 파일에서 클러스터를 다시 가져옵니다.
oc apply -f import.yaml
1.9.16. 성능이 저하된 조건으로 Klusterlet 문제 해결
Klusterlet 성능이 저하된 조건은 관리 클러스터에서 Klusterlet 에이전트의 상태를 진단하는 데 도움이 될 수 있습니다. Klusterlet이 성능 저하된 상태에 있는 경우 관리 클러스터의 Klusterlet 에이전트에 문제를 해결해야 하는 오류가 있을 수 있습니다. Klusterlet degraded conditions that are set to True
를 참조하십시오.
1.9.16.1. 증상: Klusterlet은 성능 저하 상태에 있습니다.
관리 클러스터에 Klusterlet을 배포한 후 KlusterletRegistrationDegraded
또는 KlusterletWorkDegraded
상태가 True 로 표시됩니다.
1.9.16.2. 문제 식별: Klusterlet은 성능 저하된 상태에 있습니다.
관리 클러스터에서 다음 명령을 실행하여 Klusterlet 상태를 확인합니다.
kubectl get klusterlets klusterlet -oyaml
-
KlusterletRegistrationDegraded
또는KlusterletWorkDegraded
를 선택하여 조건이True
로 설정되어 있는지 확인합니다. 나열된 모든 성능이 저하된 조건에 대한 문제를 복구합니다.
1.9.16.3. 문제 해결: Klusterlet은 성능 저하 상태에 있습니다.
다음 성능 저하 상태의 목록과 이러한 문제를 해결하는 방법을 참조하십시오.
-
상태가 True 이고 조건 이유가 있는
KlusterletRegistrationDegraded
조건이 BootStrapSecretMissing 인 경우open-cluster-management-agent
네임스페이스에 부트스트랩 시크릿을 생성해야 합니다. -
KlusterletRegistrationDegraded
조건이 True 로 표시되고 조건 이유가 BootstrapSecretError 또는 BootstrapSecretUnauthorized 이면 현재 부트스트랩 보안이 유효하지 않습니다. 현재 부트스트랩 시크릿을 삭제하고open-cluster-management-agent
네임스페이스에 유효한 부트스트랩 시크릿을 다시 생성합니다. -
KlusterletRegistrationDegraded
및KlusterletWorkDegraded
가 True 로 표시되고 조건 이유가 HubKubeConfigSecretMissing 인 경우 Klusterlet을 삭제하고 다시 생성합니다. -
KlusterletRegistrationDegraded
및KlusterletWorkDegraded
가 True 로 표시되고 조건 이유가 ClusterNameMissing,KubeConfig Mising ,HubConfigSecretError, 또는 HubConfigSecretUnauthorized,open-cluster-management-agent
네임스페이스에서 hub cluster kubeconfig 시크릿을 삭제합니다. 등록 에이전트는 다시 부팅되어 새 hub 클러스터 kubeconfig 시크릿을 가져옵니다. -
KlusterletRegistrationDegraded
가 True 를 표시하고 조건 이유가 GetRegistrationDeploymentFailed 또는 UnavailableRegistrationPod 인 경우 상태 메시지를 확인하여 문제 세부 정보를 가져오고 해결하려고 할 수 있습니다. -
KlusterletWorkDegraded
에 True 가 표시되고 조건 이유가 GetWorkDeploymentFailed 또는 UnavailableWorkPod 인 경우 상태 메시지를 확인하여 문제 세부 정보를 가져오고 해결하려고 할 수 있습니다.
1.9.17. 클러스터를 삭제한 후에도 네임스페이스가 남아 있음
관리 클러스터를 제거하면 일반적으로 네임스페이스가 클러스터 제거 프로세스의 일부로 제거됩니다. 드문 경우지만 네임스페이스에 일부 아티팩트가 남아 있습니다. 이 경우 네임스페이스를 수동으로 제거해야 합니다.
1.9.17.1. 증상: 클러스터를 삭제한 후에도 네임스페이스가 유지됩니다.
관리 클러스터를 제거한 후 네임스페이스는 제거되지 않습니다.
1.9.17.2. 문제 해결: 클러스터를 삭제한 후에도 네임스페이스가 남아 있습니다.
네임스페이스를 수동으로 제거하려면 다음 단계를 완료합니다.
다음 명령을 실행하여 <cluster_name> 네임스페이스에 남아 있는 리소스 목록을 생성합니다.
oc api-resources --verbs=list --namespaced -o name | grep -E '^secrets|^serviceaccounts|^managedclusteraddons|^roles|^rolebindings|^manifestworks|^leases|^managedclusterinfo|^appliedmanifestworks'|^clusteroauths' | xargs -n 1 oc get --show-kind --ignore-not-found -n <cluster_name>
cluster_name
을 제거하려는 클러스터의 네임스페이스 이름으로 교체합니다.다음 명령을 입력하여 목록을 편집하여
Delete
상태가 없는 목록에서 식별된 각 리소스를 삭제합니다.oc edit <resource_kind> <resource_name> -n <namespace>
resource_kind
를 리소스 종류로 바꿉니다.resource_name
을 리소스 이름으로 교체합니다.namespace
를 리소스의 네임스페이스 이름으로 교체합니다.-
메타데이터에서
종료자
속성을 찾습니다. -
vi 편집기
dd
명령을 사용하여 Kubernetes가 아닌 종료자를 삭제합니다. -
목록을 저장하고
:wq
명령을 입력하여vi
편집기를 종료합니다. 다음 명령을 입력하여 네임스페이스를 삭제합니다.
oc delete ns <cluster-name>
cluster-name
을 삭제하려는 네임스페이스 이름으로 교체합니다.
1.9.18. 클러스터를 가져올 때 auto-import-secret-exists 오류
자동 가져오기 보안이라는 오류 메시지와 함께 클러스터 가져오기가 실패합니다.
1.9.18.1. 증상: 클러스터를 가져올 때 자동 가져오기 보안 오류가 발생했습니다
관리를 위해 하이브 클러스터를 가져올 때 자동 가져오기 보안 오류가 이미
표시됩니다.
1.9.18.2. 문제 해결: 클러스터를 가져올 때 Auto-import-secret-exists 오류
이 문제는 이전에 관리한 클러스터를 가져오려고 할 때 발생합니다. 이 경우 클러스터를 다시 가져오려고 할 때 보안이 충돌합니다.
이 문제를 해결하려면 다음 단계를 완료하십시오.
기존
auto-import-secret
을 수동으로 삭제하려면 hub 클러스터에서 다음 명령을 실행합니다.oc delete secret auto-import-secret -n <cluster-namespace>
cluster-namespace
를 클러스터의 네임스페이스로 바꿉니다.- 클러스터 가져오기 소개의 절차를 사용하여 클러스터를 다시 가져옵니다.
1.9.19. 배치 생성 후 누락된 PlacementDecision 문제 해결
배치를 생성한 후
이 생성되지 않는 경우 절차에 따라 문제를 해결합니다.
Placement
Descision
1.9.19.1. 증상: 배치 생성 후 Placement 중단
배치를 생성하면
이 자동으로 생성되지 않습니다.
Placement
Descision
1.9.19.2. 문제 해결: 배치 생성 후 placementDecision 해제
이 문제를 해결하려면 다음 단계를 완료합니다.
다음 명령을 실행하여
배치
조건을 확인합니다.kubectl describe placement <placement-name>
placement-name
을배치
이름으로 교체합니다.출력은 다음 예와 유사할 수 있습니다.
Name: demo-placement Namespace: default Labels: <none> Annotations: <none> API Version: cluster.open-cluster-management.io/v1beta1 Kind: Placement Status: Conditions: Last Transition Time: 2022-09-30T07:39:45Z Message: Placement configurations check pass Reason: Succeedconfigured Status: False Type: PlacementMisconfigured Last Transition Time: 2022-09-30T07:39:45Z Message: No valid ManagedClusterSetBindings found in placement namespace Reason: NoManagedClusterSetBindings Status: False Type: PlacementSatisfied Number Of Selected Clusters: 0
PlacementMisconfigured
및PlacementSatisfied
:의 상태에 대한 출력을 확인합니다.-
Placement
MisconfiguredStatus
가 true이면 배치에 구성 오류가 발생합니다. 구성 오류 및 해결 방법에 대한 자세한 내용은 포함된 메시지를 확인하십시오. -
Placement
SatisfiedStatus
가 false인 경우 관리 클러스터가 배치를 충족하지 않습니다. 자세한 내용과 오류 해결 방법에 대해서는 포함된 메시지를 확인하십시오. 이전 예에서는 placement 네임스페이스에ManagedClusterSetBindings
가 없습니다.
-
이벤트에서 각 클러스터의 점수를 확인하여 점수가 낮은 일부 클러스터가 선택되지 않은 이유를 확인할 수 있습니다.
출력은 다음 예와 유사할 수 있습니다.
Name: demo-placement Namespace: default Labels: <none> Annotations: <none> API Version: cluster.open-cluster-management.io/v1beta1 Kind: Placement Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal DecisionCreate 2m10s placementController Decision demo-placement-decision-1 is created with placement demo-placement in namespace default Normal DecisionUpdate 2m10s placementController Decision demo-placement-decision-1 is updated with placement demo-placement in namespace default Normal ScoreUpdate 2m10s placementController cluster1:0 cluster2:100 cluster3:200 Normal DecisionUpdate 3s placementController Decision demo-placement-decision-1 is updated with placement demo-placement in namespace default Normal ScoreUpdate 3s placementController cluster1:200 cluster2:145 cluster3:189 cluster4:200
참고: 배치 컨트롤러는 점수를 할당하고 각 필터링된
ManagedCluster
에 대한 이벤트를 생성합니다. 배치 컨트롤러는 클러스터 점수가 변경될 때 새 이벤트를 생성합니다.
1.9.20. Dell 하드웨어에서 베어 메탈 호스트의 검색 실패 문제 해결
Dell 하드웨어에서 베어 메탈 호스트를 검색하지 못하면 IDRAC(Integrated Dell Remote Access Controller)가 알려지지 않은 인증 기관의 인증서를 허용하지 않도록 구성됩니다.
1.9.20.1. 증상: Dell 하드웨어에서 베어 메탈 호스트의 검색 실패
베이스 보드 관리 컨트롤러를 사용하여 베어 메탈 호스트를 검색하는 절차를 완료하면 다음과 유사한 오류 메시지가 표시됩니다.
ProvisioningError 51s metal3-baremetal-controller Image provisioning failed: Deploy step deploy.deploy failed with BadRequestError: HTTP POST https://<bmc_address>/redfish/v1/Managers/iDRAC.Embedded.1/VirtualMedia/CD/Actions/VirtualMedia.InsertMedia returned code 400. Base.1.8.GeneralError: A general error has occurred. See ExtendedInfo for more information Extended information: [ {"Message": "Unable to mount remote share https://<ironic_address>/redfish/boot-<uuid>.iso.", 'MessageArgs': ["https://<ironic_address>/redfish/boot-<uuid>.iso"], "MessageArgs@odata.count": 1, "MessageId": "IDRAC.2.5.RAC0720", "RelatedProperties": ["#/Image"], "RelatedProperties@odata.count": 1, "Resolution": "Retry the operation.", "Severity": "Informational"} ]
1.9.20.2. 문제 해결: Dell 하드웨어에서 베어 메탈 호스트의 검색 실패
iDRAC는 알 수 없는 인증 기관의 인증서를 수락하지 않도록 구성되어 있습니다.
이 문제를 바이패스하려면 다음 단계를 완료하여 호스트 iDRAC의 베이스 보드 관리 컨트롤러에서 인증서 확인을 비활성화합니다.
- iDRAC 콘솔에서 구성 > 가상 미디어 > 원격 파일 공유로 이동합니다.
-
Expired 또는 잘못된 인증서 작업 의 값을
Yes
로 변경합니다.
1.9.21. 최소 ISO 부팅 실패 문제 해결
최소한의 ISO를 부팅하려고 할 때 문제가 발생할 수 있습니다.
1.9.21.1. 증상: 최소 ISO 부팅 실패
부팅 화면에서 호스트가 루트 파일 시스템 이미지를 다운로드하지 못했음을 보여줍니다.
1.9.21.2. 문제 해결: 최소 ISO 부팅 실패
문제 해결 방법을 알아보려면 OpenShift Container Platform 설명서의 지원 설치 관리자에서 최소한의 ISO 부팅 실패 문제 해결을 참조하십시오.
1.9.22. Red Hat OpenShift Virtualization에서 호스트된 클러스터 문제 해결
Red Hat OpenShift Virtualization에서 호스트된 클러스터의 문제를 해결할 때 최상위 HostedCluster
및 NodePool
리소스로 시작한 다음 근본 원인을 찾을 때까지 스택을 축소합니다. 다음 단계는 일반적인 문제의 근본 원인을 찾는 데 도움이 될 수 있습니다.
1.9.22.1. 증상: HostedCluster 리소스가 부분적인 상태로 유지됨
HostedCluster
리소스가 보류 중이므로 호스트 컨트롤 플레인이 완전히 온라인 상태가 아닙니다.
1.9.22.1.1. 문제 확인: 사전 요구 사항, 리소스 조건 및 노드 및 Operator 상태 확인
- Red Hat OpenShift Virtualization에서 호스트된 클러스터의 모든 사전 요구 사항을 충족하는지 확인
-
진행을 방지하는 검증 오류는
HostedCluster
및NodePool
리소스의 조건을 확인합니다. 호스팅 클러스터의
kubeconfig
파일을 사용하여 호스트 클러스터의 상태를 검사합니다.-
oc get clusteroperators
명령의 출력을 보고 보류 중인 클러스터 Operator를 확인합니다. -
oc get nodes
명령의 출력을 보고 작업자 노드가 준비되었는지 확인합니다.
-
1.9.22.2. 증상: 작업자 노드가 등록되지 않음
호스팅된 컨트롤 플레인에 등록된 작업자 노드가 없으므로 호스팅된 컨트롤 플레인이 완전히 온라인 상태가 아닙니다.
1.9.22.2.1. 문제 식별: 호스팅된 컨트롤 플레인의 다양한 부분의 상태 확인
-
문제가 발생할 수 있음을 나타내는 실패의
HostedCluster
및NodePool
조건을 확인합니다. 다음 명령을 입력하여
NodePool
리소스의 KubeVirt 작업자 노드 VM(가상 머신) 상태를 확인합니다.oc get vm -n <namespace>
VM이 프로비저닝 상태에 있는 경우 다음 명령을 입력하여 가져오기 Pod가 완료되지 않은 이유에 대한 이해를 위해 VM 네임스페이스 내에서 CDI 가져오기 Pod를 확인합니다.
oc get pods -n <namespace> | grep "import"
VM이 시작 상태에 있는 경우 다음 명령을 입력하여 virt-launcher Pod의 상태를 확인합니다.
oc get pods -n <namespace> -l kubevirt.io=virt-launcher
virt-launcher Pod가 보류 중 상태인 경우 Pod가 예약되지 않은 이유를 조사합니다. 예를 들어 virt-launcher Pod를 실행하는 데 리소스가 부족할 수 있습니다.
- VM이 실행 중이지만 작업자 노드로 등록되지 않은 경우 웹 콘솔을 사용하여 영향을 받는 VM 중 하나에 대한 VNC 액세스를 얻습니다. VNC 출력은 Ignition 구성이 적용되었는지 여부를 나타냅니다. VM이 시작 시 호스팅된 컨트롤 플레인 ignition 서버에 액세스할 수 없는 경우 VM을 올바르게 프로비저닝할 수 없습니다.
- Ignition 구성이 적용되지만 VM이 여전히 노드로 등록되지 않은 경우 문제 식별을 참조하십시오. 시작 중에 VM 콘솔 로그에 액세스하는 방법을 알아보려면 VM 콘솔 로그에 액세스합니다.
1.9.22.3. 증상: 작업자 노드는 NotReady 상태에 있습니다.
클러스터 생성 중에 네트워킹 스택이 롤아웃되는 동안 노드가 일시적으로 NotReady
상태로 들어갑니다. 이 과정의 일부는 정상입니다. 그러나 프로세스의 이 부분이 15분 이상 걸리는 경우 문제가 발생할 수 있습니다.
1.9.22.3.1. 문제 식별: 노드 오브젝트 및 Pod
다음 명령을 입력하여 노드 오브젝트의 조건을 확인하고 노드가 준비되지 않은 이유를 확인합니다.
oc get nodes -o yaml
다음 명령을 입력하여 클러스터 내에서 실패한 Pod를 찾습니다.
oc get pods -A --field-selector=status.phase!=Running,status,phase!=Succeeded
1.9.22.4. 증상: Ingress 및 콘솔 클러스터 Operator는 온라인 상태가 아닙니다.
Ingress 및 콘솔 클러스터 Operator가 온라인 상태가 아니므로 호스팅 컨트롤 플레인이 완전히 온라인 상태가 아닙니다.
1.9.22.4.1. 문제 식별: 와일드카드 DNS 경로 및 로드 밸런서 확인
클러스터에서 기본 Ingress 동작을 사용하는 경우 다음 명령을 입력하여 가상 머신(VM)이 호스팅되는 OpenShift Container Platform 클러스터에서 와일드카드 DNS 경로가 활성화되어 있는지 확인합니다.
oc patch ingresscontroller -n openshift-ingress-operator default --type=json -p '[{ "op": "add", "path": "/spec/routeAdmission", "value": {wildcardPolicy: "WildcardsAllowed"}}]'
호스팅된 컨트롤 플레인에 사용자 정의 기본 도메인을 사용하는 경우 다음 단계를 완료합니다.
- 로드 밸런서가 VM pod를 올바르게 대상으로 지정 중인지 확인합니다.
- 와일드카드 DNS 항목이 로드 밸런서 IP를 대상으로 하는지 확인합니다.
1.9.22.5. 증상: 호스팅된 클러스터의 로드 밸런서 서비스를 사용할 수 없음
로드 밸런서 서비스를 사용할 수 없기 때문에 호스팅 컨트롤 플레인이 완전히 온라인 상태가 되지 않습니다.
1.9.22.5.1. 문제 식별: 이벤트, 세부 정보 및 kccm Pod 확인
- 호스팅된 클러스터 내에서 로드 밸런서 서비스와 연결된 이벤트 및 세부 정보를 찾습니다.
기본적으로 호스팅된 클러스터의 로드 밸런서는 호스팅된 컨트롤 플레인 네임스페이스 내의 kubevirt-cloud-controller-manager에 의해 처리됩니다. kccm pod가 온라인 상태인지 확인하고 오류 또는 경고에 대한 로그를 확인합니다. 호스팅된 컨트롤 플레인 네임스페이스에서 kccm Pod를 식별하려면 다음 명령을 입력합니다.
oc get pods -n <hosted-control-plane-namespace> -l app=cloud-controller-manager
1.9.22.6. 증상: 호스팅된 클러스터 PVC를 사용할 수 없음
호스트 클러스터의 PVC(영구 볼륨 클레임)를 사용할 수 없기 때문에 호스팅된 컨트롤 플레인이 완전히 온라인 상태가 아닙니다.
1.9.22.6.1. 문제 식별: PVC 이벤트 및 세부 정보 및 구성 요소 로그 확인
- PVC와 연결된 이벤트 및 세부 정보를 찾아 발생하는 오류를 파악합니다.
PVC가 Pod에 연결하지 못하는 경우 호스트 클러스터 내에서 kubevirt-csi-node 데몬 세트 구성 요소의 로그를 확인하여 문제를 추가로 조사합니다. 각 노드의 kubevirt-csi-node Pod를 식별하려면 다음 명령을 입력합니다.
oc get pods -n openshift-cluster-csi-drivers -o wide -l app=kubevirt-csi-driver
PVC가 PV(영구 볼륨)에 바인딩할 수 없는 경우 호스팅된 컨트롤 플레인 네임스페이스 내에서 kubevirt-csi-controller 구성 요소의 로그를 확인합니다. 호스팅된 컨트롤 플레인 네임스페이스 내에서 kubevirt-csi-controller Pod를 식별하려면 다음 명령을 입력합니다.
oc get pods -n <hcp namespace> -l app=kubevirt-csi-driver
1.9.22.7. 증상: VM 노드가 클러스터에 올바르게 참여하지 않음
VM 노드가 클러스터에 올바르게 참여하지 않기 때문에 호스팅된 컨트롤 플레인이 완전히 온라인 상태가 아닙니다.
1.9.22.7.1. 문제 확인: VM 콘솔 로그에 액세스
VM 콘솔 로그에 액세스하려면 OpenShift Virtualization Hosted Control Plane 클러스터의 VM 부분에 대한 직렬 콘솔 로그를 가져오는 방법의 단계를 완료합니다.
1.9.22.8. 문제 해결: 베어 메탈이 아닌 클러스터를 늦은 바인딩 풀로 반환
BareMetalHosts
없이 늦은 바인딩 관리 클러스터를 사용하는 경우 늦은 바인딩 클러스터를 제거하고 노드를 Discovery ISO로 반환하려면 추가 수동 단계를 완료해야 합니다.
1.9.22.8.1. 증상: 베어 메탈이 아닌 클러스터를 늦은 바인딩 풀로 반환
BareMetalHosts
가 없는 최신 바인딩 관리 클러스터의 경우 클러스터 정보를 제거해도 모든 노드를 Discovery ISO로 자동으로 반환하지는 않습니다.
1.9.22.8.2. 문제 해결: 베어 메탈이 아닌 클러스터를 늦은 바인딩 풀로 반환
늦은 바인딩으로 베어 메탈이 아닌 노드를 바인딩 해제하려면 다음 단계를 완료하십시오.
- 클러스터 정보를 제거합니다. 자세한 내용은 관리에서 클러스터 제거를 참조하십시오.
- 루트 디스크를 정리합니다.
- Discovery ISO를 사용하여 수동으로 재부팅합니다.
1.9.22.9. 호스팅된 컨트롤 플레인 클러스터를 사용하여 ROSA에 설치
중인 설치 상태 문제 해결
호스팅된 컨트롤 플레인 클러스터가 있는 AWS(ROSA)에 Kubernetes Operator를 위한 다중 클러스터 엔진을 설치할 때 다중 클러스터 엔진 Operator는 설치
단계에서 중단되고 local-cluster
는 알 수 없는
상태로 유지됩니다.
1.9.22.9.1. 증상: 호스팅된 컨트롤 플레인 클러스터가 있는 ROSA에 설치
중 상태로 유지됨
local-cluster
는 다중 클러스터 엔진 Operator를 설치한 후 10분 동안 알 수 없는
상태로 유지됩니다. klusterlet-agent
Pod가 hub 클러스터의 open-cluster-management-agent
네임스페이스에 로그인하면 다음과 같은 오류 메시지가 표시됩니다.
E0809 18:45:29.450874 1 reflector.go:147] k8s.io/client-go@v0.29.4/tools/cache/reflector.go:229: Failed to watch *v1.CertificateSigningRequest: failed to list *v1.CertificateSigningRequest: Get "https://api.xxx.openshiftapps.com:443/apis/certificates.k8s.io/v1/certificatesigningrequests?limit=500&resourceVersion=0": tls: failed to verify certificate: x509: certificate signed by unknown authority
1.9.22.9.2. 문제 해결: 호스팅된 컨트롤 플레인 클러스터의 ROSA에 설치
중이 중단됨
이 문제를 해결하려면 다음 단계를 완료하여 ISRG Root X1
인증서를 klusterlet CA 번들에 추가합니다.
다음 명령을 실행하여 루트 CA 인증서를 다운로드하여 인코딩합니다.
curl -s https://letsencrypt.org/certs/isrgrootx1.pem | base64 | tr -d "\n"
KlusterletConfig
리소스를 생성하고 인코딩된 CA 인증서를spec
매개변수 섹션에 추가합니다. 다음 예제를 참조하십시오.apiVersion: config.open-cluster-management.io/v1alpha1 kind: KlusterletConfig metadata: name: isrg-root-x1-ca spec: hubKubeAPIServerCABundle: "<your_ca_certificate>"
hub 클러스터에서 다음 명령을 실행하여 리소스를 적용합니다.
oc apply -f <filename>
hub 클러스터에서 다음 명령을 실행하여 관리 클러스터에 주석을 답니다.
oc annotate --overwrite managedcluster local-cluster agent.open-cluster-management.io/klusterlet-config='isrg-root-x1-ca'
local-cluster
상태가 1분 내에 복구되지 않으면 hub 클러스터에서 다음 명령을 실행하여import.yaml
파일을 내보내고 디코딩합니다.oc get secret local-cluster-import -n local-cluster -o jsonpath={.data.import/.yaml} | base64 --decode > import.yaml
hub 클러스터에서 다음 명령을 실행하여 파일을 적용합니다.
oc apply -f import.yaml
-
새 클러스터 전용의 경우
ManagedCluster
리소스에 다음 주석을 추가합니다.
annotations: agent.open-cluster-management.io/klusterlet-config: isrg-root-x1-ca
1.9.22.10. 호스트된 컨트롤 플레인 클러스터가 있는
ROSA에서 모든 관리 클러스터의 알 수 없음
호스팅된 컨트롤 플레인 클러스터가 있는 AWS(Red Hat OpenShift Service on AWS)에서 모든 관리 클러스터의 상태가 알 수 없음
으로 전환될 수 있습니다.
1.9.22.10.1. 증상: 호스팅된 컨트롤 플레인 클러스터 가
있는 ROSA에서 모든 관리 클러스터를 알 수 없음
ROSA 호스트 클러스터의 모든 관리 클러스터의 상태는 갑자기 알 수
없게 됩니다. klusterlet-agent
Pod가 관리 클러스터의 open-cluster-management-agent
네임스페이스에 로그인하면 다음과 같은 오류 메시지가 표시됩니다.
E0809 18:45:29.450874 1 reflector.go:147] k8s.io/client-go@v0.29.4/tools/cache/reflector.go:229: Failed to watch *v1.CertificateSigningRequest: failed to list *v1.CertificateSigningRequest: Get "https://api.xxx.openshiftapps.com:443/apis/certificates.k8s.io/v1/certificatesigningrequests?limit=500&resourceVersion=0": tls: failed to verify certificate: x509: certificate signed by unknown authority
1.9.22.10.2. 문제 해결: 호스팅된 컨트롤 플레인 클러스터가 있는
ROSA에서 모든 관리 클러스터를 알 수 없음
이 문제를 해결하려면 다음 단계를 완료하여 ISRG Root X1
인증서를 klusterlet CA 번들에 추가합니다.
다음 명령을 실행하여 루트 CA 인증서를 다운로드하여 인코딩합니다.
curl -s https://letsencrypt.org/certs/isrgrootx1.pem | base64 | tr -d "\n"
KlusterletConfig
리소스를 생성하고 인코딩된 CA 인증서를spec
매개변수 섹션에 추가합니다. 다음 예제를 참조하십시오.apiVersion: config.open-cluster-management.io/v1alpha1 kind: KlusterletConfig metadata: name: isrg-root-x1-ca spec: hubKubeAPIServerCABundle: "<your_ca_certificate>"
hub 클러스터에서 다음 명령을 실행하여 리소스를 적용합니다.
oc apply -f <filename>
hub 클러스터에서 다음 명령을 실행하여 관리 클러스터에 주석을 답니다. 필요한 경우 값을 바꿉니다.
oc annotate --overwrite managedcluster <cluster_name> agent.open-cluster-management.io/klusterlet-config='isrg-root-x1-ca'
일부 관리 클러스터의 상태가 복구될 수 있습니다.
Unknown
상태로 남아 있는 관리 클러스터의 경우 hub 클러스터에서 다음 명령을 실행하여import.yaml
파일을 내보내고 디코딩합니다. 필요한 경우 값을 바꿉니다.oc get secret <cluster_name>-import -n <cluster_name> -o jsonpath={.data.import/.yaml} | base64 --decode > <cluster_name>-import.yaml
관리 클러스터에서 다음 명령을 실행하여 파일을 적용합니다. 필요한 경우 값을 바꿉니다.
oc apply -f <cluster_name>-import.yaml
-
새로운 Red Hat Advanced Cluster Management for Kubernetes Hub 클러스터의 경우
ManagedCluster
리소스에 다음 주석을 추가합니다.
annotations: agent.open-cluster-management.io/klusterlet-config: isrg-root-x1-ca