AWS ECR에 등록한 Docker 이미지를 가지고 deployment 생성할 때 아래처럼 unchanged라고 나올 때

describe, logs를 통해 메시지를 확인해야 합니다.

ECR_HOST=[1.dkr.ecr.ap-northeast-2.amazonaws.com](<http://144579678262.dkr.ecr.ap-northeast-2.amazonaws.com/>)  envsubst < 22_deployment_backend-app_k8s.yaml.template | kubectl apply -f -
deployment.apps/backend-app unchanged

$ kubectl get all

NAME                               READY   STATUS             RESTARTS   AGE
pod/backend-app-86b45b9856-5p7bq   0/1     CrashLoopBackOff   9          22m
pod/backend-app-86b45b9856-c688p   0/1     CrashLoopBackOff   9          22m

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   17h

NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/backend-app   0/2     2            0           22m

NAME                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/backend-app-86b45b9856   2         2         0       22m

생성 후 바로 CrashLoopBackOff 상태로 된 것을 알 수 있습니다.

$ kubectl logs pod/backend-app-86b45b9856-5p7bq

standard_init_linux.go:228: exec user process caused: exec format error

다음과 같은 에러 원인은 먼저 Mac M1에서 일부 이미지를 지원하지 않기 때문에 발생합니다.

$ docker build -t nginx-app .

따라서 위와 같이 dockerfile을 build할 때 다른 아키텍처에서 build된 이미지로 인식하기 때문에 에러가 발생합니다.

해결하기 위해서는 platform 옵션을 사용해서 아키텍처를 지정해주면 해결할 수 있습니다.

$ docker build --platform=linux/amd64 -t k8sbook/backend-app:1.0.0 --build-arg \ JAR_FILE=build/libs/backend-app-1.0.0.jar .

[+] Building 49.6s (10/10) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                                                                                                                             0.0s
 => => transferring dockerfile: 37B                                                                                                                                                                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                                                                                                                                                                0.0s
 => => transferring context: 2B                                                                                                                                                                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/amazoncorretto:11                                                                                                                                                                                                             2.8s
 => [auth] library/amazoncorretto:pull token for registry-1.docker.io                                                                                                                                                                                                            0.0s
 => [internal] load build context                                                                                                                                                                                                                                                2.2s
 => => transferring context: 37.97MB                                                                                                                                                                                                                                             2.2s
 => [1/4] FROM docker.io/library/amazoncorretto:11@sha256:664e69a27c1b21f00                                                                                                                                                       7.3s
 => => resolve docker.io/library/amazoncorretto:11@sha256:6645c                                                                                                                                                      0.0s
 => => sha256:d4712239075c3356be0c1002 147.43MB / 147.43MB                                                                                                                                                                               4.1s
 => => sha256:6645c88569a27c1b21f00 547B / 547B                                                                                                                                                                                       0.0s
 => => sha256:5c27cdc8ae4a850472232 742B / 742B                                                                                                                                                                                       0.0s
 => => sha256:7edd28d80dae50751af62c3 3.07kB / 3.07kB                                                                                                                                                                                   0.0s
 => => sha256:0d13dde7e7e47dc71d447e 62.29MB / 62.29MB                                                                                                                                                                                 2.1s
 => => extracting sha256:3dde7e7e47dc71d447e                                                                                                                                                                                        2.5s
 => => extracting sha256:5c3356be0c1002                                                                                                                                                                                        2.5s
 => [2/4] RUN yum install -y glibc-langpack-ko                                                                                                                                                                                                                                  38.4s
 => [3/4] RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime                                                                                                                                                                                                               0.3s
 => [4/4] COPY build/libs/backend-app-1.0.0.jar app.jar                                                                                                                                                                                                                          0.1s
 => exporting to image                                                                                                                                                                                                                                                           0.6s
 => => exporting layers                                                                                                                                                                                                                                                          0.6s
 => => writing image sha256:4978c61d35f8345                                                                                                                                                                                     0.0s
 => => naming to docker.io/k8sbook/backend-app:1.0.0