Kubernetes/Openshift/OKD 사용중 프로젝트 삭제시 아래와 같은 메세지가 출력되면서 프로젝트가 정상적으로 삭제되지 않는 경우가 있다.
oc delete project my-project Error from server (Conflict): Operation cannot be fulfilled on namespaces "my-project": The system is ensuring all content is removed from this namespace. Upon completion, this namespace will automatically be purged by the system.
일단 해당 프로젝트의 리소스가 뭐가 남아있는지 확인해본다.
oc api-resources --verbs=list --namespaced -o name | xargs -n 1 oc get --show-kind --ignore-not-found -n <your-namespace>
위 명령어를 사용하면 아래처럼 문제가 되는 리소스 목록이 나타난다.
[root@okd ~]# oc api-resources --verbs=list --cached --namespaced -o name | xargs -n 1 oc get --show-kind --ignore-not-found -n $PROJECT_NAME NAME CLASS PLAN STATUS AGE serviceinstance.servicecatalog.k8s.io/mysql-persistent-szjvr ClusterServiceClass/mysql-persistent default ErrorPollingLastOperation 2d
위의 케이스에서는 serviceinstance.servicecatalog.k8s.io/mysql-persistent-szjvr
리소스가 정상적으로 제거되지 않고 에러 상태로 빠져있는것을 확인할수 있다.
해당 리소스에 대해서 oc edit <resource> -n <namespace>
명령어로 편집 화면을 호출한 후 finalizers
섹션을 삭제하고 저장한다.
[root@okd ~]# oc edit serviceinstance.servicecatalog.k8s.io/mysql-persistent-szjvr -n my-project serviceinstance.servicecatalog.k8s.io/mysql-persistent-szjvr edited
해당 부분을 삭제하고 나면 자동으로 해당 리소스가 제거될것이다.