Ben*_*Ben 8 docker kubernetes minikube
尽管使用相同映像注册表的其他部署按预期工作,但我deployment在minikube本地注册表中收到“无法拉取映像”错误。
我的工作流程是从docker.collection如下所示的 Dockerfile 构建映像。
$ minikube start --insecure-registry localhost:5000 --memory 4096
$ docker build . -f docker.collection -t localhost:5000/collection:latest -t localhost:5000/collection:dev
$ docker push localhost:5000/collection
$ cat deployment.yaml | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)
部署已根据需要创建,但 Pod 未启动,并且 minikube 仪表板显示:
无法拉取映像“localhost:5000/collection:dev”:rpc 错误:代码 = Unknown desc = 来自守护进程的错误响应:localhost:5000/collection:dev 未找到清单
我没有理由相信构建或推送映像有任何问题,并且在主机上,我可以成功拉取...
$ docker pull localhost:5000/collection:dev
dev: Pulling from collection
Digest: sha256:8becfdd412f0b86ece8335aa5ee1aede75992d17f88739a28da5939eab28fde5
Status: Image is up to date for localhost:5000/collection:dev
Run Code Online (Sandbox Code Playgroud)
我还应该检查什么?如何获得有关失败的更多详细信息?
我也检查过:
localhost:5000:$ minikube ssh
$ ping localhost:5000
PING localhost:5000 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.126 ms
64 bytes from 127.0.0.1: seq=1 ttl=64 time=0.041 ms
64 bytes from 127.0.0.1: seq=2 ttl=64 time=0.058 ms
^C
--- localhost:5000 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.041/0.075/0.126 ms
$
Run Code Online (Sandbox Code Playgroud)
run的图像以相同的方式失败:kubectl run coll-test --image=localhost:5000/collection:dev产生相同的事件:Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 24s default-scheduler Successfully assigned dev/coll-test-cf4467b8d-8vpdk to minikube
Normal BackOff 23s kubelet, minikube Back-off pulling image "localhost:5000/collection:dev"
Warning Failed 23s kubelet, minikube Error: ImagePullBackOff
Normal Pulling 7s (x2 over 23s) kubelet, minikube Pulling image "localhost:5000/collection:dev"
Warning Failed 7s (x2 over 23s) kubelet, minikube Failed to pull image "localhost:5000/collection:dev": rpc error: code = Unknown desc = Error response from daemon: manifest for localhost:5000/collection:dev not found
Warning Failed 7s (x2 over 23s) kubelet, minikube Error: ErrImagePull
Run Code Online (Sandbox Code Playgroud)
$ curl http://localhost:5000/v2/_catalog
{"repositories":["collection","foo","bar"]}
Run Code Online (Sandbox Code Playgroud)
# deployment.yaml
apiVersion: apps/v1beta2
kind: Deployment
metadata:
namespace: dev
name: collection
labels:
app: collection
spec:
replicas: 1
selector:
matchLabels:
app: collection
template:
metadata:
labels:
app: collection
spec:
containers:
- name: collection
image: "localhost:5000/collection:dev"
command: ["bash", "./collection_entry.sh"]
imagePullPolicy: Always
Run Code Online (Sandbox Code Playgroud)
# docker.collection
FROM python:3
WORKDIR /code
COPY . /code/
RUN adduser --system --group --no-create-home celery
RUN mkdir /var/run/celery
RUN mkdir /var/log/celery
RUN chown celery:celery /var/run/celery
RUN chown celery:celery /var/log/celery
RUN chmod 755 /var/run/celery
RUN chmod 755 /var/log/celery
RUN pip3 -q install -r requirements.txt
USER celery
ENTRYPOINT ./collection_entry.sh
Run Code Online (Sandbox Code Playgroud)
1)你必须跑 eval $(minikube docker-env)
2) 使用 Minikube 的 Docker 守护进程构建镜像
docker build -t collection .
Run Code Online (Sandbox Code Playgroud)
3) 像构建标签一样在 pod 规范中设置图像 - collection
4) 将 imagePullPolicy 设置为 Never,否则 Kubernetes 会尝试下载镜像。
apiVersion: apps/v1beta2
kind: Deployment
metadata:
namespace: dev
name: collection
labels:
app: collection
spec:
replicas: 1
selector:
matchLabels:
app: collection
template:
metadata:
labels:
app: collection
spec:
containers:
- name: collection
image: "collection"
command: ["bash", "./collection_entry.sh"]
imagePullPolicy: Never
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11001 次 |
| 最近记录: |