Kf ServiceInstances 문제 해결

이 단계에 따라 Kf ServiceInstances를 사용할 때 발생할 수 있는 여러 문제를 해결합니다.

객체 삭제가 중단되었습니다.

다음 명령어를 실행하여 리소스 정보를 가져온 후 아래 나열된 원인을 확인합니다.

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

kf CLI는 일부 문제를 확인하는 데 도움을 줄 수 있습니다.

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
가능한 원인솔루션
삭제 타임스탬프가 이후 시간에 있습니다.

클럭 스큐로 인해 metadata.deletionTimestamp가 이후 시간에 있을 수 있습니다. 몇 분 정도 기다린 후 객체가 삭제되었는지 확인합니다.

파이널라이저가 객체에 존재합니다.

파이널라이저가 객체에 있습니다. 객체를 삭제하기 전 이를 설정한 컨트롤러에서 삭제되어야 합니다.

파이널라이저를 기다리지 않고 삭제를 강제하려면 metadata.finalizers 배열에서 삭제하도록 객체를 수정합니다.

객체에서 파이널라이저를 삭제하려면 kubectl edit RESOURCE_TYPE RESOURCE_NAME -n my-space 명령어를 사용합니다.

자세한 내용은 파이널라이저를 사용하여 삭제 제어를 참조하세요.

경고: 컨트롤러가 완료되도록 허용하지 않고 파이널라이저를 삭제하면 오류, 보안 문제, 데이터 손실, 고립된 리소스가 발생할 수 있습니다.

종속 객체가 존재할 수 있습니다.

객체가 삭제되기 전 종속 항목 삭제를 기다리는 중일 수 있습니다. 자세한 내용은 Kubernetes 가비지 컬렉션 가이드를 참조하세요. 관리자가 네임스페이스 및 클러스터에서 모든 객체를 확인하여 삭제를 방해하는 항목이 있는지 확인하도록 합니다.

종속 항목을 기다리지 않고 객체를 삭제하려면 캐스케이드 플래그를 --cascade=orphan으로 설정하여 kubectl delete를 사용합니다.

객체 생성 상태 드리프트.

다음 명령어를 실행하여 리소스 정보를 가져온 후 아래 나열된 원인을 확인합니다.

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

kf CLI는 일부 문제를 확인하는 데 도움을 줄 수 있습니다.

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
가능한 원인솔루션
객체에 세대 버전 드리프트가 있습니다.

이 오류는 일반적으로 Kf 컨트롤러가 최신 버전의 객체를 읽지 않았을 때 발생합니다. Kubernetes 복제본이 eventual consistency에 도달하면 자동으로 복구되며 사용자의 조치가 필요하지 않습니다.

객체 조정에 실패했습니다.

다음 명령어를 실행하여 리소스 정보를 가져온 후 아래 나열된 원인을 확인합니다.

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

kf CLI는 일부 문제를 확인하는 데 도움을 줄 수 있습니다.

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
가능한 원인솔루션
객체에 TemplateError가 있음

이 오류는 일반적으로 사용자가 커스텀 리소스 사양에 잘못된 속성을 입력했거나 공간/클러스터의 구성이 잘못된 경우 발생합니다.

근본 원인을 이해하기 위해 사용자는 kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space 명령어를 사용하여 객체의 status.conditions에서 더 긴 오류 메시지를 읽을 수 있습니다. 예를 들면 kubectl describe serviceinstance my-service -n my-space입니다.

객체에 ChildNotOwned 오류가 있음(이름 충돌)

일반적으로 이 오류는 컨트롤러에서 만들려고 하는 객체가 이미 존재함을 의미합니다. 이는 사용자가 컨트롤러에서 만들려고 하는 것과 동일한 이름을 가진 K8s 리소스를 만든 경우에 발생합니다. 하지만 사용자가 리소스를 삭제한 후 Kf 컨트롤러가 다시 리소스를 만들 때 더 자주 발생합니다. 하위 리소스가 여전히 지연되어 있는 경우 소유자는 더 이상 존재하지 않는 이전 리소스가 됩니다.

오류에서 복구하려면 사용자가 영향을 받은 리소스를 삭제한 다음 다시 만드는 것이 좋습니다. 객체를 삭제하려면 Kf 삭제 명령어 또는 kubectl delete RESOURCE_TYPE RESOURCE_NAME -n SPACE 명령어를 사용합니다. 예를 들면 kf delete-space my-space 또는 kubectl delete space my-space입니다.

리소스를 다시 만들려면 Kf 명령어를 사용합니다. 예를 들면 kf create-space my-space입니다.

객체에 ReconciliationError가 있음

이 오류는 일반적으로 Kf 컨트롤러에 의해 Kubernetes API 서버에 전달되는 HTTP 호출에 리소스 생성/업데이트에 문제가 발생했음을 의미합니다.

근본 원인을 이해하기 위해 사용자는 kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space 명령어를 사용하여 객체의 status.conditions에서 더 긴 오류 메시지를 읽을 수 있습니다. 예를 들면 kubectl describe serviceinstance my-service -n my-space입니다.

리소스 조정을 지원할 수 없습니다.

다음 명령어를 실행하여 리소스 정보를 가져온 후 아래 나열된 원인을 확인합니다.

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

kf CLI는 일부 문제를 확인하는 데 도움을 줄 수 있습니다.

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
가능한 원인솔루션
지원 리소스 DeprovisionFailed 오류.

이 오류는 일반적으로 지원 리소스(외부 OSB 서버에서 호스팅되는 MySQL 데이터베이스)의 프로비저닝이 실패하면 발생합니다. Kf는 종속 리소스가 프로비저닝 해제되었는지 여부를 안전하게 확인할 수 없습니다.

이 오류를 복구하려면 사용자가 kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space 명령어를 사용하여 객체의 status.conditions에 있는 자세한 오류 메시지를 읽는 것이 좋습니다. 예를 들면 kubectl describe servipropogatesceinstance my-service -n my-space입니다.

오류 메시지가 확인되면 관리자에게 백업 리소스를 확인하고 수동으로 삭제할 것을 요청합니다. 지원 리소스가 안전하게 해제되었다고 판단되면 kubectl edit serviceinstance my-service -n my-space 명령어를 사용하여 객체 사양에서 Finalizer를 수동으로 삭제함으로써 영향을 받은 Kf 리소스를 성공적으로 조정할 수 있습니다.