Kubernetes/Kubernetes 이론

kubernetes node name max length가 52인 이유

이쿠우우 2024. 7. 14. 21:46
반응형

해당 이슈를 확인하게 된 과정

cluster 구성 중에 node이름이 매우 길어지는 경우가 있음. (100자 이상)
kubelet 동작 시 kube-apiserver와 통신하기 위해 인증서가 필요한데 인증서 생성 시 CN에 Node이름이 들어감.
인증서는 openssl과 같은 tool로 생성됨.
openssl로 공개키 인증서 생성 시 기존은 CN에 "system:node:$hostname" 으로 설정이되는데
cluster name이 길어지는 경우 CN max length인 64를 초과하기 때문에 다음과 같은 error가 발생함

 

node name이 52이하가 되어야 하는 이유

 

첫 번째 : 인증서의 common domain

openssl 로 공개키를 발급 받아야하는데
이때 CN길이가 max 64이고 "system:node:" 12자는 고정으로 들어가기 때문에
64-12= 52가 됨.
즉 cluster에서 관리되는 node name은 max_length가 52가 됨.
 
두 번째 : rfc1123
kubernetes는 rfc1123을 기반으로 naming 규칙이 설정되어있음.
해당  문서의 2-2.1 항목을 확인해보면 최대 63자가 max라고 설정되어있음.

 

 

hostname이 64보다 긴 경우 kubernetes node에서 64아래로 설정하는 방법

kubelet, kube-proxy에 --hostname-override 옵션이 있음.
해당 옵션으로 hostname과는 무관하게
kubernetes에서 사용하는 node name으로 설정할 수 있음.
단 kubelet.crt의 CN이름도
--hostname-override 에 설정되는 이름과 동일해야함.
 
[참고]
반응형