
在 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一键生成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法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


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


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号