수동 삭제

최종 수정: 2026. 4. 14.

Skuber Agent 수동 삭제 가이드

개요

설치 중 실패하거나 비정상 상태가 된 클러스터에서 Skuber 리소스를 수동으로 정리합니다.
어디까지 설치되었는지 모르는 상황에서 사용하며, 존재하지 않는 리소스는 에러 없이 건너뛰고 존재하는 리소스만 삭제합니다.

사전 요구사항

  • 대상 클러스터에 대한 kubectl 접근 권한 (cluster-admin)
  • Uninstaller 이미지 버전 (Skuber 담당자 확인)

삭제 대상 리소스

Uninstaller가 정리하는 리소스 범위입니다.

skuber-system Namespace

종류 리소스
Deployment agent, agent-controller, vpa-recommender
DaemonSet k8s-ebpf-l4l7-metrics
Service agent-svc, agent-metrics
ServiceAccount agent, agent-controller, vpa-recommender, k8s-ebpf-l4l7-metrics
ConfigMap descheduler-policy-v1alpha2
Role / RoleBinding system:leader-locking-vpa-recommender
Helm Release keda, keda-http-addon, victoria-metrics-operator, kube-state-metrics, prometheus-node-exporter, karpenter, nginx
Custom Resource VMSingle, VMAgent, VMServiceScrape, VMNodeScrape, VMPodScrape, ScaledObject 등
Namespace 자체 skuber-system (최종 단계에서 삭제)

Cluster-Scoped

종류 리소스
CRD (8개) clusters/workloads/backupclusters/backupworkloads/nodes/schedules.agent.skuberplus.com, verticalpodautoscalers/verticalpodautoscalercheckpoints.autoscaling.k8s.io
ClusterRole skuber-plus-cluster-role, agent, agent-controller, k8s-ebpf-l4l7-metrics, system:vpa-actor, system:vpa-status-actor, system:vpa-checkpoint-actor, system:vpa-target-reader, system:metrics-reader
ClusterRoleBinding 위 ClusterRole에 대응하는 Binding + skuber-plus-cluster-role-binding
KEDA ScaledObject/ScaledJob/TriggerAuthentication CRD, APIService, Webhook

kube-system Namespace (조건부)

Skuber가 직접 설치한 Metrics-Server만 삭제합니다 (annotation skuber.io/metrics-server-managed=true 기준).
기존에 있던 Metrics-Server는 삭제하지 않습니다.

종류 리소스
Deployment metrics-server
Service metrics-server
ServiceAccount metrics-server
RoleBinding metrics-server-auth-reader
ClusterRole system:metrics-server, system:aggregated-metrics-reader
ClusterRoleBinding metrics-server:system:auth-delegator, system:metrics-server
APIService v1beta1.metrics.k8s.io

실행 방법

1. 매니페스트 수령

Skuber 담당자에게 Uninstaller 매니페스트 파일(skuber-uninstaller-job.yaml)과 릴리즈 버전을 전달받습니다.

2. 배포

kubectl apply -f skuber-uninstaller-job.yaml

3. 로그 확인

kubectl logs -f job/skuber-uninstaller -n kube-system

4. 완료 확인

# Job 상태 확인
kubectl get job skuber-uninstaller -n kube-system

# skuber-system namespace 삭제 확인
kubectl get ns skuber-system

삭제 후 정리

정상 완료 시 Job은 TTL(300초) 후 자동 정리됩니다.

# Job이 TTL 후 자동 삭제되지 않았다면
kubectl delete job skuber-uninstaller -n kube-system --ignore-not-found
kubectl delete clusterrolebinding skuber-uninstaller --ignore-not-found
kubectl delete sa skuber-uninstaller -n kube-system --ignore-not-found

트러블슈팅

Namespace가 Terminating 상태에서 멈추는 경우

Uninstaller는 자동으로 Finalizer를 제거하고 force-finalize를 시도합니다.
3회 재시도 후에도 해결되지 않으면 수동으로 확인합니다.

# Terminating 원인 확인
kubectl get ns skuber-system -o json | jq '.status.conditions'

# 남아있는 리소스 확인
kubectl api-resources --verbs=list --namespaced -o name | xargs -I {} kubectl get {} -n skuber-system --ignore-not-found

Job이 반복 실패하는 경우

# Pod 로그 확인
kubectl logs -l app.kubernetes.io/name=skuber-uninstaller -n kube-system --tail=100

# Job 이벤트 확인
kubectl describe job skuber-uninstaller -n kube-system