
在 Docker Desktop 上轻松配置 Kubernetes 环境
k8s-for-docker-desktop 项目为 Docker Desktop 用户提供了在 Mac 和 Windows 系统上快速配置 Kubernetes 环境的解决方案。项目包含镜像加速配置、必要镜像加载、Kubernetes 启用、Dashboard 部署等详细步骤指南。同时还涵盖了 Ingress 配置说明和示例应用,方便开发者快速搭建本地 Kubernetes 测试环境。
中文 | English
欢迎体验阿里云容器服务 Kubernetes Serverless版(ASK)免费试用计划,开启您的云上云原生实践之旅。 https://free.aliyun.com/?product=9596839
说明:
需要安装 Docker Desktop 的 Mac 或 Windows 版本,如果没有请下载 Docker CE 最新版本
当前 master 分支已在 Docker for Mac/Windows 4.30.0(包含 Docker 26.1.1 和 Kubernetes v1.29.2)版本上测试通过
如需测试其他版本,请查看 Docker Desktop 版本,Docker -> About Docker Desktop

git checkout v1.29.2git checkout v1.29.1git checkout v1.28.2git checkout v1.27.2git checkout v1.25.9git checkout v1.25.4git checkout v1.25.2git checkout v1.25.0git checkout v1.24.2git checkout v1.24.0git checkout v1.23.4git checkout v1.22.5git checkout v1.22.4git checkout v1.21.5git checkout v1.21.4git checkout v1.21.3git checkout v1.21.2git checkout v1.21.1如果Kubernetes版本为v1.19.3,请使用以下命令切换到v1.19.3分支 git checkout v1.19.3
如果Kubernetes版本为v1.19.2,请使用以下命令切换到v1.19.2分支 git checkout v1.19.2
如果Kubernetes版本为v1.18.8,请使用以下命令切换到v1.18.8分支 git checkout v1.18.8
如果Kubernetes版本为v1.18.6,请使用以下命令切换到v1.18.6分支 git checkout v1.18.6
如果Kubernetes版本为v1.18.3,请使用以下命令切换到v1.18.3分支 git checkout v1.18.3
如果Kubernetes版本为v1.16.5,请使用以下命令切换到v1.16.5分支 git checkout v1.16.5
如果Kubernetes版本为v1.15.5,请使用以下命令切换到v1.15.5分支 git checkout v1.15.5
如果Kubernetes版本为v1.15.4,请使用以下命令切换到v1.15.4分支 git checkout v1.15.4
如果Kubernetes版本为v1.14.8,请使用以下命令切换到v1.14.8分支 git checkout v1.14.8
如果Kubernetes版本为v1.14.7,请使用以下命令切换到v1.14.7分支 git checkout v1.14.7
如果Kubernetes版本为v1.14.6,请使用以下命令切换到v1.14.6分支 git checkout v1.14.6
如果Kubernetes版本为v1.14.3,请使用以下命令切换到v1.14.3分支 git checkout v1.14.3
如果Kubernetes版本为v1.14.1,请使用以下命令切换到v1.14.1分支 git checkout v1.14.1
如果Kubernetes版本为v1.13.0,请使用以下命令切换到v1.13.0分支 git checkout v1.13.0
如果Kubernetes版本为v1.10.11,请使用以下命令切换到v1.10.11分支 git checkout v1.10.11
注意:
如果发现K8s版本与您的环境不一致,可以修改images.properties文件指明所需镜像版本,
欢迎提交 Pull Request
为 Docker daemon 配置镜像加速,可参考阿里云镜像服务或使用中科大镜像加速地址https://docker.mirrors.ustc.edu.cn

可选步骤:为 Kubernetes 配置 CPU 和内存资源,建议分配 4GB 或更多内存。

从阿里云镜像服务下载 Kubernetes 所需的镜像
在 Mac 上执行以下脚本:
./load_images.sh
在 Windows 上,使用 PowerShell:
.\load_images.ps1
说明:
Set-ExecutionPolicy RemoteSigned 命令。images.properties 文件自行加载所需的镜像。启用 Kubernetes,并等待 Kubernetes 开始运行

提示:
在 Mac 上:
如果在 Kubernetes 部署过程中遇到问题,可以通过以下命令获取 Docker Desktop 应用的实时日志信息:
pred='process matches ".*(ocker|vpnkit).*" || (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")' /usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"
在 Windows 上:
如果在 Kubernetes 部署过程中遇到问题,可以在 C:\ProgramData\DockerDesktop 下的 service.txt 查看 Docker 日志,在 C:\Users\yourUserName\AppData\Local\Docker 下的 log.txt 查看 Kubernetes 日志。
问题诊断:
如果发现 Kubernetes 一直处于启动状态,请参考:
rm -fr '~/Library/Group\ Containers/group.com.docker/pki'K8S 进入容器方法
K8s 如何进入一个包含多个容器的 pod 的方法:
kubectl --namespace=kube-system exec -it kube-dns-1336009800-15b1h --container nginx -- sh
或
kubectl --namespace=kube-system exec -it kube-dns-1336009800-15b1h -c nginx -- sh
注释:--namespace 为命名空间,kube-dns 为 pod 的名字,-c 或 --container 为 Pod 中的一个容器名字
可选步骤:将 Kubernetes 运行上下文切换至 docker-desktop(之前版本的 context 为 docker-for-desktop)
kubectl config use-context docker-desktop
验证 Kubernetes 集群状态
kubectl cluster-info kubectl get nodes
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
或
kubectl apply -f kubernetes-dashboard.yaml
检查 kubernetes-dashboard 应用状态
kubectl get pod -n kubernetes-dashboard
启动 API Server 访问代理
kubectl proxy
通过以下 URL 访问 Kubernetes dashboard
授权 kube-system 默认服务账号
kubectl apply -f kube-system-default.yaml
对于 Mac 环境
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}') kubectl config set-credentials docker-desktop --token="${TOKEN}" echo $TOKEN
对于 Windows 环境
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1] kubectl config set-credentials docker-desktop --token="${TOKEN}" echo $TOKEN

选择 令牌
输入上文控制台输出的内容
或者选择 Kubeconfig 文件,路径如下:
Mac: $HOME/.kube/config
Win: %UserProfile%\.kube\config
点击登录,进入 Kubernetes Dashboard
说明:如果测试 Istio,不需要安装 Ingress
验证
kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx
部署测试应用,详情参见社区文章
kubectl create -f sample/apple.yaml kubectl create -f sample/banana.yaml kubectl create -f sample/ingress.yaml
测试示例应用
$ curl -kL http://localhost/apple apple $ curl -kL http://localhost/banana banana
删除示例应用
kubectl delete -f sample/apple.yaml kubectl delete -f sample/banana.yaml kubectl delete -f sample/ingress.yaml
kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml
或
kubectl delete -f ingress-nginx-controller.yaml
可以根据文档安装 helm v3 https://helm.sh/docs/intro/install/ 在国内由于helm的cdn节点使用的是谷歌云所以可能访问不到,可以参考已存在的官方issue: https://github.com/helm/helm/issues/7028
# 在 Mac 上使用 homebrew brew install helm # 添加 helm 仓库 helm repo add stable http://mirror.azure.cn/kubernetes/charts/ # 更新 charts 仓库 helm repo update
如果在后续使用 helm 安装组件的过程中出现版本兼容问题,可以参考 通过二进制包安装 思路安装匹配的版本
# 在 Windows 上使用 Chocolatey # 注:安装的时候需要保证网络能够访问googleapis这个域名 choco install kubernetes-helm # 更改 helm 仓库 helm repo add stable http://mirror.azure.cn/kubernetes/charts/ # 更新 charts 仓库 helm repo update
安装 Wordpress
helm install wordpress stable/wordpress
查看 wordpress 发布状态
helm status wordpress
卸载 wordpress 发布
helm uninstall wordpress
说明:Istio Ingress Gateway和Ingress缺省的端口冲突,请移除Ingress并进行下面测试
可以根据文档安装 Istio https://istio.io/docs/setup/getting-started/
例如下载Istio版本1.22.1(其他更新版本可以自行替换), 执行如下命令:
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.22.1 sh - cd istio-1.22.1 export PATH=$PWD/bin:$PATH
注意: Windows环境未经严格测试。
在Windows上,您可以手工下载Istio安装包,或者把getLatestIstio.ps1拷贝到你希望下载 Istio 的目录,并执行 - 说明:根据社区提供的安装脚本修改而来
.\getLatestIstio.ps1
istioctl install --set profile=demo -y
kubectl get pods -n istio-system
default 名空间开启自动 sidecar 注入kubectl label namespace default istio-injection=enabled kubectl get namespace -L istio-injection
请参考 https://istio.io/docs/examples/bookinfo/
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
查看示例应用资源
kubectl get svc,pod
确认示例应用在运行中
kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
创建 Ingress Gateway
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
查看 Gateway 配置
kubectl get gateway
确认示例应用可以访问
export GATEWAY_URL=localhost:80 curl -s http://${GATEWAY_URL}/productpage | grep -o "<title>.*</title>"
可以通过浏览器访问
samples/bookinfo/platform/kube/cleanup.sh
istioctl manifest generate --set profile=demo | kubectl delete -f -


多风格AI绘画神器
堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。


零代码AI应用开发平台
零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT 模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号