首页 > 解决方案 > 我写了一个 k8s 部署 yml 示例,但它无法运行

问题描述

我写了一个k8s部署yml示例,但是每次应用到集群都失败了,日志是这样的

standard_init_linux.go:228: exec 用户进程导致:exec 格式错误

yml文件如下,我是kubernetes新手,现在卡在这里,希望你能帮助我

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nub1
spec:
  selector:
    matchLabels:
      app: nub1
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: nub1
        tier: backend
    spec:
      containers:
        - name: nub1
          image: johnhaha/nub1:latest
          ports:
            - containerPort: 3001
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1

码头工人构建文件是

FROM node:lts
ADD index.js /index.js
CMD node index.js

标签: kubernetes

解决方案


exec format error意味着您尝试在编译它的平台以外的平台上运行二进制文件。查看您的图像,二进制文件似乎是为 ARM 平台构建的:

$ file bash
bash: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=29b2624b1e147904a979d91daebc60c27ac08dc6, stripped

您的 Kubernetes 环境可能是 x86_64 环境,无法运行您的 ARM 二进制文件。该docker buildx命令(请参阅文档)能够构建多平台图像,因此这可能值得研究。


您需要构建一个适合您将在其上运行它的平台的 Docker 映像。


推荐阅读