반응형
쿠버네티스(Kubernetes)에서 Worker Node 는 클러스터 내에서 애플리케이션 컨테이너를 실행하고 관리하는 역할을 하는 중요한 구성 요소 중 하나입니다.
Worker Node 설명
- 컨테이너 호스트: Worker node는 하나 이상의 컨테이너를 실행하는 환경을 제공합니다. 이러한 컨테이너는 Docker, Containerd 또는 다른 컨테이너 런타임에서 실행됩니다.
- 컨테이너 관리: Worker node는 컨테이너의 실행, 중단, 스케일링 등을 관리합니다. 쿠버네티스 마스터 컨트롤 플레인에서 전송한 명령을 받아 실행하고 상태를 보고합니다.
- Kubelet: Kubelet은 각각의 Worker node에서 실행되는 에이전트 프로그램입니다. 이 에이전트는 쿠버네티스 마스터와 통신하고 노드 상태를 보고하며 컨테이너의 상태를 확인합니다.
- 컨테이너 네트워킹: Worker node는 컨테이너 간 통신 및 컨테이너와 외부 네트워크 간 통신을 관리합니다. 이를 통해 애플리케이션 컨테이너는 서로 통신하고 외부와 통신할 수 있습니다.
- 컨테이너 스토리지: Worker node는 컨테이너의 데이터를 저장하고 관리하는 역할을 합니다. 이는 로컬 디스크 또는 외부 스토리지와 같은 다양한 방식으로 이루어질 수 있습니다.
- 노드 상태 관리: Worker node는 자체 상태를 모니터링하고 이상 상태를 감지하면 해당 정보를 마스터 노드로 보내어 클러스터 상태 관리를 돕습니다.
- 스케줄링: 쿠버네티스 마스터 노드는 애플리케이션을 어떤 Worker node에 배치할지 결정하는 스케줄링을 수행합니다. 이때 각 Worker node의 가용 리소스와 현재 상태를 고려합니다.
- 노드 확장성: 클러스터에서 더 많은 컨테이너를 실행하려면 Worker node를 확장할 수 있습니다. 이는 새로운 노드를 추가하거나 기존 노드의 리소스를 증가시키는 방식으로 이루어질 수 있습니다.
워커노드(Worker Node) 설치
가상메모리 swap off: 스왑이 활성화된 상태에서는 쿠버네티스의 스케줄러가 노드의 메모리 사용량을 정확히 파악할 수 없기 때문에 서비스 운영시 swap off 를 진행합니다.
$ swapoff -a
$ free -h
total used free shared buff/cache available
Mem: 31Gi 9.6Gi 19Gi 53Mi 2.1Gi 21Gi
Swap: 0B 0B 0B
RKE2(Rancher Kubernetes Engine2) 설치
마스터와의 차이는 INSTALL_RKE2_TYPE="agent" 입니다.
$ curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -
kubectl 명령어가 실행될 수 있도록 기본 디렉토리로 연결한 뒤 환경변수를 등록해 줍니다.
$ mkdir ~/.kube/
$ cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
$ export PATH=$PATH:/var/lib/rancher/rke2/bin/
$ echo 'export PATH=/usr/local/bin:/var/lib/rancher/rke2/bin:$PATH' >> ~/.bashrc
쿠버네티스 마스터 노드와 워커 노드를 클러스터로 구성하기 위해 server ip와 token 값을 입력해 줍니다.
Server IP는 MasterNode의 IP값, Token값은 Master Node에서 조회한 값을 넣어준다.
- 마스터 노드의 노드 토큰(Node Token) 값을 조회한다.
$ cat /var/lib/rancher/rke2/server/node-token
- 워커노드에 노드 토큰(Node Token) 값을 저장하기 위해 디렉토리 및 생성한다.
$ mkdir -p /etc/rancher/rke2/
$ vi /etc/rancher/rke2/config.yaml
- 마스터노드의 IP와 TOKEN을 저장한다
server: https://192.168.0.2:9345 #마스터노드의 IP 입력
token: K10b... # 마스터노드의 토큰 등록
RKE2 에이전트 서비스 실행
$ systemctl enable rke2-agent.service
$ systemctl start rke2-agent.service
일정 시간이 지난 후 status 명령어를 통해 서비스가 acrive (running) 상태인지 확인합니다.
정상적으로 올라갔으면 쿠버네티스 클러스터와 마스터노드가 설치되었습니다.
$ systemctl status rke2-agent
● rke2-agent.service - Rancher Kubernetes Engine v2 (agent)
Loaded: loaded (/usr/local/lib/systemd/system/rke2-agent.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-09-12 17:43:24 KST; 1 week 1 day ago
Docs: https://github.com/rancher/rke2#readme
Main PID: 2496629 (rke2)
Tasks: 358
Memory: 420.1M
CPU: 10h 24min 59.441s
CGroup: /system.slice/rke2-agent.service
kubectl 명령어를 통해 Worker Node(워커 노드)가 쿠버네티스 클러스터에 올라갔는지 확인합니다.
ROLES에 <none> 으로 표기된곳이 Worker Node 입니다.
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
devops01 Ready <none> 8d v1.25.13+rke2r1
prod-board Ready control-plane,etcd,master 23d v1.25.12+rke2r1
Worker Node(워커 노드)에 대한 설치가 완료 되었습니다.
이제 Master Node(마스터 노드)에 Rancher(랜처)를 설치해보도록 하겠습니다.
쿠버네티스(Kubernetes), 랜처(Rancher, RKE2) 설치 3편 (tistory.com)
반응형
'Programing > Kubernetes' 카테고리의 다른 글
쿠버네티스(Kubernetes), 랜처(Rancher, RKE2) 설치 3편 (0) | 2023.09.27 |
---|---|
쿠버네티스(Kubernetes), 랜처(Rancher, RKE2) 설치 1편 (0) | 2023.09.13 |
쿠버네티스(Kubernetes) 클러스터 복구 (0) | 2023.09.12 |
쿠버네티스(Kubernetes) PV / PVC / StorageClass (2) (0) | 2023.09.08 |
쿠버네티스(Kubernetes) PV / PVC / StorageClass (1) (0) | 2023.08.22 |