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