0. 공부 목적
ST00CK 에 RKE2 를 기반으로 프로젝트를 개발하기로 위해 직접적인 구성 전에 간단한 설정을 하기 위해 연습 목적으로 작성하게 되었다. GCP 의 무료 크레딧을 활용하고 있기 때문에 크레딧이 소진되면 개인 리소스에 이사를 해야하고, Docker 기반으로 K8S 를 설정하는 것 보다 Containerd 기반으로 설정하는것이 더 리소스적으로 효율적이기 때문에 해당 기술을 채택하게 되었다.
1. REK2
RKE2는 Rancher Kubernetes Engine 2의 약자로, Rancher에서 제공하는 엔터프라이즈급 Kubernetes 배포 도구이다. RKE2는 표준 Kubernetes와의 호환성을 유지하면서 보안과 안정성을 강화한 Kubernetes 배포판이다. 다음은 RKE와 RKE2의 차이점이다.
2. VMware Fusion 설정
필자는 2019 Intel Macbook Pro 사용중이다. 따라서 VMware Fusion 에 마스터 노드와 워커 노드를 구성할 VM 2개를 생성한다. 현재 GCP 에서 Ubuntu 를 사용중이기 때문에 각 VM 에 Ubuntu를 올리기로 한다.
2.1 Ubuntu 22.04.5 LTS 설치
https://releases.ubuntu.com/jammy/
해당 사이트에 접속하여 Ubuntu 22.04.5 LTS 이미지를 다운받는다.
이후에 VMware Fusion 에서 다음과 같이 설정한다.
위와 같은 과정을 두번 반복하게 되면 다음과 같이 2개의 VM 을 설정할 수 있다.
2.2 SSH 설정
두개의 VM 에서 Terminal 을 옮겨다니면서 실행하기 귀찮기 때문에 SSH 설정을 해주도록 한다.
먼저 ifconfig 를 확인할 수 있는 net-tools 를 설치한다.
sudo apt get net-tools
다음 SSH 를 설치한다.
sudo apt update
sudp apt install openssh-server -y
다음 SSH 가 활성화 되어 있는지 확인한 후 서비스 부팅시 자동으로 시작하도록 설정한다. 마지막으로 방화벽 설정까지 해준다.
sudo systemctl status ssh
sudo systemctl enable ssh
sudo ufw allow ssh
sufo ufw enable
2.3 SSH 접근
해당 이미지를 확인하면 masternode 로 설정한 VM 과 worknode 로 설정한 VM 에 SSH 로 접근한 것을 확인할 수 있다.
3. RKE2 설치
RKE2를 통해 쿠버네티스 클러스터를 설치할 것이다. 순서는 다음과 같다.
- 쿠버네티스 Master Node(마스터 노드)를 설치한다.
- Worker Node (워커 노드)를 설치한다.
- Rancher (랜처)를 설치한다.
3.1 Master Node(마스터 노드) 설치
https://docs.rke2.io/install/quickstart
RKE2 는 공식문서를 확인하여 진행하였다. Master Node 는 가장 위에 있는 Server Node 를 참고하면 된다.
설치 이전에 가상메모리 스왑이 활성화된 상태에서는 쿠버네티스의 스캐줄러가 노드의 메모리 사용량을 정확하게 파악할 수 없기 때문에 서비스 운영시 swap off 를 진행하였다.
$sudo su
$swapoff -a
다음은 RKE2를 설치한다.
$curl -sfL https://get.rke2.io | sh -
rke2-server 서비스를 활성화 한다.
$systemctl enable rke2-server.service
rke2 서비스를 실행한다. (실행 이후 서비스가 올라가기까지 잠깐의 시간이 소요된다.)
일정 시간이 지난 후에 status 명령어를 통해 서비스가 실행중인지 확인한다.
$systemctl start rke2-server.service
$systemctl status rke2-server.service
kubectl 명령어가 실행될 수 있게 기본 디렉토리를 연결한 뒤 환경변수를 등록해야한다.
이때 환경변수가 /home/masternode/ 에 생성되어야 하기 때문에 sudo su 에서 exit 으로 나와서 진행하였다.
먼저 디렉토리를 생성한 후에 디렉토리 권한을 확인한다.
$exit
$mkdir -p ~/.kube
$ls -ld ~/.kube/
rke2 클러스터에 접근하기 위해 kubectl 을 사용하기 위해서, rke2 서버에서 생성한 kubeconfig 파일을 사용자의 홈 디렉토리에 복사하고 권한을 부여한다.
$ sudo cp /etc/rancher/rke2/rke2.yaml /home/masternode/.kube/config
$ sudo chown masternode:masternode /home/masternode/.kube/config
$ ls -ld /home/masternode/.kube/config
kubeconfig 설정이 완료된 후, kubectl 명령어를 사용하여 클러스터 정보를 확인한다. 마스터 노드가 정상적으로 준비된 것을 확인할 수 있다.
$ export KUBEVIRT_KUBECONFIG=/home/masternode/.kube/config
$ kubectl get nodes
만약 kubectl 명령어가 실행이 불가능 하다면 해당 명령어를 통해 설치하면 된다.
$sudo snap install kubectl --classic
수정
VM 이 한번 꼬여서 지웠다가 재설치 하는 과정에서 다른 부분이 있어서 작성한다. 기존 환경변수 세팅은 VM 이 꺼졌다 켜질 경우 재설정을 통해 변수를 지정해줘야 했다. 이것도 모르고 계속 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
'개인공부' 카테고리의 다른 글
K8S의 마스터노드와 워커노드 용어 정리 (3) | 2024.12.11 |
---|---|
RKE2 Worker Node 설치(2) (0) | 2024.12.10 |
Socket.IO (0) | 2024.12.03 |
Chat Gpt 가 내준 컨테이너 관련 문제 10개 (2) | 2024.10.13 |
Kafka 란 무엇인가 ? (0) | 2024.10.02 |