执行docker run启动hyperkube镜像提示manifest不存在如何解决
报错核心原因
你参考的这份Docker部署K8s的指南已经停更多年,存在两个硬适配问题:
- 指南中写死的镜像地址
gcr.io/google_containers/hyperkube-amd64早已完成官方迁移,路径规则发生过变更 - Kubernetes从v1.24版本开始,官方就不再发布整合式的hyperkube镜像,你通过stable.txt、latest.txt接口拉取到的都是v1.24及以上的新版本号,旧镜像路径下根本没有对应版本的镜像文件,所以会触发manifest not found的报错。
可行解决建议
- 固定兼容版本部署。不要动态拉取最新版本号,直接在环境变量里指定最后一个支持hyperkube部署形式的K8s正式版本:
如果执行docker run时仍然提示镜像不存在,把命令里镜像路径的export K8S_VERSION=v1.23.17google_containers(下划线分隔)改成google-containers(横杠分隔),匹配官方迁移后的路径规则即可正常拉取。 - 替换镜像拉取源。如果不想使用旧版本K8s,可以把原命令里的gcr官方镜像前缀,替换成国内公开的gcr镜像同步仓库前缀,这类同步仓库会全量同步K8s官方所有历史版本的组件镜像,既可以解决镜像找不到的问题,也能解决国内环境直接访问gcr网络超时的问题。
- 更换维护中的部署方案。这份手动启动hyperkube的Docker部署指南已经过时多年,后续使用中还会碰到cgroup适配、组件配置不兼容等各类问题,建议直接替换为官方持续维护的轻量单节点部署工具(比如kind、minikube),不需要手动处理镜像路径、启动参数拼接等问题,单条命令即可拉起可用的单节点K8s环境,兼容性和稳定性都远高于旧指南的手动部署方式。
内容的提问来源于stack exchange,提问作者Snowcrash
相关产品推荐
相关产品推荐

