테크믈리에의 리뷰 공간

[k0s Cluster 구축] 0. Rocky Linux 8.5 설치 본문

프로그래밍|소프트웨어/K0S

[k0s Cluster 구축] 0. Rocky Linux 8.5 설치

테크믈리에 2023. 11. 21. 10:16

 

k0s와 Rocky Linux란?

 

k0S 공식 홈페이지: https://k0sproject.io

 

k0s | Kubernetes distribution for bare-metal, on-prem, edge, IoT

k0s is the simple, solid & certified Kubernetes distribution that works on any infrastructure: bare-metal, on-premise, edge, IoT devices, public & private clouds. It's 100% open source & free. k0s is easy to install with a single binary and scales well fro

k0sproject.io

 

기존에 인기있는 K8S On Premise 배포판 / 도구는 Kubeadm이랑 Rancher였다. 해당 블로그에서도 두 방법을 통해 간단하게 클러스터를 구축하는 방법을 소개한 바 있고, 실제로 연구실 및 회사에서 운용을 해본 적이 있다.

 

Kubeadm은 Kubernetes에서 제공하는 클러스터 구축 도구로 가장 기초적인 만큼 커스터마이징에 자신이 있다면 추천할 수 있지만, 반대로 말하면 하나하나 직접 세팅해줘야하는 불편함이 있다.

 

Rancher는 Rancher Labs에서 만든 배포판으로, k8s + Docker 기반의 RKE1와 k3s/k8s + Containerd 기반의 RKE2 두가지 배포판을 제공하며 웹 기반 대시보드를 자동화해서 제공한다는 것이 큰 강점이다. 다만, 기본적으로 들어가 있는 기능이 많은 만큼 평상시에도 자원 사용량이 많아 제대로 된 서버 컴퓨터가 아닌 8600 + 32~64GB램 정도의 일반 데스크탑 환경에서는 시스템이 불안정하게 느껴지는 부분도 있고 무엇보다 특유의 자동화로 인하여 클러스터에 오류가 발생하였을 시에 사용자가 끼어들어 바로잡기 어렵다는 점에서 새로운 배포판을 찾게 되었다.

 

k0s는 Docker를 인수한 Mirantis에서 만든 초경량 배포판으로 nOps에 따르면 구글이 개발에 참여하였으며 구글 Ads나 Photos에 사용될 정도로 안정화된 배포판이다. 개인적으로 느끼는 장점은 기존 Kubeadm에 비하여 어느정도 자동화된 설치 방법이기 때문에 구축하기는 쉬우면서도 Rancher에 비하여 가볍고 안정적이며 오류가 덜 나 가장 가볍게 사용하기 좋은 배포판으로 보인다. Rancher와 달리 대시보드까지 일체화하여 주지는 않지만 Mirantis에서 만든 Lens / OpenLens가 상당히 강력하기 때문에 큰 단점으로 보이진 않는다.

 


 

Rocky Linux 공식 홈페이지: https://rockylinux.org/ko/

 

Rocky Linux

Rocky Linux is an open enterprise Operating System designed to be 100% bug-for-bug compatible with Enterprise Linux.

rockylinux.org

 

Rocky Linux는 CentOS의 정신적 후속으로, RedHat의 정책 문제로 CentOS의 효용성이 떨어지면서 RHEL과 동일한 환경을 제공하는 대체 OS 프로젝트 결과물이다. 기존에는 익숙함의 문제로 Ubuntu를 사용해왔으나, 서버로 사용하기에 어느정도 안정성이 떨어지는 듯한 느낌을 받게 되어 새로 구축하는 환경은 Rocky Linux를 사용하기로 결정하였다.

 

 

Rocky Linux 설치 디스크 만들기

 

 

Download Rocky | Rocky Linux

Rocky Linux is an open enterprise Operating System designed to be 100% bug-for-bug compatible with Enterprise Linux.

rockylinux.org

 

위의 링크에서 필요한 버전을 받아주도록 한다.

해당 시리즈는 Rocky 8 x86_64을 기반으로 작성하였다.

 

USB에 이미지를 굽기 위해서는 윈도우는 Rufus, 맥/Linux는 balenaEtcher를 추천한다.

 

Rufus - 간편하게 부팅 가능한 USB 드라이브 만들기

Rufus는 USB 메모리 및 플래시 드라이브를 포맷하고 부팅할 수 있도록 만드는 도구입니다. 이 페이지 아래에 나열된 ISO 이미지 이외에도 Rufus는 여러 종류의 ISO 이미지를 지원합니다. (1) Windows 8 이

rufus.ie

 

balenaEtcher - Flash OS images to SD cards & USB drives

A cross-platform tool to flash OS images onto SD cards and USB drives safely and easily. Free and open source for makers around the world.

etcher.balena.io

 

Rocky Linux 설치 과정

 

설치 화면으로 처음 진입하면 위와 같이 언어 선택창이 나오는데, 폴더명 이슈 등 여러가지 문제로 영어를 선택하는 것을 추천한다.

 

 

언어 선택 다음에는 위와 같은 화면이 나오는데, 여기서 우리가 설정해줄 것은 Installation Destination, Network& Host Name, Root Password, User Creation이다. 설치 이미지를 변경하고 싶다면 SOFTWARE 항목도 변경하도록 한다.

 

 

우선, Installation Destination으로 들어오게 되면 설치할 디스크를 선택할 수 있는 화면이 나타난다.

 

이 때 유의할 것은 만약 디스크를 다수 고르게 된다면 선택한 디스크 전체를 하나의 Volume Group으로 묶어 설치하기 때문에 이를 의도한 것이 아니라면 원하는 하나에만 설치하게끔 고른 것이 맞는지 확인을 하도록 한다.

 

또, 기존에 OS가 깔린 적 있는 장치이거나 파티션이 나뉜 장치라서 파티션 전체를 제거하고 싶다면 I would like to make additional space availabe 항목을 활성화도록 한다.

 

 

그러면 위와 같이 디스크 파티션을 재설정할 수 있는 화면이 나오고, 여기서 남길 파티션이랑 지울 파티션을 결정할 수 있다.

 

 

그 다음 Network& Host Name 항목으로 오면 위와 같이 네트워크 어댑터 설정을 할 수 있는 화면이 나온다. K8S 환경을 위해 설치한다면 고정 IP를 사용할 것을 추천하는데, 원하는 어댑터 선택 후 아래 Configure를 눌러 설정창을 열도록 한다.

 

 

설정창에서 IPv4 Settings에 넘어와서 Method는 Manual로 두고 본인 공유기에 맞게끔 Addresses 설정 후 DNS는 통신사에 맞게 설정하거나 구글 DNS인 8.8.8.8, 8.8.4.4를 넣어주도록 하자.

 

설정이 끝난 다음에는 해당 어댑터를 켜주도록 하자. 만약 어댑터를 키지 않고 넘어간다면, 설치된 OS에서도 기본적으로 어댑터가 꺼진 상태로 부팅되게 된다.

 

네트워크 설정은 제대로 하지 못했거나 변경하고 싶다면 Rocky Linux에 접속해서도 다시 변경할 수 있다.

 

마지막으로 루트 비밀번호랑 새 사용자 계정 생성을 하도록 한다. 해당 부분은 설명할 것이 딱히 없어 굳이 화면을 캡처해두진 않았지만, 유의할 것이라면 만들 새 사용자 계정이 관리자 계정이기 위해서는 꼭 Set as Administrator 항목을 활성화해두도록 하자.

 

Rocky Linux 기본 설정

 

우선, 네트워크 설정을 마저 하도록 하자

sudo nmtui

 

 

명령어를 입력하면 위와 같은 화면이 뜰 것이다.

연결 편집에서는 Rocky Linux를 설치할 때 본 것과 같은 화면이 나타날 것이다.

연결 활성화에서는 각 네트워크 어댑터의 활성화 여부를 변경할 수 있다.

더보기

실수로 리눅스를 설치할 때 네트워크를 활성화해두지 않았다면 부팅 시 자동으로 이더넷 연결이 되지 않는다.

 

이를 해결하려면, 우선은 nmtui의 연결 편집을 통해 네트워크 편집 후 연결 활성화에서 이더넷을 켜주도록 하자.

 

그 다음에 부팅 시 자동으로 이더넷이 켜지도록 하려면 /etc/sysconfig/network-script/ifcfg-enp0s3 (끝에 이름은 이더넷 이름에 따라 다를 수도 있다) 파일을 열어 ONBOOT=yes로 변경하도록 하자.

마지막으로 시스템의 호스트 이름을 되도록이면 본인이 알아보기 쉬운 이름으로 변경해주도록 하자.

기본적으로 k0s 클러스터에 참여 시 시스템의 호스트 이름을 기반으로 Node에 이름이 나타난다.


 

그 다음에는 원격 접속을 허용하기 위해서 방화벽이랑 sshd 설정을 해주도록 하자.

sudo systemctl disable firewalld
sudo systemctl enable sshd
sudo systemctl start sshd

쿠버네티스 클러스터 구축 시 포트 관리가 번거롭기 때문에 방화벽을 끄고 내부 인터넷으로만 연결되도록 한 다음 LoadBalacner + Nginx Reverse Proxy나 Ingress를 통해 관리하는 것을 추천한다.


 

다음 명령어는 우분투의 apt update에 해당하는 명령어와 build_essentials에 해당하는 프로그램 목록을 설치하는 명령어이다.

sudo dnf update -y
sudo dnf clean all
sudo dnf groupinstall "Development Tools" -y
더보기

Oh-My-ZSH를 설치하는 과정은 다음과 같다.

 

1. 우선, ZSH를 설치한 다음 기본 터미널을 zsh로 변경한다.

sudo dnf install -y git wget zsh
chsh -s $(which zsh)

 

2. Oh-My-ZSH를 다운받아 설치한다.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

 

3. 필요한 Plugin들을 다운받아준다.

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

 

4. ~/.zshrc 파일을 열어 plugins 항목을 아래와 같이 변경한다. (kubectl 및 kube-ps1은 쿠버네티스를 관리할 노드에서만 추가하면 된다. 플러그인 사용을 위해서는 kubectl 설치 후 source <(kubectl completion zsh) 명령어를 입력하도록 한다.)

plugins=(
git
sudo
colored-man-pages
zsh-syntax-highlighting
zsh-autosuggestions
fzf
kubectl
kube-ps1
)

 

5. 변경 사항을 적용한다.

source ~/.zshrc

 

Comments