当前位置: 首页 > article >正文

如何彻底解决Docker Desktop中Kubernetes无法启动问题

我们时常会遇到Kubernetes启动提示如下报错信息:

{"message":"starting kubernetes: pulling images: pulling from host: pulling tag \"registry.k8s.io/etcd:3.5.16-0\": Error response from daemon: .

Log in with your Docker ID or email address.
If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.

Using a SOCKS proxy requires a Business Subscription. Learn more at https://www.docker.com/pricing/"}

🔍 问题分析:

Docker设置了 代理(Proxy),而Docker Desktop免费版不允许使用 SOCKS代理
我的Docker 拉取 Kubernetes 官方镜像(registry.k8s.io/etcd:3.5.16-0)时,通过当前设置的SOCKS代理,导致出现上述报错。

  • Docker Desktop免费版不支持使用SOCKS代理
  • Kubernetes镜像默认在国外的镜像仓库中,中国大陆用户默认网络条件难以拉取成功。

🚩 如何彻底解决该问题:

你需要关闭 Docker Desktop 中的SOCKS代理设置,改用国内镜像源手动拉取镜像,从而绕开网络限制,顺利启动 Kubernetes。


✅ 解决步骤:

⚡️ 第一步:关闭 Docker Desktop 的代理设置

  • 打开 Docker Desktop → Settings → Resources → Proxies
  • 检查并确保所有代理项 (HTTP, HTTPS, SOCKS) 均为空(不使用代理)
  • 点击【Apply & Restart】重启Docker。

🚧 第二步:手动拉取 Kubernetes镜像(从国内镜像源拉取)

打开终端(PowerShell或CMD),复制执行如下命令:

# 设定K8S版本
$K8S_VERSION="v1.32.2"
$ETCD_VERSION="3.5.16-0"
$COREDNS_VERSION="v1.11.1"
$PAUSE_VERSION="3.9"

# 从阿里云拉取镜像(速度快、稳定)
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$COREDNS_VERSION

🚀 第三步:对拉取的镜像重新打Tag(非常关键)

在终端执行以下命令:

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$K8S_VERSION registry.k8s.io/kube-apiserver:$K8S_VERSION

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$K8S_VERSION registry.k8s.io/kube-controller-manager:$K8S_VERSION

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$K8S_VERSION registry.k8s.io/kube-scheduler:$K8S_VERSION

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION registry.k8s.io/kube-proxy:$K8S_VERSION

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION registry.k8s.io/pause:$PAUSE_VERSION

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION registry.k8s.io/etcd:$ETCD_VERSION

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$COREDNS_VERSION registry.k8s.io/coredns/coredns:$COREDNS_VERSION

这样 Docker Desktop 在启动 Kubernetes 时,就不会再去国外拉取镜像,而是直接使用本地已经拉取的镜像。


🔄 第四步:重启 Kubernetes 集群

在Docker Desktop界面:

  • 进入 Settings → Kubernetes
  • 点击 【Reset Cluster】 重置Kubernetes集群。
  • 确认后,Docker Desktop将使用本地已存在的镜像迅速完成Kubernetes集群的启动。

🎯 第五步:验证 Kubernetes 是否正常启动

终端执行:

kubectl get nodes

正常情况下,将输出类似:

NAME             STATUS   ROLES           AGE   VERSION
docker-desktop   Ready    control-plane   1m    v1.32.2

📌 核心问题总结:

  • 问题根本原因是Docker Desktop 免费版不支持使用SOCKS代理。
  • 解决方案为关闭代理并手动拉取镜像
  • 国内网络条件下,请务必使用阿里云等国内镜像拉取Kubernetes镜像。
  • 手动拉取镜像后,通过 docker tag 命令替换默认镜像名,即可快速解决此问题。

http://www.kler.cn/a/598384.html

相关文章:

  • CI/CD(四) docker-compose 安装harbor
  • 完整的类在JVM中的生命周期详解
  • 汽车制造企业供应链管理模式及精益生产物流管理规划P337(337页PPT)(文末有下载方式)
  • Linux下oa项目部署
  • 表的DDL操作
  • Qt 导入TagLib库
  • go复习目录
  • 【小也的Java之旅系列】01 分布式、集群、微服务的区别
  • LeetCode 86 Partition List 分区链表 Java
  • Canal同步延迟和数据丢失优化方案
  • 使用Python构建去中心化预测市场:从概念到实现
  • one-hot标签详解
  • 2025年渗透测试面试题总结-某深信服 -安全工程师(题目+回答)
  • 自然语言处理|Adapter:大模型微调的高效之道
  • 让 MGR 不从 Primary 的节点克隆数据?
  • 阿里云对象存储教程
  • 【深度技术揭秘】 Android SystemUI锁屏界面动态布局重构:横竖屏智能适配指南
  • 9.嗅探与Wireshark进阶分析
  • JSON数据修改的实现
  • 【AVRCP】AVRCP与BIP互操作性深度解析:封面艺术传输的技术实现