Cloud-뜬구름잡기

라즈베리파이4에 Kubernetes 설치

무한열정 2022. 3. 15. 11:05

@ 라즈베리파이 OS에 Kubernetes 설치 - 버전

- OS : Raspberry Pi OS Lite 64bit

- Raspberry : Raspberry4 8G ram

- Kubernetes : 1.23 , 1,22 , 1,21 3가지 버전 설치 시도

@ 라즈베리파이 OS에 Kubernetes 설치 - 결과

설치 실패 - 다음과 같은 오류가 발생한다.

* 누군가 동일한 조건에서 삽질하기 않기를 바라는 마음으로 공유합니다.

 

@ Ubuntu 20.04 LTS 라즈베리파이 버전 설치

https://ubuntu.com/download/raspberry-pi

 

Install Ubuntu on a Raspberry Pi | Ubuntu

Ubuntu is an open-source operating system for cross platform development, there's no better place to get started than with Ubuntu on a Raspberry Pi.

ubuntu.com

64bit 버전을 다운로드 하여 설치 되어야 메모리 3.25기가 이상 지원이 가능하다.

Kubernetes 설치하여

몇개의 POD를 설치하였다.

하나는 DB가 필요한 서비스라 정상적인 POD가 만들어 지지 않아

READY 0/1에서 재시도만 계속 하고 있다.

kube-system 네임스페이스에서

시스템용 POD가 제대로 동작하고 있다.

top 명령으로 확인결과 몇개 올리지 않았는데 3기가 정도 밖에 여유가 없다.

디스크 사용현황을 확인했다.

PVC 사용때문인지 다음 디렉토리가 주욱~ 확인이 된다.

/var/snap/microk8s/common/run/~~~~

 

* 결론

라즈베리파이4에서 라즈베리파이 OS에서 Kubernetes가 정상적으로 설치가 되었으나

기능이 정상적으로 동작하지 않아 실패했다.

라즈베리파이용 Ubuntu 20.04 LTS 64bit에서는 Kubernetes가 정상적으로 설치가 되었으며

기능이 정상적으로 동작하여 성공했다. 다만, Dashboard는 동작하지 않았다.

 


 

@ 라즈베리파이 microk8s 설치 명령어 공유

* snap 설치
sudo apt update
sudo apt install snapd

sudo reboot

sudo snap install core

* microk8s 버전 목록
snap info microk8s

* microk8s 설치
sudo snap install microk8s --classic --channel=1.22/stable
sudo snap install microk8s --classic --channel=1.23/stable
#sudo snap install microk8s --classic
microk8s (1.23/stable) v1.23.3 from Canonical✓ installed
=> ubuntu microk8s 공식문서 URL
https://ubuntu.com/tutorials/install-a-local-kubernetes-with-microk8s#2-deploying-microk8s


* kubulet 이 동작하도록 c-groups 활성화
$ sudo vi /boot/firmware/cmdline.txt
# 아래 옵션 추가
cgroup_enable=memory cgroup_memory=1
$ sudo reboot

* 권한 설정
sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
newgrp microk8s

* 참고 명령어
su - $USER
microk8s status --wait-ready
microk8s enable dashboard dns registry istio
microk8s kubectl get all --all-namespaces
microk8s dashboard-proxy

* iptables 설치
sudo apt install iptables-persistent

* 방화벽 설정
sudo iptables -P FORWARD ACCEPT
=> 안하면 kubectl get svc 등에서 오류 발생
위 설정은 바로 적용되며 우분투를 재시작해도 유지되게 하려면 /etc/sysctl.conf 파일에서 net.ipv4.ip_forward=1 를 주석 해제한다.

* 서비스 구동
sudo microk8s.start

* 상태 확인
sudo microk8s.status
sudo microk8s.inspect


* dns 필수 애드온 활성화
sudo microk8s.enable dns

* Ingress 활성화
microk8s enable ingress

* RBAC 활성화
microk8s enable rbac

* storage 활성화
microk8s enable storage
=> storageClassName: microk8s-hostpath 지정해야함

* metrics-server 활성화
microk8s enable metrics-server

* kubectl 별칭 지정
sudo snap alias microk8s.kubectl kubectl

* .kube/config 생성
sudo microk8s kubectl config view --raw > $kube/config
sudo chmod 666 ~/.kube/config

* dashboard 활성화 (라즈베리파이4에서 동작 하지 않음)
sudo microk8s.enable dashboard

* Dashboard 서비스의 클러스터 IP를 확인
microk8s.kubectl get svc/kubernetes-dashboard -n kube-system


-------------------------------------------------------

* 재시작
sudo snap restart microk8s

* k8S 리소스 전체 삭제
kubectl delete all --all

* k8S 제거
sudo snap remove microk8s

-------------------------------------------------------

@ docker 설치
sudo snap install docker

* docker 설치 후 /var/run/docker.sock의 permission denied 발생하는 경우
sudo chmod 666 /var/run/docker.sock
또는
sudo chown root:docker /var/run/docker.sock
sudo usermod -a -G docker $USER

-------------------------------------------------------
* Git 설치
sudo apt update
sudo apt install git

-----------------------------------
다른 환경에서 방법
1. docker group이 없는 경우 생성(선택)
$ sudo groupadd docker
2. docker group에 해당 유저를 추가
$ sudo usermod -aG docker $USER
3. 다음 명령 실행해야 바로 적용 가능
newgrp docker


* Docker 빌드시 Internal Error (assembler_aarch64.hpp:1156), pid=1, tid=0x0000ffff80c57aa0 에러발생시
다음 도커 이미지 대체
FROM openjdk:8-jre-alpine
===>>>
FROM adoptopenjdk:8-jre-hotspot