在本地Ubuntu工作站上使用minikube和docker,我在Minikube Web UI中收到以下错误:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
int main() {
unsigned char digest[SHA512_DIGEST_LENGTH];
char string[] = "hello world";
SHA512((unsigned char*)&string, strlen(string), (unsigned char*)&digest);
char mdString[SHA512_DIGEST_LENGTH * 2 + 1];
for (int i = 0; i < SHA512_DIGEST_LENGTH; i++)
sprintf(&mdString[i * 2], "%02x", (unsigned int)digest[i]);
printf("SHA512 digest: %s\n", mdString);
return 0;
}
使用以下命令创建以下部署配置后:
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
hello-world-deployment.yaml
kubectl apply -f hello-world-deployment.yaml
并从docker映像输出:
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
基于本指南: How to use local docker images with Minikube?
我也跑过:
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
并基于此:
https://github.com/docker/for-win/issues/624
我添加了:
eval $(minikube docker-env)
到 "InsecureRegistry": [
"localhost:5000",
"127.0.0.1:5000"
],
关于我缺少什么使图像在minikube中工作的建议?
我已经按照以下答案中的步骤进行操作,但是当我到达此步骤时:
/etc/docker/daemon.json
它只是这样挂起:
$ kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000
在创建我的Deploymentconfig之后,我在minikube仪表板中遇到了相同的错误。
基于 BMitch 的回答,我现在尝试创建本地docker存储库并使用以下命令将映像推送到其中:
$ 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
接下来,当我处理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
然后我将我的Deploymentconfig hello-world-deployment.yaml 更新为:
$ 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
和
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
但是在Minikube中,我仍然遇到类似的错误:
kubectl create -f hello-world-deployment.yaml
似乎Minikube不允许查看我刚刚创建的本地注册表?
答案 0 :(得分:3)
您似乎遇到了计算机上的 localhost 和在minikube VM 上下文中使用的 localhost 的问题。 要使注册表正常工作,您必须设置其他端口转发。
如果您由于大量尝试解决注册表问题而导致minikube安装中断, 我建议重启minikube环境:
minikube stop && minikube delete && rm -fr $HOME/.minikube && minikube start
接下来,获取kube注册表yaml文件:
curl -O https://gist.githubusercontent.com/coco98/b750b3debc6d517308596c248daf3bb1/raw/6efc11eb8c2dce167ba0a5e557833cc4ff38fa7c/kube-registry.yaml
然后,将其应用于minikube:
kubectl create -f kube-registry.yaml
测试minikube VM中的注册表是否有效:
minikube ssh && curl localhost:5000
在Ubuntu上,将端口转发到端口5000处的注册表:
kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000
如果您想从计算机上共享私人注册表,则可能对sharing local registry for minikube博客条目感兴趣。
答案 1 :(得分:0)
如果您将映像源指定为本地注册表服务器,则需要在其中运行注册表服务器,然后将映像推送到其中。
您可以自行托管具有多个第三方选项的注册表服务器,或运行打包在Docker容器中的该第三方服务器:https://hub.docker.com/_/registry/
这仅适用于单节点环境,除非您设置TLS密钥,信任CA或将其他不安全的注册表告知所有其他节点。
您还可以将imagePullPolicy指定为“从不”。
这两个解决方案都已经存在于您的链接问题中,我看不到有任何证据表明您尝试过此问题中的任何一个。在没有显示您如何尝试这些步骤并遇到其他问题的情况下,应该将此问题作为一个重复项予以解决。