创建Deployment时拉不到镜像,先别只换仓库地址。2021年我在Mac上安装Minikube,最后发现的问题范围更大:启动Minikube之前能上网,启动后整台电脑都无法联网。
日志把注意力引向了镜像
最初按照教程操作,卡在create deployment。Dashboard中的日志显示 k8s.gcr.io/echoserver:1.4 拉取失败,于是我围绕镜像访问找了不少办法,都没解决。
随后对比启动前后,才发现宿主机也断网了。此时“仓库访问失败”只是症状之一,不应继续把它当成单个镜像地址的问题。
更换驱动后恢复,但不等于找到了唯一根因
当时的启动日志使用HyperKit。我后来安装VirtualBox,并用旧版本参数启动:
minikube start --vm-driver=virtualbox
随后原流程可以继续。这是当时的历史记录;没有保留macOS、Minikube、驱动版本及路由快照,不能据此断言HyperKit普遍有问题,也不能断言必须卸载所有其他虚拟化软件。
Minikube支持的驱动与宿主平台、架构和版本有关,部署方式也不只有虚拟机。今天应从官方驱动列表和当前start参数确认适用方式,而不是复制这条旧命令和旧镜像名。
遇到同类现象,按三个网络层次检查
- 宿主机:启动前后能否访问相同的可信目标,DNS、默认路由、代理和VPN状态是否变化。
- Minikube节点:检查profile、节点状态、驱动日志及节点内部DNS/外网访问。
- 具体镜像:查看Pod Events里的完整错误,区分域名解析、连接超时、证书、鉴权与镜像不存在。
可先做不修改集群配置的状态查询:
minikube profile list
minikube status
minikube logs
kubectl get pods
kubectl describe pod example-pod
example-pod 是示例名称,应替换为实际Pod;也要确认kubectl当前上下文和命名空间,日志对外分享前脱敏。
切换驱动或新建profile可能创建另一套集群,工作负载和数据不会凭空迁移。应先了解旧profile数据与恢复路径,再安排变更,不把删集群、关防火墙或重置宿主网络作为第一步。
这次经历最有价值的转折,是先扩大观察范围,发现宿主机也受影响,再改变排查方向;不是“某驱动一律不能用”。