Kubernetes에서는 네임스페이스를 사용하여 리소스를 격리하고 관리합니다.
하지만 잘못된 네임스페이스 설정, 존재하지 않는 리소스 접근, 잘못된 kubeconfig 파일 등으로 인해 다양한 오류가 발생할 수 있습니다.
이 글에서는 Kubernetes 환경에서 발생할 수 있는 대표적인 네임스페이스 및 설정 오류 5가지를 정리하고, 각각의 원인과 해결 방법을 설명합니다. 🚀
1️⃣ “No resources found in default namespace”
🔎 오류 설명
이 오류는 kubectl 명령어를 실행할 때 기본 네임스페이스에서 해당 리소스를 찾을 수 없을 때 발생합니다.
Kubernetes에서 특정 네임스페이스를 지정하지 않으면 기본적으로 default 네임스페이스에서 조회를 시도합니다.
🔧 해결 방법
1) 올바른 네임스페이스에서 리소스를 조회
현재 네임스페이스에서 실행 중인 리소스를 확인하려면 --all-namespaces 옵션을 사용합니다.
kubectl get pods --all-namespaces
특정 네임스페이스에서 실행 중인 리소스를 조회하려면 -n 옵션을 사용합니다.
kubectl get pods -n <namespace>
2) 현재 설정된 네임스페이스 확인
현재 사용 중인 네임스페이스를 확인하려면 다음 명령어를 실행하세요.
kubectl config view --minify | grep namespace
3) 기본 네임스페이스 변경
기본 네임스페이스를 변경하여 리소스를 조회할 때 해당 네임스페이스가 기본적으로 적용되도록 설정할 수 있습니다.
kubectl config set-context --current --namespace=<namespace>
2️⃣ “invalid namespace”
🔎 오류 설명
이 오류는 존재하지 않는 네임스페이스를 참조할 때 발생합니다.
잘못된 네임스페이스 이름을 입력했거나, 네임스페이스가 삭제된 경우입니다.
🔧 해결 방법
1) 현재 존재하는 네임스페이스 목록 확인
클러스터에서 사용 가능한 네임스페이스를 확인합니다.
kubectl get namespaces
2) 올바른 네임스페이스 사용
네임스페이스가 존재하지 않는다면, 새로운 네임스페이스를 생성하세요.
kubectl create namespace <namespace>
3) 네임스페이스가 삭제되지 않았는지 확인
특정 네임스페이스가 삭제되지 않았는지 확인하려면 다음 명령을 실행합니다.
kubectl get namespaces --show-labels
네임스페이스가 "Terminating" 상태라면, 이를 강제 삭제할 수도 있습니다.
kubectl delete namespace <namespace> --grace-period=0 --force
3️⃣ “invalid configuration: unable to load…”
🔎 오류 설명
이 오류는 kubeconfig 파일이 손상되었거나, 설정이 올바르지 않을 때 발생합니다.
일반적으로 kubectl이 올바른 클러스터에 연결되지 않았을 때 나타납니다.
🔧 해결 방법
1) 현재 설정된 kubeconfig 확인
현재 적용된 kubeconfig를 확인하려면 다음 명령어를 실행합니다.
kubectl config view
2) 클러스터 컨텍스트 변경
올바른 클러스터 컨텍스트를 설정하세요.
kubectl config get-contexts
kubectl config use-context <context-name>
3) kubeconfig 파일 복구
만약 kubeconfig 파일이 손상되었다면, 새로운 kubeconfig 파일을 다시 설정할 수 있습니다.
mv ~/.kube/config ~/.kube/config.bak
새로운 kubeconfig 파일을 다운로드하여 복원합니다.
scp user@remote-cluster:/path/to/config ~/.kube/config
4️⃣ “unable to load config, invalid configuration: no configuration has been provided”
🔎 오류 설명
이 오류는 kubectl이 클러스터 정보를 포함하는 kubeconfig 파일을 찾을 수 없을 때 발생합니다.
보통 환경 변수 설정이 잘못되었거나, kubeconfig 파일이 삭제된 경우입니다.
🔧 해결 방법
1) 환경 변수 확인
현재 설정된 kubeconfig 파일 경로가 올바른지 확인합니다.
echo $KUBECONFIG
2) kubeconfig 파일 존재 여부 확인
kubeconfig 파일이 정상적으로 존재하는지 확인합니다.
ls -l ~/.kube/config
만약 파일이 없다면, 클러스터 관리자에게 kubeconfig 파일을 요청합니다.
3) kubeconfig 경로 설정
kubeconfig 파일의 경로가 올바르지 않다면 다음과 같이 설정할 수 있습니다.
export KUBECONFIG=~/.kube/config
이 설정을 영구적으로 적용하려면 ~/.bashrc 또는 ~/.zshrc에 추가합니다.
echo 'export KUBECONFIG=~/.kube/config' >> ~/.bashrc
source ~/.bashrc
5️⃣ “context deadline exceeded”
🔎 오류 설명
이 오류는 kubectl 명령이 실행될 때 네트워크 연결 시간이 초과된 경우 발생합니다.
주로 Kubernetes API 서버가 다운되었거나, 네트워크 연결 문제가 있을 때 나타납니다.
🔧 해결 방법
1) API 서버 상태 확인
API 서버가 정상적으로 동작하는지 확인합니다.
kubectl cluster-info
2) 네트워크 연결 확인
API 서버와 연결이 가능한지 확인합니다.
ping <api-server-ip>
특정 포트가 열려 있는지 확인하세요.
telnet <api-server-ip> 6443
3) kubeconfig 파일 수정
kubeconfig 파일에서 API 서버의 주소가 올바르게 설정되었는지 확인합니다.
kubectl config view --minify
만약 API 서버 주소가 올바르지 않다면, kubectl config set-cluster 명령을 사용하여 수정할 수 있습니다.
kubectl config set-cluster <cluster-name> --server=https://<api-server-ip>:6443
🎯 마무리
이 글에서는 Kubernetes에서 자주 발생하는 네임스페이스 및 설정 오류 5가지와 그 해결 방법을 다뤘습니다.
✔️ 네임스페이스 리소스 조회 오류 (No resources found in default namespace)
✔️ 존재하지 않는 네임스페이스 오류 (invalid namespace)
✔️ 잘못된 kubeconfig 설정 오류 (invalid configuration: unable to load)
✔️ kubeconfig 파일 누락 오류 (unable to load config, invalid configuration)
✔️ 네트워크 연결 시간 초과 오류 (context deadline exceeded)
만약 위 해결 방법으로도 문제가 해결되지 않는다면,
kubectl get namespaces, kubectl config view, kubectl cluster-info 명령어 등을 활용하여 추가로 분석해보는 것이 좋습니다.
'Kubernetes > Trouble Shooting' 카테고리의 다른 글
🛠️ K8S Trouble Shooting : 기타 일반적인 Kubernetes 오류 해결하기 (0) | 2025.03.02 |
---|---|
🛠️ K8S Trouble Shooting : TLS 및 인증서 문제 해결하기 (0) | 2025.03.02 |
🛠️ K8S Trouble Shooting : 리소스 제약 및 스케줄링 오류 해결하기 (0) | 2025.03.02 |
🛠️ K8S Trouble Shooting : Persistent Volume(스토리지) 관련 오류 해결하기 (0) | 2025.03.02 |
🛠️ K8S Trouble Shooting : RBAC 및 인증 관련 오류 해결하기 (0) | 2025.03.02 |