Minikube无法访问k8s.io镜像仓库及启动失败问题求助
问题描述
- 执行
minikube start时,提示此容器无法访问https://registry.k8s.io,控制平面启动耗时极久,最终报错:Error starting cluster: wait: /bin/bash -c "sudo env PATH="/var/lib/minikube/binaries/v1.26.1:$PATH" kubeadm init --config /var/tmp/minikube/kubeadm.yaml --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests,DirAvailable--var-lib-minikube,DirAvailable--var-lib-minikube-etcd,FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml,FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml,FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml,FileAvailable--etc-kubernetes-manifests-etcd.yaml,Port-10250,Swap,NumCPU,Mem,SystemVerification,FileContent--proc-sys-net-bridge-bridge-nf-call-iptables": Process exited with status 1
- 执行
echo $(minikube docker-env)时触发权限错误:Exiting due to GUEST_STATUS: state: unknown state "minikube": docker container inspect minikube --format=: exit status 1
标准错误输出显示:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/minikube/json": dial unix /var/run/docker.sock: connect: permission denied - 异常点:使用
sudo docker run hello-world可正常运行。
解决方案
1. 修复Docker套接字权限问题
普通用户无权限访问Docker daemon套接字,是因为当前用户未加入docker用户组,执行以下操作:
# 将当前用户添加到docker组 sudo usermod -aG docker $USER
执行完成后退出当前终端并重新登录,使组权限生效,之后普通用户无需sudo即可执行Docker命令。
2. 解决镜像仓库访问超时问题
无法访问registry.k8s.io会导致拉取K8s组件镜像超时,可切换国内镜像源启动minikube:
# 临时使用国内源启动 minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
或者配置默认镜像源,避免每次启动都指定:
# 设置默认镜像仓库为国内源 minikube config set image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
3. 清理异常环境后重新启动
先清理之前启动失败的minikube环境,再重新启动:
minikube delete minikube start
内容的提问来源于stack exchange,提问作者Oliver Domokos

