이 단계에 따라 Kf Apps를 사용할 때 발생할 수 있는 여러 문제를 해결합니다.
객체 삭제 중단
다음 명령어를 실행하여 리소스 정보를 가져온 후 아래 나열된 원인을 확인합니다.
kubectl get apps.kf.dev -n SPACE_NAME APP_NAME -o yaml
kf
CLI는 일부 문제를 확인하는 데 도움을 줄 수 있습니다.
kf doctor --space SPACE_NAME app/APP_NAME
가능한 원인 | 솔루션 |
---|---|
삭제 타임스탬프가 이후 시간에 있습니다. |
클럭 스큐로 인해 |
파이널라이저가 객체에 존재합니다. |
파이널라이저가 객체에 있습니다. 객체를 삭제하기 전 이를 설정한 컨트롤러에서 삭제되어야 합니다. 파이널라이저를 기다리지 않고 삭제를 강제하려면 경고: 컨트롤러가 완료되도록 허용하지 않고 파이널라이저를 삭제하면 오류, 보안 문제, 데이터 손실, 고립된 리소스가 발생할 수 있습니다. |
종속 객체가 존재할 수 있습니다. |
객체가 삭제되기 전 종속 항목 삭제를 기다리는 중일 수 있습니다. 자세한 내용은 Kubernetes 가비지 컬렉션 가이드를 참조하세요. 관리자가 네임스페이스 및 클러스터에서 모든 객체를 확인하여 삭제를 방해하는 항목이 있는지 확인하도록 합니다. 종속 항목을 기다리지 않고 객체를 삭제하려면 캐스케이드 플래그를 |
객체 생성 상태 드리프트
다음 명령어를 실행하여 리소스 정보를 가져온 후 아래 나열된 원인을 확인합니다.
kubectl get apps.kf.dev -n SPACE_NAME APP_NAME -o yaml
kf
CLI는 일부 문제를 확인하는 데 도움을 줄 수 있습니다.
kf doctor --space SPACE_NAME app/APP_NAME
가능한 원인 | 솔루션 |
---|---|
객체에 세대 버전 드리프트가 있습니다. |
이 오류는 일반적으로 Kf 컨트롤러가 최신 버전의 객체를 읽지 않았을 때 발생합니다. Kubernetes 복제본이 eventual consistency에 도달하면 자동으로 복구되며 사용자의 조치가 필요하지 않습니다. |
객체 조정 실패
다음 명령어를 실행하여 리소스 정보를 가져온 후 아래 나열된 원인을 확인합니다.
kubectl get apps.kf.dev -n SPACE_NAME APP_NAME -o yaml
kf
CLI는 일부 문제를 확인하는 데 도움을 줄 수 있습니다.
kf doctor --space SPACE_NAME app/APP_NAME
가능한 원인 | 솔루션 |
---|---|
객체에 TemplateError가 있음 |
이 오류는 일반적으로 사용자가 커스텀 리소스 사양에 잘못된 속성을 입력했거나 공간/클러스터의 구성이 잘못된 경우 발생합니다. 근본 원인을 이해하기 위해 사용자는 |
객체에 ChildNotOwned 오류가 있음(이름 충돌) |
일반적으로 이 오류는 컨트롤러에서 만들려고 하는 객체가 이미 존재함을 의미합니다. 이는 사용자가 컨트롤러에서 만들려고 하는 것과 동일한 이름을 가진 K8s 리소스를 만든 경우에 발생합니다. 하지만 사용자가 리소스를 삭제한 후 Kf 컨트롤러가 다시 리소스를 만들 때 더 자주 발생합니다. 하위 리소스가 여전히 지연되어 있는 경우 소유자는 더 이상 존재하지 않는 이전 리소스가 됩니다. 오류에서 복구하려면 사용자가 영향을 받은 리소스를 삭제한 다음 다시 만드는 것이 좋습니다. 객체를 삭제하려면 Kf 삭제 명령어 또는 리소스를 다시 만들려면 Kf 명령어를 사용합니다. 예를 들면 |
객체에 ReconciliationError가 있음 |
이 오류는 일반적으로 Kf 컨트롤러에 의해 Kubernetes API 서버에 전달되는 HTTP 호출에 리소스 생성/업데이트에 문제가 발생했음을 의미합니다. 근본 원인을 이해하기 위해 사용자는 |