[kubernetes] kubeadm join 시 secrets "kubeadm-certs" is forbidden 오류 확인
Kubernetes의 kubeadm join
명령어를 사용하여 새로운 노드를 클러스터의 Control Plane에 추가할 수 있습니다.
새로운 노드 추가 시 오류가 발생하였으며 오류 내용과 해결 방법을 알아봅시다.
오류 내용
사용한 kubeadm join
명령어는 아래와 같습니다.
# kubeadm join 10.0.0.11:6443 --token sa3r4y.ngt09l1rja0ji0xq \
--discovery-token-ca-cert-hash sha256:41b08148601186594f2d125f01e04b77feff0ad5ce40cd0b52e3ee862362cfc3 \
--control-plane --certificate-key 3fa1cc2fb71465621ba882f021464f483c46957a01755cbbd4435dcaf4d60032 \
--v=5
상세 오류 로그를 확인하기 위해서는 --v=5
옵션이 필요합니다.
위 kubeadm join
명령어를 사용하여 Control Plane 추가 시 아래 오류가 발생하였습니다.
[download-certs] Downloading the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
secrets "kubeadm-certs" is forbidden: User "system:bootstrap:sa3r4y" cannot get resource "secrets" in API group "" in the namespace "kube-system"
error downloading the secret
오류 내용은 join 하고자하는 클러스터의 인증서 파일이 "kube-system" Namespace, "kubeadm-certs" 이름의 Secret으로 조회할 수 없어 발생한 오류입니다.
상세 내용으로는 첫 번째 Control Plane 노드를 설정한 클러스터에서 클러스터 인증서 파일이 생성 및 저장되지 않아 조회 시 발생한 오류로 kubeadm init 및 수동으로 인증서 생성 시 --upload-certs
옵션을 사용하여 인증서를 정상적으로 생성 및 저장하여 오류를 해결 할 수 있습니다.
해결 방법
노드 구성 (kubeadm init)
신규로 노드를 구성하거나 기존에 구성한 노드를 초기화 후 다시 재구성할 경우 kubeadm init
명령어 시 --upload-certs
옵션을 추가합니다. 노드가 구성되면서 인증서 파일은 정상적으로 생성 및 저장됩니다.
# kubeadm init --control-plane-endpoint "<고정 IP 또는 DNS 이름>:6443" --upload-certs ...
신규 인증서 발급
아래 명령어를 사용하여 신규 인증서를 발급하여 "kube-system" Namespace, "kubeadm-certs" 이름의 Secret에 인증서를 저장합니다.
# kubeadm init phase upload-certs --upload-certs
[upload-certs] Storing the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
[upload-certs] Using certificate key:
8ff8f8c871c6bab95b42b0e1928ffbb4d935ac9355dc4484379fd648a4dc4a37
생성된 인증서의 key 값을 사용하여 다시 kubeadm join
명령어를 사용하여 새로운 노드를 추가합니다.
Kubernetes의 kubeadm join
명령어 사용 시 인증서 관련 오류를 확인해봤습니다.
인증서를 신규로 발급하여 저장하는 방법으로 간단히 오류를 해결할 수 있으며 join 시에는 다양한 오류가 발생할 수 있으니 오류 로그를 확인 후 잘 해결해보시기 바랍니다.
지금까지 새로운 노드를 클러스터의 Control Plane에 추가 시 발생한 오류 내용과 해결 방법을 알아봤습니다....! 끝...!
유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!
[Reference]
https://github.com/kubernetes/kubeadm/issues/2386
'kubernetes' 카테고리의 다른 글
[kubernetes] controlPlaneEndpoint 설정하기 (0) | 2024.11.13 |
---|---|
[kubernetes] kubeadm join 시 필요한 정보 확인 (1) | 2024.11.04 |
[kubernetes] Master/Worker 노드 개념 알아보기 (0) | 2024.10.29 |
[kubernetes] kubeadm init 클러스터 구성하기 (0) | 2024.10.22 |
[kubernetes] kubeadm, kubelet, kubectl 설치하기 (0) | 2024.09.25 |