oc get co/dns 실행 에러 DNS "default" reports Progressing=True: "Have 4 available DNS pods, want 5."

리눅스/OpenShift|2023. 6. 30. 10:24
반응형

원인 파악 도중 특정 노드에 원격접속이 되지 않아 결국 리부팅으로 해결하여 절차만 기록해두었습니다.

 

아래와 같은 에러가 발생했을때

# 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)...

 

반응형

댓글()