
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是一个使用Sinatra、ActiveRecord和ActiveResource构建的分布式(微服务)Ruby示例应用,旨在展示Linkerd 2.0的多种价值,包括调试、可观测性和监控。应用中的部分服务会周期性失败,这是故意设计的,用于演示Linkerd 2.0的调试和监控能力。
该应用由以下四个服务组成:
!Books Application Topology
你可以使用Linkerd 2.0服务网格将应用部署到Kubernetes。
安装linkerd CLI
bashcurl https://run.linkerd.io/install | sh
安装Linkerd控制平面
bashlinkerd install | kubectl apply -f -
注入并部署应用
bashcurl https://run.linkerd.io/booksapp.yml | linkerd inject - | kubectl apply -f -
使用应用
bashkubectl port-forward svc/webapp 7000 open "http://localhost:7000"
查看Linkerd仪表盘
bashlinkerd dashboard
!Linkerd Dashboard
默认的booksapp配置使用SQLite。也可以使用k8s/目录中的配置,以MySQL作为后端运行应用。MySQL配置使用单独的Pod作为存储后端,允许每个应用部署运行多个副本。
首先安装MySQL后端
bashkubectl apply -f k8s/mysql-backend.yml
验证mysql-init作业是否成功完成
bashkubectl get po NAME READY STATUS RESTARTS AGE mysql-9bd5bcfdf-7jb2s 1/1 Running 0 3m mysql-init-29nxv 0/1 Completed 0 3m
按照上述步骤安装Linkerd;安装配置为使用MySQL的应用
bashlinkerd install | kubectl apply -f - linkerd inject k8s/mysql-app.yml | kubectl apply -f -
使用应用
bashkubectl port-forward svc/webapp 7000 open "http://localhost:7000"
该仓库包含一个混沌猴子脚本,每10秒随机杀死一个Pod。它旨在与Kubernetes/MySQL配置一起运行。要部署,请运行:
bash kubectl apply -f k8s/mysql-chaos.yml
为了记录每条路由的指标,你可以基于Swagger规范为webapp、books和authors服务创建服务配置文件:
bash linkerd profile --open-api swagger/webapp.swagger webapp | kubectl apply -f - linkerd profile --open-api swagger/books.swagger books | kubectl apply -f - linkerd profile --open-api swagger/authors.swagger authors | kubectl apply -f -
然后你可以查看每个服务的路由数据:
bash linkerd routes webapp
bash linkerd routes books
bash linkerd routes authors
你可以使用修改版的booksapp来演示流量分割。
安装booksapp-trafficsplit.yml,其中包含MySQL后端、不引入FAILURE_RATE的修改版booksapp.yml、名为authors-clone的第二个authors服务,以及两个流量分割配置。Linkerd已注入到booksapp和authors-clone中。
bashkubectl apply -f booksapp-trafficsplit.yml
验证default命名空间中是否存在两个流量分割
bashkubectl get ts
给应用1-2分钟开始发送流量。
运行watch linkerd stat ts验证流量分割是否工作。你应该看到以下结果:一个流量分割在authors和authors-clone之间按50/50分配流量,另一个在webapp和不存在的webapp-clone之间按100/0分配流量(你可以在第二个服务创建前就在两个服务之间创建分割)。
NAME APEX LEAF WEIGHT SUCCESS RPS LATENCY_P50 LATENCY_P95 LATENCY_P99 authors-split authors authors 500m 100.00% 3.1rps 8ms 29ms 37ms authors-split authors authors-clone 500m 100.00% 3.5rps 8ms 23ms 37ms webapp-split webapp webapp 1 100.00% 7.3rps 26ms 74ms 95ms webapp-split webapp webapp-clone 0 - - - - -
完成后,删除应用
bashkubectl delete -f booksapp-trafficsplit.yml
你也可以在本地运行应用进行开发。
创建、迁移并填充数据库
bashbundle install bundle exec rake db:create bundle exec rake db:migrate bundle exec rake db:seed
启动web应用
bashbundle exec rake dev:webapp
启动authors应用
bashbundle exec rake dev:authors
启动books应用
bashbundle exec rake dev:books
打开网站
bashopen "http://localhost:7000"
!Books App
该应用使用的所有Docker镜像已公开发布,无需手动构建。如果要本地构建镜像,请按照以下说明操作:
构建buoyantio/booksapp镜像
bashdocker build -t buoyantio/booksapp:latest .
构建buoyantio/booksapp-traffic镜像
bashdocker build -t buoyantio/booksapp-traffic:latest traffic
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务