Kubernetes/Trouble Shooting

🛠️ K8S Trouble Shooting : 리소스 조회 및 존재 여부 오류 해결하기

ygtoken 2025. 3. 2. 19:20
728x90

Kubernetes에서 특정 리소스를 조회하거나 조작할 때 종종 발생하는 오류 유형 중 하나가 “리소스 조회 및 존재 여부” 관련 문제입니다.

이 글에서는 Kubernetes 환경에서 발생할 수 있는 대표적인 리소스 조회 및 존재 오류 5가지를 정리하고, 각각의 원인과 해결 방법을 설명합니다. 🚀

 


 

1️⃣ “Error from server (NotFound): error when retrieving current configuration of…”

 

🔎 오류 설명

 

이 오류는 kubectl을 통해 조회하려는 리소스가 존재하지 않을 때 발생합니다.

리소스가 잘못된 이름으로 요청되었거나, 특정 네임스페이스에서 찾을 수 없는 경우 나타납니다.

 

🔧 해결 방법

 

1) 올바른 리소스 이름 확인

 

해당 리소스가 존재하는지 확인합니다.

kubectl get all --all-namespaces

 

2) 네임스페이스 확인

 

리소스가 특정 네임스페이스에 존재할 수 있으므로 확인이 필요합니다.

kubectl get <resource> -n <namespace>

 

3) 리소스 정의 확인

 

리소스 이름이 정확한지 다시 확인합니다.

kubectl describe <resource> <resource-name>

 

4) 삭제된 리소스인지 확인

 

삭제된 리소스는 kubectl get으로 확인할 수 없습니다.

리소스가 최근 삭제되었는지 확인하려면 다음 명령어를 실행합니다.

kubectl get events --sort-by=.metadata.creationTimestamp

 


 

2️⃣ “The server could not find the requested resource”

 

🔎 오류 설명

 

이 오류는 Kubernetes API 서버가 특정 리소스를 인식하지 못할 때 발생합니다.

일반적으로 잘못된 API 버전을 사용하거나, Custom Resource Definition (CRD)이 적용되지 않은 경우 나타납니다.

 

🔧 해결 방법

 

1) 올바른 API 버전 확인

 

API 버전이 올바른지 확인합니다.

kubectl api-resources | grep <resource>

 

2) CRD가 필요한 리소스인지 확인

 

CRD(Custom Resource Definition)가 필요한 경우, CRD가 적용되었는지 확인합니다.

kubectl get crds

 

3) API 서버에서 리소스 지원 여부 확인

 

Kubernetes API 서버가 해당 리소스를 지원하는지 확인합니다.

kubectl explain <resource>

 

4) 올바른 네임스페이스 사용 확인

 

잘못된 네임스페이스에서 리소스를 조회하려는 경우 발생할 수 있습니다.

kubectl get <resource> -n <namespace>

 

 


 

3️⃣ “No resources found in…”

 

🔎 오류 설명

 

이 오류는 해당 네임스페이스에 특정 리소스가 존재하지 않을 때 발생합니다.

리소스가 아직 생성되지 않았거나, 잘못된 네임스페이스에서 조회했을 가능성이 높습니다.

 

🔧 해결 방법

 

1) 네임스페이스 확인

 

올바른 네임스페이스를 사용하고 있는지 확인합니다.

kubectl get <resource> --all-namespaces

 

2) 클러스터 전체 조회

 

특정 네임스페이스가 아닌 전체 클러스터에서 검색하려면 -A 옵션을 사용합니다.

kubectl get <resource> -A

 

3) 올바른 컨텍스트 사용 확인

 

현재 설정된 kubeconfig 컨텍스트를 확인하고, 필요한 컨텍스트로 변경합니다.

kubectl config current-context
kubectl config use-context <your-context>

 

4) 리소스 생성 여부 확인

 

해당 리소스가 클러스터에서 생성되었는지 확인합니다.

kubectl get <resource>

 

 


 

4️⃣ “No matches for kind…”

 

🔎 오류 설명

 

이 오류는 잘못된 리소스 유형을 사용할 때 발생합니다.

보통 kubectl이 특정 API 그룹의 리소스를 인식하지 못할 때 나타납니다.

 

🔧 해결 방법

 

1) 올바른 리소스 유형 확인

 

지원되는 리소스인지 확인합니다.

kubectl api-resources

 

2) CRD(Custom Resource Definition) 여부 확인

 

특정 CRD가 설치되지 않은 경우, 해당 리소스를 인식하지 못할 수 있습니다.

kubectl get crds

 

3) 올바른 API 버전 사용 여부 확인

 

특정 리소스는 API 버전에 따라 지원되지 않을 수도 있습니다.

kubectl explain <resource>

 

4) kubectl 버전 확인

 

사용하는 kubectl 버전이 Kubernetes 클러스터와 호환되는지 확인합니다.

kubectl version --short

 

 


 

5️⃣ “Service is not found”

 

🔎 오류 설명

 

이 오류는 지정한 서비스가 존재하지 않을 때 발생합니다.

네임스페이스가 다르거나, 서비스가 삭제되었을 가능성이 있습니다.

 

🔧 해결 방법

 

1) 올바른 서비스 이름 및 네임스페이스 확인

 

서비스가 존재하는지 먼저 확인하세요.

kubectl get svc -A

 

2) 서비스의 네임스페이스 확인

 

특정 네임스페이스에 서비스가 존재하는지 확인합니다.

kubectl get svc -n <namespace>

 

3) 서비스 로그 및 이벤트 확인

 

서비스가 삭제되었거나, 정상적으로 동작하지 않을 수 있습니다.

kubectl describe svc <service-name>
kubectl get events --sort-by=.metadata.creationTimestamp

 

4) DNS 설정 확인

 

내부에서 서비스가 정상적으로 접근 가능한지 확인합니다.

nslookup <service-name>.<namespace>.svc.cluster.local

 

 


 

🎯 마무리

 

이 글에서는 Kubernetes에서 자주 발생하는 리소스 조회 및 존재 여부 관련 오류 5가지와 그 해결 방법을 다뤘습니다.

 

✔️ 리소스가 존재하지 않는 경우

✔️ API 서버에서 리소스를 찾지 못하는 경우

✔️ 네임스페이스에서 리소스를 찾지 못하는 경우

✔️ CRD가 누락된 경우

✔️ 서비스를 찾지 못하는 경우

 

만약 위 해결 방법으로도 문제가 해결되지 않는다면,

kubectl api-resources, kubectl get crds, kubectl describe 명령어 등을 활용하여 추가로 분석해보는 것이 좋습니다.

 

 

728x90