本文介绍 P2P 加速功能的基本概念、配置方法、使用方法以及故障排查。 什么是 P2P 加速
在镜像拉取流程中,所有镜像的数据流量都从服务器中统一拉取。当几十台 ECS 同时拉取镜像时,我们提供的服务器可以提供顺畅的拉取能力。但当您的集群达到几百台甚至几千台的规模时,服务器的带宽限制会制约您分发镜像的时间。
镜像服务企业版提供了 P2P 加速的能力,可以在大规模容器集群批量下载镜像的场景中,提升容器镜像分发能力,享受极速镜像拉取速度,减少应用部署时间。 说明
当集群规模达到 300 节点以上时,使用效果会更佳。
推荐使用多可用区 vswitch 打散集群 ECS 节点。
推荐使用本地 SSD 或者可分配内存较大的 ECS 实例。
当集群规模较小或可分配内存不足时,可能不会起到加速的效果。
配置 P2P 加速插件
当前 P2P 加速插件可以支持 Kubernetes、多可用区 Kubernetes 集群、Kubernetes 托管版,暂不支持 Serverless Kubernetes。
以下流程需要在 Linux/Mac 环境下运行,依赖于 kubectl 的方式连接到 Kubernetes 集群。如果您可以在命令行中执行kubectl get pod,并看到返回结果,则说明当前环境可以正常安装插件。
推荐您通过 SSH 登录到集群内任意节点进行操作,如果是 Worker 节点,请先参考通过 kubectl 连接 Kubernetes 集群 ,完成环境中 kubectl 配置。
建议通过配置 dockerd 的 max-concurrent-downloads 字段至适当数值以提升镜像拉取效率,默认值为 3 层,可以提升至 5 至 20 层。详细信息请参考Docker官网文档。
具体的安装脚本因实例而异,请登录镜像服务企业版控制台,P2P 加速一页中进行查看。 使用 P2P 方式拉取镜像
您需要通过带有 distributed 字样的域名拉取镜像,您可以在 P2P 加速一页中 通过《安装脚本安装P2P加速》章节中进行查看,域名例如hello-df-registry-vpc.distributed.cn-hangzhou.cr.aliyuncs.com:65002 。
默认情况下,该 P2P 域名会带有 65002 端口,当您希望使用 443 端口访问时,您可以在安装 P2P 加速的时候指定export PORT="443"来指定想要的端口。请注意,该端口默认会在所有节点上被默认占用。
在拉取镜像之前,您需要登录该镜像仓库,例如docker login hello-df-registry-vpc.distributed.cn-hangzhou.cr.aliyuncs.com:65002。拉取镜像时,您可以通过 docker pull 或者 kubernetes 集群启动应用的方式。例如您希望拉取 foo 命名空间下 bar 的镜像仓库,您可以使用docker pull hello-df-registry-vpc.distributed.cn-hangzhou.cr.aliyuncs.com:65002/foo/bar。
通过 P2P 方式拉取镜像时,镜像层数据会在后台预先下载完毕,再传输给 Docker Engine。因此镜像拉取的前半段时间,进度条会保持静止状态,后半段时间,进度条会瞬间达到100%。 性能指标
300 节点 ecs.i2.xlarge 4C32G 本地 SSD ECS,并发拉取 4 层每层 512 MB 的镜像时,对比非 P2P 加速模式下减少 80% 的数据拉取时间。 故障排查
运行以下命令可以列出当前 P2P 加速插件的所有 Pod:
kubectl get pod -n cr-dfagent -o wide
如果 Pod 数量与 Worker 节点数量不一致:
检查未调度 Pod 节点上是否有 taints 影响 DaemonSet 的调度。
尝试重新安装 P2P 加速插件。
如果部分 Pod 出现 CrashLoopBackOff 异常状态时,可以通过 kubectl logs 命令查看失败的 Pod 的日志。
kubectl -n cr-dfagent logs -f POD_NAME df-agent
kubectl -n cr-dfagent logs -f POD_NAME df-nginx
如果无法解决,请提交工单处理。
你可以看下这篇文章, 或许会对你有帮助 【本文介绍 P2P 加速功能的基本概念、配置方法、使用方法以及故障排查。】 https://www.alibabacloud.com/help/zh/doc-detail/120603.htm
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。