如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
sidekick 是一款高性能边车(sidecar)负载均衡器。通过将轻量级负载均衡器作为边车附加到每个客户端应用进程,可消除集中式负载均衡器瓶颈和DNS故障转移管理。sidekick 通过就绪API和HTTP错误返回检查服务器健康状态,自动避免将流量发送到故障服务器。
!https://raw.githubusercontent.com/minio/sidekick/master/arch_sidekick.png
演示 !https://raw.githubusercontent.com/minio/sidekick/master/sidekick-demo.gif
/minio/health/ready)和HTTP错误返回识别故障服务器拉取最新版本镜像:
bashdocker pull minio/sidekick
USAGE: sidekick [FLAGS] SITE1 [SITE2..] FLAGS: --address value, -a value 监听地址 (默认: ":8080") --health-path value, -p value 健康检查路径 --health-duration value, -d value 健康检查间隔(秒) (默认: 5) --insecure, -i 禁用TLS证书验证 --log , -l 启用日志 --trace, -t 启用HTTP追踪 --quiet 禁用控制台消息 --json 以JSON格式输出日志和追踪 --debug 输出详细追踪日志 --help, -h 显示帮助信息 --version, -v 打印版本信息 SITE: 每个SITE是用逗号分隔的同一站点的服务器组,例如:http://172.17.0.{2...5},http://172.17.0.{6...9} 当SITE1中所有服务器均故障时,流量将路由到下一个站点(如SITE2)。多个站点之间用空格分隔。
基于DNS解析IP的Web服务负载均衡
bashsidekick --health-path=/ready http://myapp.myorg.dom
4个MinIO服务器负载均衡([] 至 []
bashsidekick --health-path=/minio/health/ready --address :8000 http://minio{1...4}:9000
两个站点(每个站点4台服务器)
bashsidekick --health-path=/minio/health/ready http://site1-minio{1...4}:9000 http://site2-minio{1...4}:9000
在Kubernetes环境中,将sidekick作为Spark Driver和Executor的边车容器,为MinIO分布式集群提供本地负载均衡。
前提条件
配置Spark Orchestrator
bash# 创建命名空间(可选) kubectl create ns spark-operator # 添加Helm仓库并安装Spark Operator helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator helm install spark-operator incubator/sparkoperator --namespace spark-operator --set sparkJobNamespace=spark-operator --set enableWebhook=true
安装MinIO分布式集群
bashhelm install minio-distributed stable/minio --namespace spark-operator \ --set accessKey=minio,secretKey=minio123 \ --set persistence.enabled=false,mode=distributed
注意:测试环境中禁用了持久化,生产环境需使用PV启用持久化存储。详细配置参见https://github.com/helm/charts/tree/master/stable/minio%E3%80%82
在K8s中运行Spark作业
创建Spark作业配置文件spark-job.yaml:
yamlapiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-minio-app namespace: spark-operator spec: sparkConf: spark.kubernetes.allocation.batch.size: "50" hadoopConf: "fs.s3a.endpoint": "http://127.0.0.1:9000" "fs.s3a.access.key": "minio" "fs.s3a.secret.key": "minio123" "fs.s3a.path.style.access": "true" "fs.s3a.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem" type: Scala sparkVersion: 2.4.5 mode: cluster image: minio/spark:v2.4.5-hadoop-3.1 imagePullPolicy: Always restartPolicy: type: OnFailure onFailureRetries: 3 onFailureRetryInterval: 10 onSubmissionFailureRetries: 5 onSubmissionFailureRetryInterval: 20 mainClass: org.apache.spark.examples.JavaWordCount mainApplicationFile: "local:///opt/spark/examples/target/original-spark-examples_2.11-2.4.6-SNAPSHOT.jar" arguments: - "s3a://mytestbucket/mydata" driver: cores: 1 coreLimit: "1000m" memory: "512m" labels: version: 2.4.5 sidecars: - name: minio-lb image: "minio/sidekick:v0.5.8" imagePullPolicy: Always args: ["--health-path", "/minio/health/ready", "--address", ":9000", "http://minio-distributed-{0...3}.minio-distributed-svc.spark-operator.svc.cluster.local:9000"] ports: - containerPort: 9000 executor: cores: 1 instances: 4 memory: "512m" labels: version: 2.4.5 sidecars: - name: minio-lb image: "minio/sidekick:v0.5.8" imagePullPolicy: Always args: ["--health-path", "/minio/health/ready", "--address", ":9000", "http://minio-distributed-{0...3}.minio-distributed-svc.spark-operator.svc.cluster.local:9000"] ports: - containerPort: 9000
提交作业并查看日志:
bashkubectl create -f spark-job.yaml kubectl logs -f --namespace spark-operator spark-minio-app-driver spark-kubernetes-driver
sidekick支持配置S3兼容对象存储作为共享缓存,提升热点数据访问性能。缓存通过环境变量配置,适用于需要共享缓存的分布式应用场景。
缓存配置环境变量
| 环境变量 | 描述 | 示例值 |
|---|---|---|
| SIDEKICK_CACHE_ENDPOINT | S3兼容对象存储端点 | [] 或 [] |
| SIDEKICK_CACHE_ACCESS_KEY | 访问密钥 | minio |
| SIDEKICK_CACHE_SECRET_KEY | 密钥 | minio123 |
| SIDEKICK_CACHE_BUCKET | 缓存存储桶名称 | cache01 |
| SIDEKICK_CACHE_MIN_SIZE | 缓存最小对象大小 | 32MiB(支持单位:B, KiB, MiB, GiB等) |
| SIDEKICK_CACHE_HEALTH_DURATION | 缓存健康检查间隔(秒) | 20 |
K8s中配置S3缓存的Spark作业示例
yaml# 部分配置(完整配置参考上文Spark作业示例,仅展示sidecar部分差异) sidecars: - name: minio-lb image: "minio/sidekick:v0.5.8" imagePullPolicy: Always args: ["--health-path", "/minio/health/ready", "--address", ":9000", "http://minio-distributed-{0...3}.minio-distributed-svc.spark-operator.svc.cluster.local:9000"] env: - name: SIDEKICK_CACHE_ENDPOINT value: "https://minio-remote:9000" - name: SIDEKICK_CACHE_ACCESS_KEY value: "minio" - name: SIDEKICK_CACHE_SECRET_KEY value: "minio123" - name: SIDEKICK_CACHE_BUCKET value: "cache01" - name: SIDEKICK_CACHE_MIN_SIZE value: "32MiB" - name: SIDEKICK_CACHE_HEALTH_DURATION value: "20" ports: - containerPort: 9000
S3缓存特性
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务