이전 글에서 RKE2 Master Node 를 설치하였다. 이번에는 Work Node 를 설치하는 과정을 정리한다.
https://jeenukchung.tistory.com/51
1. Worker Node
Worker Node 는 클러스터 내에서 컨테이너화된 애플리케이션을 실행하는 역할을 하며, Master Node 와 통신하여 작업을 수행한다. 그렇기 때문에 당연하게도 Master Node 가 정상적으로 작동하고 있어야 한다.
1.1 역할
- 컨테이너 실행 : 워커 노드는 애플리케이션의
Pod
를 실행하는 역할을 한다. 이는 Kubernetes 스케쥴러가 마스터 노드에서 결정한 작업을 워커 노드가 수행하기 때문이다. - 클러스터의 작업자 : 클러스터 내에서 데이터 처리를 위한 작업을 수행하며, 마스터 노드의 명령을 따른다.
- 자원관리 : 워커 노드는 CPU, 메모리, 네트워트, 스토리지와 같은 자원을 관리하며, 이를 Kubernetes 클러스터에 제공한다.
- CNI(Network) : 네트워크 플러그인을 사용하여
Pod
간 통신과 외부 네트워크 연결을 처리한다.
1.2 주요 구성 요소
- Kublet :
1. Kubernetes 의 주요 컴포넌트로, 각 워커 노드에서 실행된다.
2. 마스터 노드의 API 서버와 통신하여Pod
생성, 삭제, 상태 확인 등의 작업을 수행한다.
3. 각 워커 노드에서 실행되는 컨테이너를 관리한다. - Container Runtime :
1. 컨테이너를 실행하기 위한 런타임이다. RKE2 는 기본적으로containerd
를 사용한다.
2. Kubernetes 의 CRI(Container Runtime Interface) 를 통해 컨테이너를 실행하고 관리한다. - Kube-proxcy :
1. Kubernetes 네트워킹 컴포넌트로,Service
와 관련된 네트워크 규칙을 관리한다.
2. 클러스터 내부의 네트워크 트래픽을 라우팅한다. - CNI Plugin :
1. 네트워크 플러그인으로, RKE2 는 기본적으로Canal
(Flannel + Calico) 를 사용한다.
2.Pod
간 통신과 클러스터 외부 네트워크와의 연결을 처리한다.
1.3 동작 원리
- 마스터 노드와 통신
워커 노드는kubelet
을 통해 마스터 노드의 API 서버와 통신한다.
마스터 노드로부터 작업 스케줄을 수신하고 이를 실행한다. - Pod 실행
마스터 노드에서 스케줄링된Pod
를 실행한다.containerd
를 통해 컨테이너를 실행하고, 필요한 네트워크 및 스토리지를 설정한다. - 상태 보고
워커 노드는 실행 중인Pod
와 노드의 상태를 주기적으로 마스터 노드에 보고한다.
마스터 노드는 이를 바탕으로 클러스터 상태를 관리한다. - 애플리케이션 로드 분산
Kube-proxy
는 클러스터 외부 트래픽이 여러 워커 노드에 분산되도록 라우팅 규칙을 설정한다.
2. Worker Node 설치
Worker Node 의 설치 과정은 Master Node의 설정 방법과 거의 동일하다. Worker Node 설치 역시 공식 문서를 참고하였다. 필자는 VM에 Ubuntu 22.04.5 LTS 를 설치하였기 때문에 Linux Agent 설치 과정을 거쳤다.
https://docs.rke2.io/install/quickstart
가상메모리가 활성화된 상태에서는 Kubernetes 의 스케줄러가 노드의 메모리 사용량을 정확히 파악할 수 없기 때문에 서비스 운영시 swap off 를 진행한다.
$ sudo swap0ff -a
$ free -h
RKE2 에이전트 설치를 설치하고 config.yaml 을 설정한다.
$ curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sudo sh -
$ sudo mkdir -p /etc/ranchet/rke2
$ sudo vim /etc/ranchet/rke2/config.yml
config.yml 에는 Master Node 에서 발급한 토큰이 필요하다.
$ sudo cat /var/lib/rancher/rke2/server/node-token
발급된 토큰을 yaml 파일 Token 에 붙여넣기 한다. <Master-Node-IP> 에는 말 그대로 Master Node 의 IP 대역을 작성하면 된다.
server: https://<Master-Node-IP>:9345
token: K108...
설정이 완료 되었다면 RKE2 agent 를 실행한다. (rke2-agent.service == rke2-agent)
일정 시간이 지난 후 status 명령어를 통해 서비스가 실행 상태인지 확인한다.
$ sudo systemctl enable rke2-agent
$ sudo systemctl start rke2-agent
$ sudo systemctl status rke2-agent
다시 Master Node 로 접근하여 kubectl 명령어를 통해 node 를 확인하면 Kubernetes 클러스터에 올라갔는지 확인한다.
다음과 같이 뜬다면 정상적으로 실행되는 중 임을 확인할 수 있다.
'개인공부' 카테고리의 다른 글
RKE2 Rancher 설치(3) (1) | 2024.12.12 |
---|---|
K8S의 마스터노드와 워커노드 용어 정리 (3) | 2024.12.11 |
VMware Fusion, RKE2 Master Node 설치 (1) (3) | 2024.12.09 |
Socket.IO (0) | 2024.12.03 |
Chat Gpt 가 내준 컨테이너 관련 문제 10개 (2) | 2024.10.13 |