Minikube:无法从 DockerHub(公共存储库)提取映像

Pat*_*Res 6 kubernetes dockerhub minikube

我在ArchLinux机器上安装了全新的Minikube,使用Docker作为Minikube驱动程序。

\n

我使用命令启动了minikube “集群” minikube start。docker container ls告诉我们它已启动并正在运行:

\n
CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS          PORTS                                                                                                                                  NAMES\nd86070af0c21   gcr.io/k8s-minikube/kicbase:v0.0.28   "/usr/local/bin/entr\xe2\x80\xa6"   50 minutes ago   Up 50 minutes   127.0.0.1:49162->22/tcp, 127.0.0.1:49161->2376/tcp, 127.0.0.1:49160->5000/tcp, 127.0.0.1:49159->8443/tcp, 127.0.0.1:49158->32443/tcp   minikube\n
Run Code Online (Sandbox Code Playgroud)\n

我正在尝试使用以下命令运行一个简单的nginx pod:kubectl run my-nginx --image nginx

\n

由于我正在从公共存储库中提取公共图像,因此我希望不需要任何身份验证。但describe pod子命令显示:

\n
Events:\n  Type     Reason     Age                From               Message\n  ----     ------     ----               ----               -------\n  Normal   Scheduled  47s                default-scheduler  Successfully assigned default/my-nginx to minikube\n  Normal   BackOff    31s                kubelet            Back-off pulling image "nginx"\n  Warning  Failed     31s                kubelet            Error: ImagePullBackOff\n  Normal   Pulling    19s (x2 over 46s)  kubelet            Pulling image "nginx"\n  Warning  Failed     4s (x2 over 31s)   kubelet            Failed to pull image "nginx": rpc error: code = Unknown desc = Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)\n  Warning  Failed     4s (x2 over 31s)   kubelet            Error: ErrImagePull\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试从minikube容器内部卷曲错误消息中找到的 URL 时,它表明需要身份验证:

\n
patres@arch:~$ minikube ssh                                                                        \n\ndocker@minikube:~$ curl https://registry-1.docker.io/v2/\n{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试使用docker pull nginx命令从主机中提取该映像时,该映像将被提取,无需身份验证。

\n

我还尝试以这种方式创建一个kubernetes密钥,然后使用 YAML 和该密钥启动 pod,但没有成功。

\n
kubectl create secret docker-registry regcred --docker-server=https://registry-1.docker.io/v2/ --docker-username=myusername --docker-password=mypass --docker-email=my@email.com\n
Run Code Online (Sandbox Code Playgroud)\n

最后,这个问题似乎并不是DockerHub独有的,因为如果我遵循官方minikubes 文档并启动默认hello-minikube部署:

\n
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4\n
Run Code Online (Sandbox Code Playgroud)\n

我犯了同样的ImagePullBackOff错误:

\n
$ kubectl get pod hello-minikube-6ddfcc9757-zdzz2                                           \nNAME                              READY   STATUS             RESTARTS   AGE\nhello-minikube-6ddfcc9757-zdzz2   0/1     ImagePullBackOff   0          6m11s\n
Run Code Online (Sandbox Code Playgroud)\n