트러블슈팅

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 5

sowakemeup 2025. 8. 12. 16:58

문제:

커스텀 jnlp파일을 빌드하고 docker hub에 올리는 과정은 완료했는데, 생성된 이미지가 젠킨스에서 pull받고 build가 안되는 문제가 발생했습니다.

 

-참고사항-

Jenkins에서 ‘events’ 를 확인하려고 할때 oops하면서 젠킨스 아저씨 나올때 해결법

service-account.yaml 파일에 이벤트 조회 권한을 추가하면 된다.

추가해야될 내용:

- apiGroups: [""] resources: ["events"] verbs: ["get", "list", "watch"]

 

 

원인:

events로그를 확인해보면 마지막 줄에 문제의 원인이 나와있는걸 확인할 수 있었습니다.

Failed to pull image ... no match for platform in manifest: not found

이 메시지는 도커 이미지의 아키텍처(platform)와 쿠버네티스 노드의 아키텍처가 서로 맞지 않는다는 의미입니다

  1. 이미지 빌드 환경: 내 로컬 PC(Mac)는 arm64 아키텍처를 사용중이라 여기서 docker build를 실행하면 arm64 전용 이미지가 만들어집니다.
  2. 쿠버네티스 노드 환경: Jenkins 에이전트가 실행되려는 카카오클라우드의 워커 노드는 대부분 amd64(일반적인 Intel/AMD 서버) 아키텍처를 사용합니다.
  3. 불일치 발생: amd64 아키텍처의 노드가 arm64 전용으로 만들어진 이미지를 실행하려고 하니, "내게 맞는 버전이 이미지 안에 없다"며 다운로드를 거부하는 것입니다. (220V 콘센트를 110V 콘센트에 꽂으려는 것으로 비유 가능)

 

해결방안:

빌드 명령어를

docker build~~~ 대신 docker buildx build~~~ 사용하면 멀티 플랫폼 빌드가 가능해집니다.