error

[kubernetes]exec /opt/java/openjdk/bin/java: exec format error

YOOANT 2026. 3. 19. 16:23

エラー内容

ローカル環境でSpringサーバーをビルドしてAWS ECRに保存した。

当該イメージを使用してSpringサーバーをデプロイ中にエラーが発生したため、ログを確認したところ、以下の内容が確認された。

 

✅原因調査

自身のPCスペック

  • MacBook Pro
  • Intelチップ

EC2インスタンス

  • t4g.small
  1. Intelチップ搭載のPCでは、デフォルトでDockerイメージが AMD64 (x86_64) 用としてビルドされる。
  2. t4g.smallのようにインスタンスタイプの名前に「g」が含まれるモデルは、ARMベース(Graviton)である。
  3. そのため、ARMベースのインスタンスがAMD用としてビルドされたイメージを読み込むことができず、このエラーが発生したのである。

 

解決方法の整理

1.ローカル(Intelチップ搭載Mac)でのビルド時、EC2サーバーのチップセット(ARM)に合わせてビルドを実行する。

$ docker build --platform linux/arm64 -t kube-ecr .

2.ECRへARM用イメージを再プッシュする。

 

3.EC2インスタンスで再起動を試みたが、解決に至らず。

 

追加調査の結果

EC2インスタンスにはk3sである。k3sはDockerエンジンを使用しない。

そのため、docker image lsコマンドではイメージが照会されず、内蔵されている「containerd」という別エンジンを使用するため、sudo k3s crictl imagesというコマンドを使用する必要がある。 イメージを照会した結果、旧来の1.0バージョンのイメージが引き続き使用されていたため、エラーが解決しなかった。

 

この問題を解決する方法は以下の2点である。

  1. deployment.yamlに imagePullPolicy: Always を追加し、常にECRから最新のイメージを取得するように設定する。
  2. 1.0バージョンのイメージを削除した後、deployment.yamlを再作成する。

今回は2番の方法で進行し、Podが正常に動作することを確認した。

'error' 카테고리의 다른 글

[kubernetes]ImagePullBackOffエラー  (0) 2026.03.17
[Docker/kubernetes]Symbolic linkエラー  (0) 2026.03.16

日本語