我正试图基于本地机器而非公共注册表中的容器映像创建一个pod。我正在检索pod的状态为ImagePullBackoffDocker文件
FROM tensorflow/tensorflow:latest-py3
RUN pip install -q keras==2.3.1
RUN pip install pillow
RUN mkdir -p /app/src
WORKDIR /app/src
COPY . ./
EXPOSE 31700
CMD ["python", "test.py"]
构建docker镜像
docker build -t tensor-keras .
在不使用yaml文件的情况下创建pod
kubectl run server --image=tensor-keras:latest
Yaml文件
apiVersion: v1
kind: Pod
metadata:
name: server
labels:
app: server
spec:
containers:
- name: tensor-keras
image: tensor-keras:latest
ports:
- containerPort: 31700
我正在检索吊舱的状态
NAME READY STATUS RESTARTS AGE
server 0/1 ImagePullBackOff 0 27m
非常感谢的帮助
默认情况下,Kubernetes会尝试从远程容器存储库中提取图像。在您的情况下,您的图像名称没有以容器存储库url为前缀,因此它使用默认的url,大多数时候它被设置为Docker Hub。
imagePullPolicy
字段的值是多少?对于您的用例,应该将其设置为Never
以使用本地映像。您使用哪个工具来运行您的Kubernetes实例?
- 例如,使用minikube时,使用本地图像的过程如下所述:https://stackoverflow.com/a/42564211/2784039
- 对于kind,您应该使用命令
kind load docker-image <tensor-keras:latest>
在集群中加载图像 - 对于k3s,如果
imagePullPolicy
设置为Never
,则使用本地图像应该是开箱即用的