kubernetes - 我写了一个 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
解决方案
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 映像。
推荐阅读
- kubernetes - 如何在多个存储库中使用 Helm 模板?
- firebase - Firebase 负面主题条件停止工作
- python - ModuleNotFoundError:没有名为“Quandl”的模块
- ruby-on-rails - ActiveRecord:在多语句查询中忽略第一个查询的结果
- swift - 在导航栏中使用 searchBar 时需要显示导航标题
- apache-spark - 舍入数据框中的所有列 - 两位小数
- c# - 如何在派生控制器中的 AuthorizeAttribute 之前执行父控制器中的 AuthorizeAttribute
- c++ - C ++无法构造扩展模板的类
- android - 如何在层列表 Android Studio 中更改可绘制项目
- swift - Swift Combine 和 SwiftUI 理解需要修正