본문 바로가기
Backend MLOps/On-premise setting

[k8s] 라즈베리파이 클러스터링 -3

by SteadyForDeep 2023. 8. 29.
반응형

*주의 이 글은 시행착오 기록이므로 필요한 부분만 참고 바람

 

지난 글에서 라즈베리파이에 프로메테우스, 그라파나까지 올리는 작업을 진행했다.

2023.08.27 - [Backend MLOps/On-premise setting] - [클러스터링] 라즈베리파이 클러스터링 -1

 

[클러스터링] 라즈베리파이 클러스터링 -1

라즈베리파이를 4대 사왔다. 연결해서 클러스터링을 연습 해보려고 한다. 필요한 준비물은 아래와 같다. 1. 라즈베리파이 2대 이상 2. microSD card 같은 수량 3. microSD card 리더기 4. hdmi to mini hdmi 케이

davi06000.tistory.com

2023.08.28 - [Backend MLOps/On-premise setting] - [클러스터링] 라즈베리파이 클러스터링 -2

 

[클러스터링] 라즈베리파이 클러스터링 -2

2023.08.27 - [Backend MLOps/On-premise setting] - [클러스터링] 라즈베리파이 클러스터링 -1 [클러스터링] 라즈베리파이 클러스터링 -1 라즈베리파이를 4대 사왔다. 연결해서 클러스터링을 연습 해보려고 한

davi06000.tistory.com

그런데 문제가 발생한 것이 라즈베리파이가 한번 먹통이 되었다가 살아났다.

원인으로 지목될 수 있는 것은 두가지로 추정된다.

 

하나는 높은 확률의 메모리 문제로

그라파나 같은 경우도 2Gi 정도 프로메테우스도 그정도 먹는다고 보면

한대에 두가지를 모두 올리는 것은 불가능 하다.

따라서 이는 노드를 한대라도 더 늘리면 해결될 것으로 보인다.

 

다른 하나는 낮은 확률의 스토리지 문제로

지난 글에서 사용했던 HostPath 방식은

2023.08.24 - [Backend MLOps/On-premise setting] - [k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 3

 

[k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 3

이 글은 아래의 글들에 의존성을 가진다. 2023.08.17 - [Backend MLOps/On-premise setting] - [k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 1 2023.08.23 - [Backend MLOps/On-premise setting] - [k8s] kubeadm 을 이

davi06000.tistory.com

해당 PV가 존재하는 노드에서만 사용이 가능해 이번에는 지정해 주지 않았다.

그래서 수집한 데이터를 저장하는데 필요한 스토리지가 부족하게 파드가 설정되었을 가능성이 있다.

 

이를 해결하기 위해서 우선은 노드를 하나 추가해 보자.

 

이전 글을 따라 간다.

1. 도커 설치로 컨테이너 런타임 설치

2. k8s설치

3. 기타 설정 그리고 dns resolved, 재부팅

4. kubeadm join으로 클러스터에 조인

 

내친 김에 4개 다 연결해 주자.

 

노드를 늘리는 과정에서 아래와 같이

컨테이너가 계속해서 꺼지고 켜지는 것을 반복하는 현상이 발생했다.

그래서 CNI를 더 가볍게 flannel로 바꾸었는데도 문제가 해결되지 않았다.

아무래도 멀티아키텍쳐를 지원하는 이미지를 써야하거나 하는 문제처럼 보인다.

 

일반적으로 라즈베리파이를 이용해서 클러스터링을 할때는 라즈베리파이OS만으로 클러스터를 구성하는데

ARM 아키텍쳐의 SoC를 사용하기때문으로 보인다.

AMD를 어물쩡 끼워 넣으면 호환이 안되는 문제가 발생하나보다.

 

다음 글에서 마스터 노드를 라즈베리 파이로 바꿔서 진행해보도록 하겠다.

 

# 추가

flannel로 바꿨을 때 에러가 난 이유가 
pod-network-cidr 즉 파드간의 네트워킹 범위를 지정할때 CNI 플러그인을 잘 보고 맞춰줘야 한다고 한다.

flannel의 경우 10.244.0.0/16 로 알려져 있으며 이 범위를 지정해 주고 flannel을 사용하면 큰 문제가 없을 것으로 보인다.

반응형

댓글