最近更新时间:2024-09-02 19:18:06
本文主要包括在容器服务中使用 P2P 加速的场景说明、操作流程和注意事项。
在容器化业务场景中,当应用程序镜像动辄数GB乃至数十GB以上时,节点下载镜像往往需要耗费较长的时间。由于容器镜像仓库采用集中式管理,集群内的所有节点都必须从该仓库中拉取所需镜像。在集群规模庞大且需应对高并发弹性需求时,若多个节点同时向镜像仓库发起拉取请求,那么仓库的网络带宽极易成为性能的瓶颈,进而导致镜像拉取速度的下降。采用P2P加速技术,可以有效利用节点间的内网带宽进行镜像分发,从而减轻对容器镜像仓库的拉取压力,提升整体部署效率。
整个架构主体分三块,分别是金山云控制台、KCR集群以及用户容器集群。
启用P2P镜像加速方案前,用户集群访问镜像仓库的方式为:镜像仓库KCR部署端安装PrivateLink服务端,用户集群KCE侧安装PrivateLink客户端,用户集群侧可以通过这种方式访问到位于不同VPC的镜像仓库服务。
启用P2P镜像加速方案后,用户集群对镜像的拉取请求,会先到达P2P加速方案部署在节点上的Dfdaemon组件,由此触发P2P下载任务;镜像P2P下载在大规模用户集群中能发挥较大的作用,加快镜像拉取效率,具有减少公网流量,增加内网使用效率的优势。
已创建容器服务(KCE)集群。详细操作,请参见 创建集群。
已创建容器镜像服务(KCR)实例。详细操作,请参见 实例管理。
已创建虚拟私有网络(VPC),用于设置 P2P 加速的可访问范围。详细操作,请参见 创建虚拟私有网络。
注意:目前P2P加速功能仅在西北4(海东)地域支持。
登录 容器镜像服务控制台。
在顶部导航栏,选择目标地域。
在左侧导航栏单击 实例列表,然后在 实例列表 区域中找到需要开启 P2P 加速的目标容器镜像服务实例,单击后进入该实例。
在实例页面左侧导航栏选择 分发加速 > P2P 加速。
在 P2P 加速 页面,单击 配置VPC范围,配置 P2P 加速参数。
选择好对应的VPC范围,单击 确定,开启 P2P 加速功能。
参数 | 说明 |
VPC 范围 | 选择 P2P 加速功能的私有网络,此私有网络范围内的容器服务集群节点,可使用该容器镜像服务实例的 P2P 加速功能。
|
登录 容器服务控制台。
在顶部导航栏,选择目标地域。
在左侧导航栏单击 集群。
在集群列表,单击需要使用 P2P 加速的目标集群名称。
在集群管理页面的左侧导航栏中,选择 组件管理。
单击 p2p-accelerator组件名称或未安装状态,在组件实例页签点击安装。
根据系统提示,配置 P2P 加速功能。
单击 确定,安装完成组件。在组件实例列表中可查看组件有关信息。
组件完成安装后,去对应的namesapce下查看名为p2p-accelerator的daemonset是否已就绪。
参数 | 说明 |
命名空间 | 用户选择集群支持的命名空间。 |
所属项目 | 用户选择镜像仓库实例的所属项目。 |
镜像仓库实例 | 选择上方 步骤一 中开启 P2P 加速的镜像仓库实例。
|
参数 | 根据提示配置有关参数。
|
常用参数说明:
配置 | 说明 | 备注 | 默认值 |
dfdaemon.mountDataDirAsHostPath | 是否自定义存储路径,若不自定义则默认使用emptydir存储镜像数据,随pod删除释放;如果需要持久化,配合dfdaemon.config.dataDir使用 | 没有特别的要求,可不修改 | false |
dfdaemon.config.dataDir | 指定存储路径,如果dfdaemon.mountDataDirAsHostPath为true的话,会在宿主机的该路径下创建目录;方便使用时适配持久化挂载。 | 没有特别的要求,可不修改 | "/var/lib/dragonfly" |
dfdaemon.config.download.totalRateLimit | 单个dfdaemon组件的限速 | 一般使用默认值,如果集群规模较大,且担心其他业务的网络通信受影响,可以适当调小。 | 2000Mi |
dfdaemon.config.upload.rateLimit | dfdaemon之间上传数据的限速 | 一般使用默认值。同上。 | 1000Mi |
dfdaemon.config.storage.taskExpireTime | 一次下载任务的过期时间(镜像数据在底层保留多久) | 一般使用默认值,如果希望任务保留时间长一点,可调大。 | 6h |
dfdaemon.config.storage.diskGCThreshold | 存储清理的界限值(如果磁盘整体容量低于这个界限了,dfdaemon就会清理过去的下载任务来释放空间) | 根据需要进行修改(如果磁盘容量较大,可以调整到高一点得界限值) | 50Gi |
dfdaemon.config.proxy.registryMirror.url | 一般情况下,该链接的域名和kcr仓库的内网域名应该保持一致 | 按照实际情况填写 | https://hub.kce.ksyun.com |
注意:当用户开启某VPC的P2P加速功能,并进入指定VPC的集群内安装P2P组件后,若后续在KCR控制台关闭了该VPC的P2P加速功能后重新开启,将导致该VPC下集群的P2P加速功能不可用。针对此状况,用户需要在指定VPC的集群内重新安装P2P组件才可使P2P加速功能重新生效。
yaml文件示例:
拉取镜像为 tensorflow
KCR实例的内网域名为 lijin-vpc.ksyunkcr.com
apiVersion: apps/v1
kind: DaemonSet
metadata:
namespace: ns-test
name: tensor-deployment
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
dnsPolicy: ClusterFirst
tolerations:
- operator: "Exists"
containers:
- name: nginx
image: lijin-vpc.ksyunkcr.com/wangqu/tensorflow:latest
ports:
- containerPort: 80
imagePullPolicy: Always
apiVersion: apps/v1
kind: DaemonSet
metadata:
namespace: ns-test
name: p2p-tensor-deployment
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
dnsPolicy: ClusterFirst
tolerations:
- operator: "Exists"
containers:
- name: nginx
image: p2p-lijin-vpc.ksyunkcr.com/wangqu/tensorflow:latest
ports:
- containerPort: 80
imagePullPolicy: Always
注意:
拉取镜像时,需保证节点存储容量>镜像大小,否则镜像拉取失败。若需使用数据盘存储,则需保证数据盘挂载至指定路径。
使用镜像加速,注意需要在原仓库域名前加上p2p-的前缀,否则未生效加速功能。
登录KCR控制台,开启 P2P 加速后,您还可以单击配置 VPC 范围,从而修改当前实例下已开启P2P加速功能的私有网络范围,或者删除全部VPC以关闭 P2P 加速功能。
注意:修改 P2P 加速的私有网络范围,会影响可访问和使用该 P2P 加速功能的容器服务集群范围。请确认后再操作。
如果在KCR控制台关闭了P2P加速功能,会影响已使用该功能的容器服务集群,且集群中的 p2p-accelerator 不再生效,需要用户自行卸载。
在已安装p2p-accelerator组件的前提下,登录KCE控制台,进入目标集群,在集群管理页面的左侧导航栏中,选择 组件管理,进入p2p-accelerator的组件实例页签,点击删除,在出现删除实例的提示弹窗后点击确定,成功卸载p2p-accelerator组件。
注意:卸载p2p-accelerator组件会影响KCR中P2P加速功能将不可用,请谨慎操作。
纯净模式