본문 바로가기

Raspberry PI & Jetson nano

라즈베리파이에 k3s 설치 하기 - 실패기

라즈베리파이에 k3s 설치 하기 - 실패기

이 포스팅은 실패를 적은 것입니다.

1. 라즈베리파이에 OS 설치하기

그림과 같이 Raspberry Pi OS 다운로드페이지에서 Raspberry Pi OS Lite 버젼을 받습니다.

다른 버젼을 사용해도 되지만, 서버용으로 GUI 없이 사용하기 위해서는 Lite 버젼이면 충분합니다.

그리고 SD 카드에 해당 이미지를 구워줍니다.

그리고 부팅을 하고 몇가지 설정을 합니다.

대부분의 설정은 부팅 후 raspi-config 명령어를 이용하면 쉽게 할 수 있습니다.

  • 인터넷 연결(WIFI)
  • GPU Memory 64M => 16M
  • hostname 변경(main, worker1, worker2 등)
  • SSH 활성화
  • iptables 사용하도록 설정(k3s는 네트워킹 기능은 내부적으로 iptables 를 사용합니다)
sudo iptables -F
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo reboot
  • IP 고정
vi /etc/dhcpcd.conf

# 본인 환경에 맞게 수정
interface wlan0
static ip_address=192.168.0.30
static routers=192.168.0.1
static domain_name_servers=8.8.8.8 1.1.1.1
  • ulimit 설정
vi /etc/security/limits.conf

*       -       nofile  32768
*       -       nproc   65536
  • 새로운 계정 생성 & pi 계정 삭제
# root 로 로그인
sudo -i

# lahuman 계정 생성
adduser lahuman
# lahuman 계정에 sudo 권한 부여
adduser lahuman sudo

# 재부팅 후 lahuman 계정으로 로그인하고 pi 계정을 삭제 합니다.
deluser pi

여기까지 진행했다면, 라즈베리파이의 설정은 완료 되었습니다.

k3s 설치

mian node 설치

Standard Raspbian Buster installations do not start with cgroups enabled.

Raspbian Buster(Lite 포함)은 cgroups 가 활성화 되어 있지 않아서 다음 설정을 해야 합니다.

/boot/cmdline.txt 에 다음을 추가 합니다.

vi /boot/cmdline.txt

# 기존 값이 console=serial0,115200 console=tty1 root=PARTUUID=afe9a4ef-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait  입니다. 
# cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory 을 뒤에 추가 하면 됩니다.

console=serial0,115200 console=tty1 root=PARTUUID=afe9a4ef-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory

이제 main node에 k3s를 스크립트를 이용해서 설치 합니다.

# 홈페이지에는 sudo 옵션이 없지만, 해당 옵션이 없으면 설치가 안됩니다.
curl -sfL https://get.k3s.io | sudo sh -

설치가 완료되었다면, node를 다음 명령어로 확인해 볼 수 있습니다

sudo kubectl get nodes

worker node 설치

먼저, main node의 k3s설치 스크립트 실행 전까지와 동일한 작업을 진행합니다.
그리고 설치 main node의 토큰 값을 준비합니다.

# main 노드에서 실행
sudo cat /var/lib/rancher/k3s/server/node-token
K10098666be0809d3fe6d02354bd433fb84b67dcb747c73efacc4c2ca12cac38961::server:1f4bfcbf8cf3985a4554a706c9ad704f

worker node에 k3s 설치를 진행합니다.

curl -sfL http://get.k3s.io | K3S_URL=https://192.168.0.30:6443 K3S_TOKEN=K10098666be0809d3fe6d02354bd433fb84b67dcb747c73efacc4c2ca12cac38961::server:1f4bfcbf8cf3985a4554a706c9ad704f  sudo sh -

k3s 삭제

삭제는 다음 명령어로 쉽게 삭제가 가능합니다.

# main node
sudo /usr/local/bin/k3s-uninstall.sh

# worker node
sudo /usr/local/bin/k3s-agent-uninstall.sh

k3s의 CPU 점유율이 장시간 동안 50% 이상을 넘기고 있을 경우 처리 방안

원인을 모르겠지만, 계속 켜놓을 경우 CPU의 점유율이 50%를 넘기면서 nodes 조회가 안되는 현상이 있었습니다.

검색을 통해서 알아보니, cpu 사용에 limit을 설정 할 수 있다고 하네요.

vi /etc/systemd/system/k3s.service

CPUQuota=30%
CPUQuotaPeriodSec=50ms
AllowedCPUs=0

하지만, 이렇게 설정해도 동일한 오류가 발생했습니다.

다른 이유로는 Fixing cgroup memory on Raspbian Buster for Kernel 5.4.x의 내용과 같이 커널 버그라고 합니다.

이를 해결하기 위해서는 커널을 업데이트 해야 하는데요.

/boot/cmdline.txt 내용으 다음과 같이 수정하고,

cat /boot/cmdline.txt
console=serial0,115200 console=tty1 root=PARTUUID=dd5ac5d2-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_enable=1 cgroup_memory=1 swapaccount=1 cgroup_enable=memory dwc_otg.lpm_enable=0

다음의 명령어로 커널을 업데이트 합니다

sudo PRUNE_MODULES=1 RPI_REBOOT=1 SKIP_WARNING=1 rpi-update

하지만... 아무리 해봐도 동일한 현상도 나오며, worker node를 추가 할 수 없었습니다. 대부분의 이야기에서는 ubuntu를 이용하라는 내용이 많이 있네요.

참고자료