테크믈리에의 리뷰 공간

[k0s Cluster 구축] 2. k0s 클러스터 구축 및 OpenLens 기초 사용법 본문

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

[k0s Cluster 구축] 2. k0s 클러스터 구축 및 OpenLens 기초 사용법

테크믈리에 2023. 11. 22. 18:04

 

k0s 클러스터 마스터 설정

 

k0s 클러스터를 구축하기 위해서는 우선 첫 마스터 노드를 하나 지정하여 해당 노드에서부터 설정을 진행해야 한다.

해당 노드로 진입하여 우선은 설정 파일을 생성하도록 한다.

su
mkdir -p /etc/k0s
k0s config create > /etc/k0s/k0s.yaml

 

현재 버전 v1.28.3의 경우, 위 명령어를 통해 설정파일을 생성하는 경우에 기본적으로 Calico 대신 Kuberouter를 사용하도록 되어있다.

문제는, Kuberouter로 설정하는 경우에는 Calico를 찾을 수 없다면서 오류가 발생하는 프로그램들이 있다는 것이고, 이 때문에 Kuberouter 대신 Calico를 쓰기 위해서는 파일을 조금 수정해줘야한다.

 

k0s 구버전에서 사용하던 Config 파일은 다음 링크와 같다. https://docs.k0sproject.io/v1.20.6+k0s.0/configuration/

해당 링크에서 spec.network.calico 아래 항목을 참고하여 /etc/k0s/k0s.yaml 내의 spec.network.calico를 변경해주고 spec.network.kuberouter는 null로 변경하고 spec.network.provider 항목을 calico로 변경해주도록 한다.

 

그 외에 필요에 따라 추가로 spec.externalAddress를 항목을 추가해주도록 한다.

 

그 다음엔 아래 명령어를 통하여 k0s 클러스터를 생성한다.

# 오직 마스터 노드가 컨트롤 플레인 역할만 할 때
k0s install controller -c /etc/k0s/k0s.yaml

# 마스터 노드가 워커 노드 역할도 겸직해야할 때
k0s install controller -c /etc/k0s/k0s.yaml --enable-worker

# 단일 노드 환경 구축 시
k0s install controller -c /etc/k0s/k0s.yaml --single-node

# 공통: k0s 클러스터 시작
k0s start

 

정상적으로 클러스터가 생성되었는지는 아래 명령어를 통하여 체크가 가능하다.

# k0s 클러스터 상태 확인
k0s status

# k0s 참여 노드 확인 (--enable-worker / --single-node가 아니라면 마스터 노드는 나타나지 않는다.)
k0s kubectl get nodes

 

만약 단일 노드 환경이 아니라서 워커 노드를 추가해야한다면 아래 명령어를 통하여 토큰 키를 생성한다.

k0s token create --role=worker

 

또한, Kube Config를 만들기 위해서는 아래 명령어를 사용한다. (이젠 root 권한이 아니어도 상관 없다.)

# Kube Config 파일 확인
sudo cat /var/lib/k0s/pki/admin.conf

# 만약 해당 Config를 사용해 k0s 없이 kubectl로만 사용하고 싶은 경우
mkdir ~/.kube
sudo cat /var/lib/k0s/pki/admin.conf >> ~/.kube/config

 

만약 해당 Config를 사용하여 다른 IP의 컴퓨터에서 kubectl 명령어를 사용하고 싶다면 clusters.cluster.server의 주소를 변경해야할 것이다.

 

k0s 클러스터 워커 설정

 

앞서 생성한 클러스터 토큰 키를 워커 노드의 아무 곳에나 token-file의 이름으로 저장해놓도록 하자. 

# 루트 권한으로 전환
su

# k0s 클러스터 설치 및 실행
k0s install worker --token-file ./token-file
k0s start

 

이제 클러스터 노드 참여 노드 목록을 보고 있으면 하나씩 추가가 될 것이다.

 

만약 Nvidia GPU를 사용해야하는 경우라면 이 단계 직후 다른 것을 설치하기 전에 미리 시리즈 4번 글로 넘어가서 세팅을 해주는 것을 추천한다.

 

OpenLens란? 

 

Lens 공식 문서: https://k8slens.dev

 

Lens | The Kubernetes IDE

Lens IDE for Kubernetes. The only system you’ll ever need to take control of your Kubernetes clusters. It's open source and free. Download it today!

k8slens.dev

OpenLens 공식 문서: https://github.com/MuhammedKalkan/OpenLens

 

GitHub - MuhammedKalkan/OpenLens: OpenLens Binary Build Repository

OpenLens Binary Build Repository. Contribute to MuhammedKalkan/OpenLens development by creating an account on GitHub.

github.com

 

우선은 Lens라는 프로그램에 관하여 먼저 설명해야하는데, Lens는 Docker를 인수하고 k0s를 개발한 회사인 Mirantis에서 마찬가지로 인수한 GUI 기반의 k8s 관리 툴이다. 

 

경쟁 툴로는 k9s, KDash, Rancher Dashboard 등이 있는데, 앞의 두 가지는 Terminal 기반으로 동작하며 후자의 것은 클러스터 내에 설치하여 Web 기반으로 동작하는 만큼 좀 더 오버헤드가 있다는 것이 특징이다. 개인적으로는 가독성은 Rancher Dashboard가 제일 맘에 들었으나 조금이라도 오버헤드를 줄이기 위해 피하게 되었고 k9s나 KDash보다는 GUI 기반의 툴이 터미널 외에 추가로 띄워두고 작업하기 편하다고 생각이 들어 Lens를 선택하게 되었다.

 

다만, Lens의 문제는 Mirantis에 인수되면서 유료화가 되었다는 것인데, 이 때문에 Lens의 기능을 몇가지 제거하여 오픈 소스로 제공하는 OpenLens를 대체로 선택하게 되었다.

 

제거된 기능은  Node Shell, Pod Shell, Pod Log 등의 버튼과 자동으로 Monitoring 시스템을 구축해주는 것이다. 하지만, Node Shell, Pod Shell, Pod Log 등은 여전히 확장을 추가하면 사용할 수 있으며 Monitoring 문제 역시 따로 Prometheus를 설치해주고 연결하면 그만이기에 크게 걸리적 거리는 문제는 아니라 할 수 있다.

 

OpenLens 설치법

 

Mac의 경우에는 brew가 미리 설치되어 있어야한다. 

Brew가 준비 안 된 사람이라면 다음 링크를 참고하여 설치해두도록 하자. (https://brew.sh)

brew install --cask openlens

 

Window의 경우에는 공식 문서에서는 Scoop, Winget, Chocolatey를 사용하는 방법이 소개 되어있다.

개인적으로는 Chocolatey를 사용하는 것을 권장한다.

설치 방법은 다음 링크를 참고하도록 하자. (https://docs.chocolatey.org/en-us/choco/setup)

choco install -y openlens

 

혹은 CLI를 통해 설치하는 대신에 이미 빌드된 설치파일을 갖고 시작하고 싶다면 아래 링크에서 본인에게 맞는 설치 파일을 가져오도록 하자.

https://github.com/MuhammedKalkan/OpenLens/releases

 

Releases · MuhammedKalkan/OpenLens

OpenLens Binary Build Repository. Contribute to MuhammedKalkan/OpenLens development by creating an account on GitHub.

github.com

 

OpenLens 기초 사용법

 

우선은, OpenLens를 실행하면 다음과 같은 화면이 보일 것이다.

 

 

맥의 경우에는 바로 아래에 + 버튼이 보이지만 윈도우는 + 버튼이 안 보였던 것으로 기억한다.

+ 버튼이 있다면 왼쪽 이미지처럼 마우스를 +위에 올린 다음 Add from kubeconfig 버튼을 선택하고, 없다면 File 메뉴 - Add Cluster를 선택하도록 하자.

 

 

그러면 상단과 같이 Kubeconfig를 입력 가능한 창이 나타날텐데, 앞서 k0s 클러스터를 구축하며 얻은 Config값을 여기 넣어주도록 하자.

단, 조심해야할 것은 clusters.cluster.server의 주소값을 연결하고자 하는 환경에 맞게 변경해놔야 한다는 점이다.

 

 

연결이 완료되면 위와 같이 클러스터 로그도 확인 가능하고 노드 정보, Pod 정보 등 다양한 정보 확인이 가능한 창이 나타날 것이다.

물론, 초기 세팅을 이 블로그를 따라 해왔다면 아직은 위의 스샷과 같이 아름다운 그래프가 나타나지는 않을 것이다.

필요한 확장 프로그램 설치 및 노드 정보 확인을 위한 Prometheus 설치 등은 다음 글에서 같이 확인하도록 하자.

 

Comments