使用 Docker Desktop 部署到 Kubernetes
Docker Desktop 包含独立的 Kubernetes 服务器和客户端,以及 Docker CLI 集成,可以直接在你的机器上进行本地 Kubernetes 开发和测试。
Kubernetes 服务器作为一个单节点或多节点集群在 Docker 容器中运行。这种轻量级设置有助于你探索 Kubernetes 功能、测试工作负载,并与其他 Docker 功能并行地进行容器编排工作。
Docker Desktop 上的 Kubernetes 与其他工作负载并行运行,包括 Swarm 服务和独立容器。


在 Docker Desktop 中启用 Kubernetes 会发生什么?
以下操作将在 Docker Desktop 后端和虚拟机中触发
- 生成证书和集群配置
- 下载并安装 Kubernetes 内部组件
- 集群启动
- 安装额外的网络和存储控制器
在 Docker Desktop 中开启或关闭 Kubernetes 服务器不会影响你的其他工作负载。
安装并开启 Kubernetes
- 打开 Docker Desktop 控制面板并导航到 Settings。
- 选择 Kubernetes 选项卡。
- 切换开启 Enable Kubernetes。
- 选择你的集群配置方法。
- 选择 Apply & Restart 保存设置。
这会设置运行 Kubernetes 服务器所需镜像,并在你的系统上安装 kubectl
命令行工具,路径为 /usr/local/bin/kubectl
(Mac) 或 C:\Program Files\Docker\Docker\resources\bin\kubectl.exe
(Windows)。
注意
默认情况下,适用于 Linux 的 Docker Desktop 不包含
kubectl
。你可以按照Kubernetes 安装指南单独安装它。请确保kubectl
二进制文件安装在/usr/local/bin/kubectl
。
启用 Kubernetes 后,其状态会显示在 Docker Desktop 控制面板底部和 Docker 菜单中。
你可以使用以下命令检查你所在的 Kubernetes 版本
$ kubectl version
集群配置方法
Docker Desktop Kubernetes 可以使用 kubeadm
或 kind
配置器进行配置。
kubeadm
是旧的配置器。它支持单节点集群,你无法选择 Kubernetes 版本,它的配置速度比 kind
慢,并且不受增强容器隔离 (ECI) 的支持,这意味着如果启用了 ECI,集群可以工作,但不受 ECI 保护。
kind
是较新的配置器,如果你已登录且使用 Docker Desktop 4.38 或更高版本,则可以使用它。它支持多节点集群(用于更真实的 Kubernetes 设置),你可以选择 Kubernetes 版本,它的配置速度比 kubeadm
快,并且受 ECI 支持(即,启用 ECI 后,Kubernetes 集群在非特权 Docker 容器中运行,从而使其更安全)。但请注意,kind
要求 Docker Desktop 配置为使用containerd 镜像存储(这是 Docker Desktop 4.34 及更高版本中的默认镜像存储)。
下表总结了这种比较。
功能 | kubeadm | kind |
---|---|---|
可用性 | Docker Desktop 4.0+ | Docker Desktop 4.38+(需要登录) |
多节点集群支持 | 否 | 是 |
Kubernetes 版本选择器 | 否 | 是 |
配置速度 | ~1 分钟 | ~30 秒 |
受 ECI 支持 | 否 | 是 |
与 containerd 镜像存储配合使用 | 是 | 是 |
与 Docker 镜像存储配合使用 | 是 | 否 |
其他设置
查看系统容器
默认情况下,Kubernetes 系统容器是隐藏的。要检查这些容器,请启用 Show system containers (advanced)。
你现在可以使用 docker ps
命令或在 Docker Desktop 控制面板中查看正在运行的 Kubernetes 容器。
使用 kubectl 命令
Kubernetes 集成会自动在 Mac 的 /usr/local/bin/kubectl
和 Windows 的 C:\Program Files\Docker\Docker\Resources\bin\kubectl.exe
安装 Kubernetes CLI 命令。这个位置可能不在你 shell 的 PATH
变量中,所以你可能需要输入完整的命令路径或将其添加到 PATH
。
如果你已经安装了 kubectl
并且它指向其他环境,例如 minikube
或 Google Kubernetes Engine 集群,请确保更改上下文,以便 kubectl
指向 docker-desktop
$ kubectl config get-contexts
$ kubectl config use-context docker-desktop
提示
如果
kubectl
config get-contexts 命令返回空结果,请尝试
- 在命令提示符或 PowerShell 中运行命令。
- 设置
KUBECONFIG
环境变量指向你的.kube/config
文件。
验证安装
要确认 Kubernetes 正在运行,列出可用节点
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane 3h v1.29.1
如果你使用 Homebrew 或其他方法安装了 kubectl
并出现冲突,请删除 /usr/local/bin/kubectl
。
有关 kubectl
的更多信息,请参阅kubectl
文档。
升级集群
Kubernetes 集群不会随 Docker Desktop 更新自动升级。要升级集群,你必须在设置中手动选择 Reset Kubernetes Cluster。
故障排除
- 如果 Kubernetes 无法启动,请确保 Docker Desktop 运行有足够的分配资源。检查 Settings > Resources。
- 如果
kubectl
命令返回错误,确认上下文设置为docker-desktop
如果你启用了该设置,可以尝试检查Kubernetes 系统容器的日志。$ kubectl config use-context docker-desktop
- 如果更新后遇到集群问题,请重置你的 Kubernetes 集群。重置 Kubernetes 集群可以通过将集群恢复到干净状态来帮助解决问题,清除可能导致问题的错误配置、损坏数据或卡住的资源。如果问题仍然存在,你可能需要清理并清除数据,然后重新启动 Docker Desktop。
关闭并卸载 Kubernetes
在 Docker Desktop 中关闭 Kubernetes
- 在 Docker Desktop 控制面板中,选择 Settings 图标。
- 选择 Kubernetes 选项卡。
- 取消选择 Enable Kubernetes 复选框。
- 选择 Apply & Restart 保存设置。这会停止并移除 Kubernetes 容器,并移除
/usr/local/bin/kubectl
命令。