总结除了在docker的build和push以及kubectl apply事件中没有错误之外,我的应用程序pods状态仍然是CrashLoopBackOff错误。(使用Apple M2芯片)
大家好,我和我的同事使用Dart/ Flutter构建了一个移动的应用程序。我们使用Docker/ Kubernetes来虚拟化和运行后端系统。然而,我们是初学者。
我的同事可以通过Docker和Kubernetes CLI进行容器化和创建资源,没有任何问题。然而,除了没有得到错误响应外,在我执行相同的步骤后,我们的Pod的状态仍然是CrashLoopBackOff错误。他使用的是Windows PC,而我使用的是Apple MacBook Air with M2 Chip。
最有可能的是我们在Docker阶段遇到了问题,因为我们试图在他的电脑上做Docker阶段,然后在我的电脑上做kubectl apply -f部分,没有出现任何问题。
- 我们的Docker文件 *
# Specify the Dart SDK base image version using dart:<version> (ex: dart:2.12)
FROM dart:3.0.7 AS build
# Resolve app dependencies.
WORKDIR /app
COPY . .
# COPY backend/pubspec.* ./
WORKDIR /app/backend
RUN dart pub get
# Copy app source code and AOT compile it.
# Ensure packages are still up-to-date if anything has changed
RUN dart pub get --offline
RUN mkdir -p /bin/server
RUN dart compile exe /app/backend/bin/backend.dart -o bin/server
# Build minimal serving image from AOT-compiled `/server` and required system
# libraries and configuration files stored in `/runtime/` from the build stage.
FROM scratch
COPY --from=build /runtime/ /
COPY --from=build /app/backend/bin/server /app/bin/
# Start server.
EXPOSE 7001
CMD ["/app/bin/server"]
字符串
- 我们的Kubernetes.yaml文件 *
apiVersion: apps/v1
kind: Deployment
metadata:
name: appName-deployment
labels:
app: appName
spec:
replicas: 3
selector:
matchLabels:
app: appName
template:
metadata:
labels:
app: appName
spec:
containers:
- name: appName
image: appName/backend:1.0.26
ports:
- containerPort: 7001
name: grpc
- containerPort: 7002
name: api
imagePullSecrets:
- name: regcred
---
apiVersion: v1
kind: Service
metadata:
name: appName-service
spec:
type: NodePort
selector:
app: appName
ports:
- protocol: TCP
name: grpc
port: 7001
targetPort: 7001
nodePort: 32000
- protocol: TCP
name: api
port: 7002
targetPort: 7002
nodePort: 32002
型
2条答案
按热度按时间qfe3c7zg1#
在使用
docker build
命令构建映像时,您必须使用--platform=linux/amd64
选项。您的Mac M2具有ARM处理器,而集群的节点(可能)使用AMD处理器。更多信息here .
nimxete22#
我已经成功地在我的MacBook M1 Pro上使用了
qemu
驱动程序和minikube
。安装minikube
并使用Docker进行构建的一般步骤如下:假设
brew
is installed。字符串
请将
eval $(minikube docker-env)
添加到~/.zshrc
(或等效的终端配置文件)要使
minikube
正确地路由流量,请使用隧道:型
之后,您应该能够在本地构建和运行Docker映像:
型