【问题标题】:I wrote a k8s deployment yml sample, but it can not run我写了一个 k8s 部署 yml 示例,但它无法运行
【发布时间】:2021-07-24 22:58:17
【问题描述】:

我写了一个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

docker 构建文件是

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

【问题讨论】:

  • #1 FROM node:lts #2 ADD index.js /index.js #3 CMD node index.js
  • 只有3行,你能看出我做错了吗???

标签: kubernetes


【解决方案1】:

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 命令(参见the docs)能够构建多平台映像,因此可能值得研究。


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

【讨论】:

  • 啊,我想这是我使用 M1 Mac 的原因?,我会尝试你建议的方式,非常感谢。
猜你喜欢
  • 2020-01-10
  • 2015-11-21
  • 2021-02-10
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
相关资源
最近更新 更多