oc get co/dns 실행 에러 DNS "default" reports Progressing=True: "Have 4 available DNS pods, want 5."
원인 파악 도중 특정 노드에 원격접속이 되지 않아 결국 리부팅으로 해결하여 절차만 기록해두었습니다.
아래와 같은 에러가 발생했을때
# oc get co/dns
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
dns 4.12.0 True True False 49d DNS "default" reports Progressing=True: "Have 4 available DNS pods, want 5."
DNS Pod 를 확인합니다.
# oc get pod -n openshift-dns
NAME READY STATUS RESTARTS AGE
dns-default-d88tp 2/2 Running 0 49d
dns-default-jk4gh 0/2 CrashLoopBackOff 988 (7s ago) 49d
dns-default-lklsh 2/2 Running 0 49d
dns-default-svtxz 2/2 Running 0 49d
dns-default-z2plz 2/2 Running 0 49d
node-resolver-8m85h 1/1 Running 0 49d
node-resolver-h6g59 1/1 Running 0 49d
node-resolver-nchv9 1/1 Running 0 49d
node-resolver-s927r 1/1 Running 0 49d
node-resolver-xwltt 1/1 Running 0 49d
dns-default 이름의 Pod 는 노드의 개수만큼 존재 하는데, master node, worker node 가 모두 5개인데, 4개만 사용 가능하다고 출력되고 있습니다.
문제가 발생한 Pod 는 어느 노드의 Pod 인지 확인합니다.
# oc get pod dns-default-jk4gh -n openshift-dns -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
dns-default-jk4gh 0/2 CrashLoopBackOff 1001 (3m47s ago) 49d 10.131.0.6 worker01.az1.sysdocu.kr <none> <none>
worker01 임을 확인하였습니다.
해당 Pod 의 로그를 확인합니다.
# oc logs dns-default-jk4gh -n openshift-dns
Defaulted container "dns" out of: dns, kube-rbac-proxy
open exec fifo /proc/self/fd/5: too many open files in system
좀 더 자세한 문제 확인을 위해 worker01 서버에 접속합니다.
# ssh core@115.68.142.104
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
접근 불가가 확인되었습니다. 참고로 다른 노드로는 원격접속이 원활히 진행되었습니다.
worker01 노드에 원격접근 자체가 불가능하여 해당 서버를 리부팅 하였고, 그 이후 dns-default 가 정상으로 돌아왔습니다.
# oc get pod dns-default-jk4gh -n openshift-dns -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
dns-default-jk4gh 2/2 Running 1007 49d 10.131.0.13 worker01.az1.sysdocu.kr <none> <none>
# oc get co/dns
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
dns 4.12.0 True False False 49d
콘솔에서 worker01 노드에 로그인이 가능하도록 root 패스워드 설정을 해놓으면 원인을 파악할 수 있던 상황이였는데 core 계정으로 네트워크 로그인만 가능하도록 되어 있어 어쩔수 없이 리부팅하였으며, 이를 계기로 모든 노드에 root 패스워드 설정을 진행하였습니다.
참고로, dns 에러 외에 oc get co 명령으로 보였던 몇가지 항목의 에러가 위 조치로 인해 모두 해결되었습니다.
image-registry 4.12.0 True True False 49d Progressing: The registry is ready...
ingress 4.12.0 True True True 49d The "default" ingress controller reports Degraded=True: DegradedConditions: One or more other status conditions indicate a degraded state: DeploymentReplicasAllAvailable=False (DeploymentReplicasNotAvailable: 1/2 of replicas are available)
monitoring 4.12.0 False True True 42h reconciling Prometheus Operator Admission Webhook Deployment failed: updating Deployment object failed: waiting for DeploymentRollout of openshift-monitoring/prometheus-operator-admission-webhook: got 1 unavailable replicas
network 4.12.0 True True False 49d DaemonSet "/openshift-network-diagnostics/network-check-target" is not available (awaiting 1 nodes)...
'리눅스 > OpenShift' 카테고리의 다른 글
Openshift / Kubernetes 파드 (Pod) 스케쥴링 - Affinity 옵션 (0) | 2023.06.23 |
---|---|
Openshift / Kubernetes 컨테이너 권한 설정하기 (0) | 2023.06.20 |
Openshift 4.12.0 PV, PVC (GlusterFS) 를 이용한 Volume 추가 (0) | 2023.06.08 |
[Openshift] 웹 UI 대시보드 Grafana 설치 (2) | 2023.05.26 |
[OC & Kubernetes] Kubernetes 관리도구 helm 3.12 설치하기 (0) | 2023.05.19 |