8.5.8.3. DHCP를 통해 올바른 호스트 이름을 얻지 못하는 클러스터 노드
IPv6 배포 중에 클러스터 노드는 DHCP를 통해 호스트 이름을 검색해야 합니다. 경우에 따라 NetworkManager
가 호스트 이름을 즉시 할당하지 않을 수 있습니다. 컨트롤 플레인 (마스터) 노드는 다음과 같은 오류를 보고할 수 있습니다.
Failed Units: 2 NetworkManager-wait-online.service nodeip-configuration.service
이 오류는 클러스터 노드가 DHCP 서버에서 호스트 이름을 받지 않고 부팅되었을 가능성이 있음을 나타냅니다. 이로 인해 kubelet
이 localhost.localdomain
호스트 이름으로 부팅됩니다. 이 문제를 해결하려면 노드가 호스트 이름을 업데이트하도록 합니다.
프로세스
hostname
을 검색합니다.[core@master-X ~]$ hostname
호스트 이름이
localhost
인 경우 다음 단계를 진행합니다.참고여기서
X
는 컨트롤 플레인 노드(마스터 노드라고도 함) 번호입니다.클러스터 노드가 DHCP 임대를 갱신하도록 합니다.
[core@master-X ~]$ sudo nmcli con up "<bare-metal-nic>"
<bare-metal-nic>
을baremetal
네트워크에 해당하는 유선 연결로 바꿉니다.hostname
다시 확인하십시오.[core@master-X ~]$ hostname
호스트 이름이 여전히
localhost.localdomain
인 경우NetworkManager
를 다시 시작합니다.[core@master-X ~]$ sudo systemctl restart NetworkManager
-
호스트 이름이 여전히
localhost.localdomain
인 경우 몇 분 기다린 후 다시 확인하십시오. 호스트 이름이localhost.localdomain
으로 남아 있으면 이전 단계를 반복합니다. nodeip-configuration
서비스를 다시 시작합니다.[core@master-X ~]$ sudo systemctl restart nodeip-configuration.service
이 서비스는 올바른 호스트 이름 참조를 사용하여
kubelet
서비스를 재구성합니다.이전 단계에서 kubelet이 변경되었으므로 단위 파일 정의를 다시 로드하십시오.
[core@master-X ~]$ sudo systemctl daemon-reload
kubelet
서비스를 다시 시작합니다.[core@master-X ~]$ sudo systemctl restart kubelet.service
kubelet
이 올바른 호스트 이름으로 부팅되었는지 확인합니다.[core@master-X ~]$ sudo journalctl -fu kubelet.service
클러스터 가동 후 (예: 클러스터를 다시 시작) 클러스터 노드가 DHCP를 통해 올바른 호스트 이름을 얻지 못하는 경우 클러스터에 csr
은 보류 처리됩니다. csr
을 승인 하지 마십시오. 그렇지 않으면 다른 문제가 발생할 수 있습니다.
CSR
처리
클러스터에서 CSR을 가져옵니다.
$ oc get csr
보류중인
CSR
에Subject Name: localhost.localdomain
이 포함되어 있는지 확인합니다.$ oc get csr <pending_csr> -o jsonpath='{.spec.request}' | base64 --decode | openssl req -noout -text
Subject Name: localhost.localdomain
이 포함된 모든csr
을 제거합니다.$ oc delete csr <wrong_csr>