[kubernetes] kubeadm join Worker 노드 추가하기


Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리하는 오픈 소스 플랫폼이며, 다양한 환경에서 일관된 애플리케이션 실행을 가능하게 해주는 컨테이너 오케스트레이션 도구입니다.

 

kubeadm join 명령어는 Kubernetes 클러스터에 새로운 노드를 추가할 때 사용되는 명령어입니다. Worker 노드를 추가하는 경우, 사전에 Master 노드가 구성되어 있어야 합니다.

 

Kubernetes 클러스터에 Worker 노드를 추가하는 방법을 알아보도록 하겠습니다.

 

 

 


작업 구성

사전에 총 3대의 서버를 Master 노드로 구성 완료한 상태입니다.
총 3대의 Worker 노드를 추가하는 Kubernetes 클러스터 구성을 만들고자 합니다.

 

 

 


사전 작업

기본 작업

Worker 노드는 join 명령어를 통해 Master 노드 클러스터에 연결 및 추가됩니다.


kubeadm join 명령어로 클러스터에 추가하기 위해 기본 사전 작업을 진행합니다.

 

 

 

 

kubeadm join 시 필요한 정보 확인

Worker 노드를 추가할 경우에는 token 값과 CA 인증서 값만 필요하지만 Master 노드를 추가할 경우에는 클러스터 인증서 값이 추가적으로 필요합니다. 아래 링크를 통해 kubeadm join 시 필요한 정보를 사전에 확인 합니다.

 

 

 

 


 

kubeadm join

Worker 노드에서 join 명령어를 통해 Master 노드 클러스터에 연결 및 추가합니다.


kubeadm join 명령어에는 Master 노드 IP 및 Port, 토큰(Token), CA 인증서 해시 값이 필요합니다.

# kubeadm join 10.0.0.11:6443 \ 
              --token fb4jku.kkt1ivfjvxkskxrq \ 
              --discovery-token-ca-cert-hash sha256:48ebf1c55897a3d0e55c19e75648d457b6309f4f0b8c88ae5e3dc871c0d8a1a5 \ 
              --v=5

I1112 16:54:23.022474   33868 join.go:419] [preflight] found NodeName empty; using OS hostname as NodeName
I1112 16:54:23.022891   33868 initconfiguration.go:123] detected and using CRI socket: unix:///var/run/crio/crio.sock

##### 생략 #####

I1112 16:54:25.901893   33868 cert_rotation.go:140] Starting client certificate rotation controller
I1112 16:54:25.902612   33868 kubelet.go:318] [kubelet-start] preserving the crisocket information for the node
I1112 16:54:25.902639   33868 patchnode.go:31] [patchnode] Uploading the CRI Socket information "unix:///var/run/crio/crio.sock" to the Node API object "k8s-wn-001" as an annotation

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

 

성공적으로 Worker 노드 추가 작업이 완료되었습니다.

 

 

 


클러스터 join 상태 확인

Kubernetes 클러스터에서 현재 구성된 모든 노드(node)에 대한 정보를 확인할 수 있습니다.

# kubectl get nodes
NAME         STATUS   ROLES           AGE   VERSION
k8s-cn-001   Ready    control-plane   12d   v1.31.2
k8s-cn-002   Ready    control-plane   24h   v1.31.2
k8s-cn-003   Ready    control-plane   24h   v1.31.2
k8s-wn-001   Ready    <none>          17h   v1.31.0
k8s-wn-002   Ready    <none>          35m   v1.31.0
k8s-wn-003   Ready    <none>          35m   v1.31.0

 

노드 이름, 상태, 역할, 생성된 시간, 버전 등의 정보를 확인할 수 있으며,

추가된 k8s-wn-001, k8s-wn-002, k8s-wn-003 Worker 노드를 확인할 수 있습니다.

 

 

 


 

Kubernetes에서 kubeadm join 명령어를 통해 Worker 노드를 추가하는 방법을 알아봤습니다.

 

먼저, Worker 노드에서 kubeadm join 명령어를 사용하기 위해 CRI-O, kubeadm, kubelet, kubectl 등을 설치합니다. 이후 kubeadm join 명령어를 사용하여 클러스터에 연결합니다. Worker 노드를 추가할 때는 token 값, CA 인증서 해시 값을 추가하여 Master 노드에 Worker 노드를 추가합니다.

 

이후 kubectl get nodes 명령어로 추가된 Worker 노드 상태를 확인할 수 있습니다.

 

지금까지 Kubernetes에서 kubeadm join 명령어를 통해 Worker 노드를 추가하는 방법을 알아보는 시간을 가졌습니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/

 

 

 

+ Recent posts