Kubernetes 네임스페이스가 "종료됨" 상태로 멈춰 있는 문제가 있습니다. 실행하면 kubectl get ns cattle-monitoring-system -o json|jq
네임스페이스 상태와 관련된 오류 메시지가 생성되고 네임스페이스 상태 내의 조건이 custom.metrics.k8s.io/v1beta1
표시됩니다 .DiscoveryFailed
E1213 08:02:39.979034 953148 memcache.go:287] couldn't get resource list for custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request
…
{
"apiVersion": "v1",
"kind": "Namespace",
…
"status": {
"conditions": [
{
"lastTransitionTime": "2023-12-12T14:53:40Z",
"message": "Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request",
"reason": "DiscoveryFailed",
"status": "True",
"type": "NamespaceDeletionDiscoveryFailure"
},
…
]
}
}
네임스페이스를 성공적으로 삭제하려면 이 문제를 어떻게 해결해야 합니까?
답변1
겪고 있는 문제는 Kubernetes API 서버가 네임스페이스 종료를 방지하는 custom.metrics.k8s.io/v1beta1 API를 검색할 수 없는 것과 관련되어 있습니다. 이 문제를 해결하는 단계는 다음과 같습니다.
연결된 APIService를 확인하세요.
custom.metrics.k8s.io/v1beta1에 APIService가 있는지 조사합니다.
kubectl get apiservices.apiregistration.k8s.io -o json|jq '.items[]|select(.metadata.name=="v1beta1.custom.metrics.k8s.io")'
출력은 다음과 같아야합니다
{
"apiVersion": "apiregistration.k8s.io/v1",
"kind": "APIService",
...
"status": {
"conditions": [
{
"message": "service/example-service in \"example-namespace\" is not present",
"reason": "ServiceNotFound",
"status": "False",
"type": "Available"
}
]
}
}
APIService와 관련된 활성 구성요소가 없는지 확인하십시오.
다음 명령을 실행하십시오. example-service
이전에 생성한 출력을 기반으로 조정합니다.
for c in configmaps secrets deployments statefulsets pods services; do
echo "Checking for $c related to example-service"
kubectl get $c -A | grep example-service
done
출력이 없으면 클러스터에 APIService와 관련된 활성 구성 요소가 없는지 확인합니다.
API 서비스 삭제
kubectl delete apiservice v1beta1.custom.metrics.k8s.io
APIService를 삭제한 후에도 네임스페이스는 계속 종료되어야 합니다. 예상치 못한 문제가 있는지 클러스터를 모니터링합니다.