在我的本地 Ubuntu 工作站上使用 minikube 和 docker,我在 Minikube Web UI 中收到以下错误:
Failed to pull image "localhost:5000/samples/myserver:snapshot-180717-213718-0199": rpc error: code = Unknown desc = Error response from daemon: Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: getsockopt: connection refused
Run Code Online (Sandbox Code Playgroud)
在我创建以下部署配置后:
kubectl apply -f hello-world-deployment.yaml
Run Code Online (Sandbox Code Playgroud)
hello-world-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
template:
metadata:
labels:
app: hello-world
tier: backend
spec:
containers:
- name: hello-world
image: localhost:5000/samples/myserver:snapshot-180717-213718-0199
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 8080
Run Code Online (Sandbox Code Playgroud)
以及 docker 镜像的输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
samples/myserver latest aa0a1388cd88 About an hour ago 435MB
samples/myserver snapshot-180717-213718-0199 aa0a1388cd88 About an hour ago 435MB
k8s.gcr.io/kube-proxy-amd64 v1.10.0 bfc21aadc7d3 3 months ago 97MB
Run Code Online (Sandbox Code Playgroud)
基于本指南: How to use local docker images with Minikube?
我也跑过:
eval $(minikube docker-env)
Run Code Online (Sandbox Code Playgroud)
并基于此:
https://github.com/docker/for-win/issues/624
我已经添加了:
"InsecureRegistry": [
"localhost:5000",
"127.0.0.1:5000"
],
Run Code Online (Sandbox Code Playgroud)
到/etc/docker/daemon.json
对于我缺少什么让图像拉在 minikube 中工作有什么建议吗?
我已按照以下答案中的步骤进行操作,但是当我到达此步骤时:
$ kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000
Run Code Online (Sandbox Code Playgroud)
它就像这样挂着:
$ kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000
Forwarding from 127.0.0.1:5000 -> 5000
Forwarding from [::1]:5000 -> 5000
Run Code Online (Sandbox Code Playgroud)
创建部署配置后,我在 minikube 仪表板中遇到相同的错误。
根据BMitch的回答,我现在尝试创建一个本地 docker 存储库并使用以下命令将图像推送到其中:
$ docker run -d -p 5000:5000 --restart always --name registry registry:2
$ docker pull ubuntu
$ docker tag ubuntu localhost:5000/ubuntu:v1
$ docker push localhost:5000/ubuntu:v1
Run Code Online (Sandbox Code Playgroud)
接下来,当我执行 docker images 时,我得到:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 74f8760a2a8b 4 days ago 82.4MB
localhost:5000/ubuntu v1 74f8760a2a8b 4 days ago 82.4MB
Run Code Online (Sandbox Code Playgroud)
然后我将部署配置hello-world-deployment.yaml更新为:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
template:
metadata:
labels:
app: hello-world
tier: backend
spec:
containers:
- name: hello-world
image: localhost:5000/ubuntu:v1
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 8080
Run Code Online (Sandbox Code Playgroud)
和
kubectl create -f hello-world-deployment.yaml
Run Code Online (Sandbox Code Playgroud)
但在 Minikube 中我仍然遇到类似的错误:
Failed to pull image "localhost:5000/ubuntu:v1": rpc error: code = Unknown desc = Error response from daemon: Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: getsockopt: connection refused
Run Code Online (Sandbox Code Playgroud)
那么看来 Minikube 不允许查看我刚刚创建的本地注册表?
看起来您\xe2\x80\x99 面临计算机上的 localhost和minikube VM上下文中使用的localhost的问题。\n要使注册表正常工作,您必须设置额外的端口转发。
\n\n如果您的minikube安装当前由于多次尝试修复注册表问题而损坏,\n我建议重新启动 minikube 环境:
\n\nminikube stop && minikube delete && rm -fr $HOME/.minikube && minikube start\nRun Code Online (Sandbox Code Playgroud)\n\n接下来,获取 kube 注册表 yaml 文件:
\n\ncurl -O https://gist.githubusercontent.com/coco98/b750b3debc6d517308596c248daf3bb1/raw/6efc11eb8c2dce167ba0a5e557833cc4ff38fa7c/kube-registry.yaml\nRun Code Online (Sandbox Code Playgroud)\n\n然后,将其应用到 minikube 上:
\n\nkubectl create -f kube-registry.yaml\nRun Code Online (Sandbox Code Playgroud)\n\n测试 minikube VM 内的注册表是否有效:
\n\nminikube ssh && curl localhost:5000\nRun Code Online (Sandbox Code Playgroud)\n\n在 Ubuntu 上,转发端口以到达端口 5000 处的注册表:
\n\nkubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk \'{print $1;}\') 5000:5000\nRun Code Online (Sandbox Code Playgroud)\n\n如果您想从您的计算机共享您的私有注册表,您可能有兴趣共享 minikube 博客条目的本地注册表。
\n| 归档时间: |
|
| 查看次数: |
13116 次 |
| 最近记录: |