카카오 클라우드 클러스터 예제 2

문성하·2023년 10월 5일
0

k8s

목록 보기
2/6
post-thumbnail

이전 예제에 이어 이미지 빌드 후 쿠버네티스 활용 예제를 보겠습니다.

컨테이너 레지스트리에 이미지 올리기

mkdir ~/k8se-handson
cd ~/k8se-handson
git clone https://github.com/kakaoenterprise/kic-library-monolithic

cd ~/k8se-handson/kic-library-monolithic
  • 공식문서
docker build --tag kic-library-monolithic:latest .

Docker Hub는 Container Regusry로 생성한 컨테이너 이미지를 올리고 관리할 수 있습니다.
생성한 이미지의 태그를 수정하고 Docker Hub에 push 합니다.
moonsh1998부분에 여러분의 docker 이름을 적어주시면 됩니다.

docker login #(dokcer desktop이 켜져있으면 비밀번호를 안쳐도 바로 로그인이 됩니다)
docker tag kic-library-monolithic:latest docker.io/moonsh1998/kic-library-monolithic

docker image ls
docker push docker.io/moonsh1998/kic-library-monolithic

쿠버네티스에 서비스 배포하기

Container Registry에 업로드한 이미지를 쿠버네티스에서 배포할 수 있습니다.

#기본예제
kubectl create deployment library-monolithic --image=docker.io/moonsh1998/kic-library-monolithic

kubectl expose deployment library-monolithic \
    --type=LoadBalancer --port=80 --target-port=8080

에러발생

  • 디버깅
    기본 예제에서 CrashLoopBackOff 에러가 발생해 전에 성공했던 pod로 환경을 바꾸어 보았습니다.
kubectl run library-monolithic --image=docker.io/moonsh1998/kic-library-monolithic 
  • 에러 원인 중 deployment 환경, 이미지 문제를 예상했었는데, pod로 실행해도 같은 에러가 나는 것을 보니 이미지 에러가 예상이 됩니다.

에러 확인

우선 어느 부분에서 에러가 발생했는지 로그부터 확인해보겠습니다.

  • exec format error

exec format error의 원인 중 하나로 m1칩을 사용중인 맥북 유저가 빌드한 이미지를 m1칩 환경에서 run하는 것은 문제가 되지 않지만
m1칩 환경에서 build한 이미지를 다른 플랫폼 ex)ubuntu 환경에서 run하는것에 문제가 생길 수도 있다는 에러 원인을 찾았습니다.

우선 ~/.docker/config.json의 중괄호 안에 "experimental": "enabled"``를 추가해줍니다.

vi ~/.docker/config.json

docker image ls
docker image rm moonsh1998/kic-library-monolithic 

이전에 제 이름을 넣은 이미지 태그를 삭제 후 이미지 빌드(태그)를 다시 해봅시다.

공식문서

docker build --tag kic-library-monolithic:latest .

바꿔야할 부분

docker buildx build --push --platform linux/amd64 -t kic-library-monothic .


docker image rm kic-library-monolithic:latest
docker buildx build --platform linux/amd64 --load kic-library-monolithic:latest

0개의 댓글