배경 및 이슈
Logstash에 대한 도커 이미지를 빌드한 뒤, 쿠버네티스를 통해 deploy하려고 하였다.
이미지 빌드/푸시 시 에러가 뜨지 않았기 때문에 문제가 없을 것이라고 생각했는데,
pod 가 제대로 실행되지 않아 로그를 살펴보니 아래와 같은 에러가 발생했다.
standard_init_linux.go:228: exec user process caused: exec format error
원인
구글링 결과 이 원인은 매우 간단했다.
바로 m1 의 docker build image 기본 설정이 arm64이기 때문에, 포맷이 맞지 않아 발생한 것.
실제로 내가 빌드했던 이미지의 아키텍처 설정이 arm64인지 확인하기 위해서는 docker inspect 로 알 수 있다.
docker inspect <docker_image>
그 결과는 아래와 같다.
"Architecture": "arm64",
"Os": "linux",
해결 방법
따라서 이 문제는 docker image를 빌드할 시, --platform=linux/amd64 옵션을 주어 간단히 해결할 수 있다.
docker build --platform=linux/amd64 <기타 옵션>
이렇게 이미지를 re-build/push 후, 다시 deployment 를 apply 하면 제대로 실행된다.
'데이터 공부 > Kubernetes' 카테고리의 다른 글
Datahub - K8S Replica Set 설정 (0) | 2023.11.08 |
---|---|
쿠버네티스 서비스 (0) | 2022.07.26 |
ECK error 원인 및 해결 방법 - elasticsearch status 가 unknown, kibana status 가 red & pod running 0/1 일 경우 (0) | 2022.06.13 |
쿠버네티스 - 디플로이먼트의 배포 방식 :: 롤링 업데이트 (0) | 2022.03.26 |
쿠버네티스란? 주요 개념 익혀보기 - 레플리카셋, 디플로이먼트, 서비스 (1) | 2022.03.25 |