본문 바로가기
카테고리 없음

RaspberryPi5 클러스터 만들기 - K3S 설치

by redcubes 2024. 6. 8.

 

아주 긴 시간의 시행착오 끝에 쿠버네티스 설치에 성공했다.

처음부터 라즈베리파이 공식 홈페이지랑 외국 블로그 글을 참고할 것을...

우리나라 구버전 설명 보고 한 번 꼬이고 두 번 꼬이고 한 달이 날아갔다.
(특히 챗 gpt의 조언을 주의해야 한다 ㅋㅋㅋ)

K8S와 ansible을 깔려다가 실패하고 한 달쯤 고생하다가 이미지를 시원하게 밀어버리고 k3s를 깔았다.

공식 사이트의 글 중 설치 방법을 번역하고 일부 추가해서 올려두면 다음 번에 도움이 될 것 같아서 글로 남긴다.

https://everythingdevops.dev/step-by-step-guide-creating-a-kubernetes-cluster-on-raspberry-pi-5-with-k3s/

 

Step-by-Step Guide: Creating a Kubernetes Cluster on Raspberry Pi 5 with K3s

In this article, I will guide you through the process of creating your own Kubernetes cluster on Raspberry Pi 5 using K3s. We'll start from scratch, covering everything from setting up the hardware to fine-tuning the cluster configuration. No matter if you

everythingdevops.dev

 

단계별 가이드: Raspberry Pi 5에 K3s를 사용하여 Kubernetes 클러스터 생성하기

작성자: Chinaza Otumba
작성일: 2024년 4월 13일

목차

  1. K3s를 선택한 이유
  2. 요구 사항
  3. Raspberry Pi 노드 준비하기
  4. Raspberry Pi Imager 사용 단계별 가이드
  5. Raspberry Pi 5 보드에 연결하기
  6. Raspberry Pi 5에 Kubernetes 설치하기
  7. 결론

최근에 두 개의 새로운 Raspberry Pi 5 보드를 구입했고, 이 소형 컴퓨터들의 성능을 테스트하기 위해 Kubernetes 클러스터를 설정해 보기로 했습니다.

이 글에서는 K3s를 사용하여 Raspberry Pi 5에 Kubernetes 클러스터를 만드는 과정을 안내합니다. 하드웨어 설정부터 클러스터 구성까지 처음부터 끝까지 다룹니다. Raspberry Pi나 Kubernetes에 대해 잘 모르더라도 이 프로젝트를 완료할 수 있습니다!

K3s를 선택한 이유

시작하기 전에 왜 Kubernetes 클러스터에 K3s를 사용하는지 설명하겠습니다. K3s는 IoT 기기 및 엣지 컴퓨팅 같은 자원 제한 환경을 위해 설계된 경량 Kubernetes 배포판입니다. ARM 아키텍처에 최적화되어 있어 Raspberry Pi에 적합하며, 간편한 설치 과정과 낮은 자원 요구사항, IoT 하드웨어와의 원활한 통합을 제공합니다.

K3s는 Kubernetes 클러스터에 매우 적합하지만, Kubeadm과 같은 다른 대안도 있습니다. Kubeadm은 전통적인 x86 아키텍처 배포에 적합한 Kubernetes 클러스터 부트스트래핑 도구로 널리 사용됩니다. 그러나 더 높은 자원 요구사항과 복잡성 때문에 Raspberry Pi와 같은 자원 제한 환경에는 적합하지 않을 수 있습니다.

이걸 몰라서 K8S에 Kubeadm에 뭐든 다 깔려고 하다가....엉망이 되었다.
그런데 다 하고 나니 왠지 퓨어한 상태에서 하면 K8S깔릴 것 같기도....
기초적인 준비 과정은 생략한다. 궁금하면 원문을 참조하자.

Raspberry Pi 5에 Kubernetes 설치하기

K3s 설치 전에 Raspberry Pi에서 cgroup을 활성화해야 합니다. 표준 Raspberry Pi OS 설치에서는 cgroup이 활성화되어 있지 않습니다. K3s는 systemd 서비스를 시작하기 위해 cgroup이 필요합니다.

다음 명령을 통해 cgroup을 활성화합니다.

cgroup_memory=1 cgroup_enable=memory

이를 /boot/firmware/cmdline.txt 파일에 추가합니다.

sudo nano /boot/firmware/cmdline.txt
vi가 불편해서 저는 나노를 씁니다...(쪼랩) 여기서 주의사항. 리부트가 필요하다. 명령줄에서 실행시켜도 소용없다.
k8s설치 과정에서 이 부분이 안 되어서 (설정이 꼬인 듯) 엄청나게 고생을 했는데 왠지 다시 하면 될 것 같기도 하고...
엄청나게 애를 먹는 바람에 cgroup이 뭔지 공부가 되었다.
sudo reboot

마스터 노드에 Kubernetes를 설치하려면 다음 설치 명령을 실행합니다.

sudo curl -sfL https://get.k3s.io | sh -

설치 과정은 몇 분이 걸릴 수 있습니다. 완료될 때까지 기다립니다.

K3s 상태 확인

설치가 완료되면 다음 명령을 실행하여 K3s 서비스 상태를 확인할 수 있습니다.

sudo systemctl status k3s

이 명령은 k3s 서비스가 활성화되어 실행 중인지 표시합니다.

kubectl 접근

기본적으로 K3s는 Raspberry Pi에 Kubernetes 명령줄 도구인 kubectl을 설치합니다. kubectl에 접근하려면 다음 명령을 실행합니다.

sudo kubectl

이 명령은 kubectl 사용 지침을 표시합니다.

K3s 클러스터 접근

이제 K3s 클러스터와 상호작용할 수 있습니다. 클러스터 노드, 포드, 배포 등에 대한 정보를 얻으려면 kubectl 명령을 사용할 수 있습니다. 예를 들어:

sudo kubectl get nodes

이 명령은 Kubernetes 클러스터의 노드를 표시합니다.

워커 노드 추가

마스터 노드에 K3s 에이전트를 설치한 후 Kubernetes 클러스터에 워커 노드를 추가할 차례입니다. 워커 노드는 작업을 분산하고 애플리케이션을

확장하는 데 필수적입니다.

워커 노드를 클러스터에 추가하려면 다음 단계를 따르십시오:

  1. 워커 노드로 사용할 Raspberry Pi가 K3s 마스터 노드와 동일한 네트워크에 연결되어 있는지 확인합니다.
  2. 워커 노드에서 제공된 스크립트를 실행하고 마스터 노드의 IP 주소와 설정 중 생성된 토큰을 지정합니다.
sudo curl -sfL https://get.k3s.io | K3S_URL=https://<master_node_ip>:6443 K3S_TOKEN=<your_token> sh -

<master_node_ip>를 마스터 노드의 IP 주소로, <your_token>을 설정 중 생성된 토큰으로 대체합니다.

여기서 괄호<>까지 모두 지우고 대체해 주어야 한다.
토큰의 위치가 나와 있지 않은데, 다음 명령어로 /var/lib/rancher/k3s/server/node-token 파일을 열어보면 들어있다. 아주아주 긴데 파일에 들어있는 것 전체가 토큰이다.
sudo nano /var/lib/rancher/k3s/server/node-token

예시:

sudo curl -sfL https://get.k3s.io | K3S_URL=https://192.168.1.101:6443 K3S_TOKEN=K10b56aa01b599ff2f9a421f65a5a5dc188e76c82105470d58e8884b0e84c1273b7::server:8632d1f69d1dfce061fb59e8fb966993 sh -

설치 과정이 완료될 때까지 기다립니다. 워커 노드는 마스터 노드에서 관리하는 Kubernetes 클러스터에 자동으로 참여합니다.

워커 노드가 클러스터에 성공적으로 추가되었는지 확인하려면 마스터 노드에서 다음 명령을 실행할 수 있습니다.

sudo kubectl get nodes

이 명령은 Kubernetes 클러스터의 모든 노드를 표시합니다. 목록에 워커 노드가 나타나면 클러스터에 성공적으로 추가된 것입니다.

결론

이 단계별 가이드는 K3s를 사용하여 Raspberry Pi 장치에서 Kubernetes 클러스터를 설정하는 데 필요한 지식과 도구를 제공합니다. 하드웨어 요구 사항에서 시작하여 Raspberry Pi 노드 준비, 정적 IP 구성, K3s 설치 및 워커 노드를 클러스터에 추가하는 전 과정을 다루었습니다.

이 지침을 따르면 Raspberry Pi에서 컨테이너화된 애플리케이션을 배포하고 관리할 수 있는 Kubernetes 환경을 성공적으로 구축할 수 있습니다. Raspberry Pi에서 Kubernetes에 대해 더 알고 싶다면 다음 자료를 확인하십시오:

  • K3s를 사용한 확장 가능한 웹 기반 WordPress 배포를 위한 프로토타입 Kubernetes 기반 클러스터 구현
  • 4개의 Raspberry Pi 노드로 구성된 Kubernetes 클러스터 구축

 

이제 이걸로 뭘 할 수 있는지 공부해 봐야겠다.
사실 분산처리 해보려고 한 건데 공부가 많이 필요하다.

여담으로 SSH는 이게 제일 편했다. putty Termius 모바엑스텀 셋 밖에 안 써봤지만;;

 

앞으로 프로젝트를 위해 참고한 글과 GPT답변들

https://www.44bits.io/ko/post/why-should-i-use-docker-container

 

왜 굳이 도커(컨테이너)를 써야 하나요? - 컨테이너를 사용해야 하는 이유

컨테이너는 서버 애플리케이션을 배포하고 서버를 운영하는 표준적인 기술이 되어가고 있습니다. 하지만 처음 사용해본다면 그 장점이 잘 와닿지 않을 수도 있습니다. 왜 굳이 도커 컨테이너를

www.44bits.io

 

https://www.linode.com/ko/blog/kubernetes/lightweight-kubernetes-evaluating-k8s-vs-k3s/

 

경량 쿠버네티스: 프로젝트에 대한 K8과 K3 평가하기

Kubernetes를 고려하고 있지만 복잡성이 걱정된다면 K3s라는 경량 컨테이너 오케스트레이션 솔루션이 있습니다.

www.linode.com