-
라즈베리파이를 이용한 멀티 노드 클러스터링 (4) - Spring BootDevOps, 클라우드/Container 2022. 4. 6. 23:07
기존에 짜던 스프링부트 API 서버를 k3s 클러스터를 통해 배포해보려고 한다.
스프링부트에 대한 정리는 추후 여유가 있다면 한번 해보겠다.
# safe-dp.yaml apiVersion: apps/v1 kind: Deployment metadata: name: safeapi-dp spec: selector: matchLabels: app: safe-api template: metadata: labels: app: safe-api spec: containers: - name: safeapi-dp image: floodnut/apiserver-dp-arm64:latest imagePullPolicy: Always resources: limits: memory: "2Gi" cpu: "2" ports: - containerPort: 8080
라즈베리파이는 ARM 프로세서를 가지는 환경이다. 위와 같이 safeapi-dp 앱에 대한 yaml 파일을 작성한다.
여기서 가져올 이미지가 중요하다.
나는 M1 맥을 사용 중이라 이미지를 맥에서 빌드했다.
하지만 일반적인 리눅스 환경에서 빌드한다면 x86 아키텍처로 인해 파드가 에러를 만날 것이다.
kubectl create -f safe-dp.yaml kubectl get logs <podname> standard_init_linux.go:228: exec user process caused: exec format error
따라서 arm64로 빌드한 이미지로 당겨와야 한다.
나는 공유기 환경에서 80포트를 8080포트로 포워딩한 상태로 아래와 같이 로드밸런서를 추가했다.
로드밸런서는 자동으로 외부에 노출되는 IP를 잡아주는데 이 IP가 호스트의 사설 IP가 된다.
kubectl expose deployment safeapi-dp --type=LoadBalancer --name=loadbalance-svc
정리하자면 기존에 개발 중인 서버를 arm64로 빌드하고 해당 이미지를 가져와서 로드밸런서를 통해 외부에 노출시켜주었다.
지속적으로 환경을 개선해보겠지만 확실히 단순하게 도커를 사용하는 것 보다는 귀찮은 작업이 몇몇 더 있는 것 같다.
하지만 잘 구축된 서버와 배포 환경이라면 득이 될 것 같다.
'DevOps, 클라우드 > Container' 카테고리의 다른 글
[HomeLab] Tailscale 을 쿠버네티스에 배포하기 (0) 2024.07.05 [HomeLab] Calico와 Tailscale 충돌 문제 (0) 2024.06.22 라즈베리파이를 이용한 멀티 노드 클러스터링 (3) - MySQL (0) 2022.04.05 라즈베리파이를 이용한 멀티 노드 클러스터링 (2) - 쿠버네티스 명령어 (2) 2021.08.15 라즈베리파이를 이용한 멀티 노드 클러스터링 (1) - 설치 (1) 2021.07.23