本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
您可以在ACK Edge集群中使用P2P加速功能提升镜像拉取速度,减少应用部署时间。本文介绍如何在集群中安装P2P加速套件。
前提条件
- 创建容器镜像服务ACR企业版实例,且创建的企业版实例需为标准版或高级版。具体操作,请参见创建企业版实例。 
- 已创建ACK Edge集群,且集群为1.26.3及以上版本。 
- 已在ACR企业版实例中配置ACK Edge集群对应的专有网络。具体操作,请参见配置专有网络的访问控制。 
- 如需在边缘节点中使用,您需要提前创建专用网络型边缘节点池,且要求边缘节点池内节点间网络互通。 
步骤一:获取ACR企业版实例ID并开启P2P模块
- 登录容器镜像服务控制台。 
- 在顶部菜单栏,选择所需地域。 
- 在左侧导航栏,选择实例列表。 
- 在实例列表页面单击目标企业版实例。 
- 在概览页面,记录实例ID并打开组件设置板块下的P2P加速按钮,然后在弹出的对话框中单击确定。 警告- 关闭P2P加速组件前需要停止使用P2P功能,并从所有安装使用P2P组件的集群中卸载P2P组件,重新开启该功能需要重新安装P2P组件。  
步骤二:安装P2P组件并授予其ACR企业版实例的访问权限
您可以通过以下三种方式授予P2P组件对ACR企业版实例的访问权限。
- 使用Worker RAM角色进行授权并安装:ACR企业版实例与ACK Edge集群属于同一个阿里云账号。 
使用Worker RAM角色进行授权并安装
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息。 
- 在集群信息页面,选择基本信息页签,在集群资源区域,复制Worker RAM角色右侧的名称,并单击链接进入RAM访问控制控制台为该Worker RAM角色授权。 
- 登录容器服务管理控制台,在左侧导航栏选择。 
- 在应用目录页面下方搜索框内输入ack-acr-acceleration-p2p,找到该组件,单击该组件卡片。 
- 在组件详情页面,单击右上角的一键部署。 
- 在创建面板中,选择集群和命名空间,设置发布名称,单击下一步。 
- 在参数配置面板,选择Chart版本为最新版本,设置acrInstances参数为上文获取的容器镜像实例ID。如果有多个容器镜像实例,在设置acrInstances参数时,实例之间使用英文半角逗号(,)隔开。 说明- 默认占用节点上的65001端口,如果有冲突,请根据实际情况修改。 
- 当ACK Edge集群与ACR企业版实例处于同一地域时,参数 - region和- vpcId可以留空;若ACK Edge集群与ACR企业版实例处于不同地域时,- region需设置为ACR企业版实例所在的地域,- vpcId需设置为ACR企业版实例所绑定的VPC ID。
- 在ACK Edge集群中使用P2P时,您需要在 - edgeNodePool.id参数中配置节点池的ID信息(例如- npxyzxxxxxxxxx),待配置的节点池需为云端节点池或者节点间网络互通的专用网络型边缘节点池,P2P能力将会在指定的节点池生效;如果未配置该参数,P2P能力会在所有的边缘节点生效(需要保障边缘节点已通过专线打通ACR企业版实例的专有网络,且边缘节点间网络互通)。
 - # ID of ACR EE instances, support multi, e.g. "cri-xxx,cri-yyy" acrInstances: "" # Region of ACR EE instance, default is the region of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster. region: "" # VPC which is connected to the VPC network of the ACR EE instance, default is the VPC of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster through VPC network. vpcId: "" # [Optional] (when the cluster type is ACK Edge, this parameter can be set) # ID (NOT NAME!!!) of the edge nodepool , for example "np8b6aaa89e93a44b5b54180898247****". # If edgeNodePool.id is set, it is used to deploy p2p agents into the specified nodepool, # otherwise, it will be deployed into all edge nodepools. edgeNodePool: id: "" p2p: # Port of P2P Agent in host network port: 65001
使用RAM用户的AK及SK进行授权并安装
- 创建RAM用户。具体操作,请参见创建RAM用户。 
- 为RAM用户添加如下权限,并查看访问密钥。具体操作,请参见查看RAM用户的AccessKey信息。 - { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }
- 登录容器服务管理控制台,在左侧导航栏选择。 
- 在应用目录页面下方搜索框内输入ack-acr-acceleration-p2p,找到该组件,单击该组件卡片。 
- 在组件详情页面,单击右上角的一键部署。 
- 在创建面板中,选择集群和命名空间,设置发布名称,单击下一步。 
- 在参数配置面板,选择Chart版本为最新版本,设置acrInstances参数为上文获取的容器镜像实例ID。如果有多个容器镜像实例,在设置acrInstances参数时,实例之间使用英文半角逗号(,)隔开。 说明- 默认占用节点上的65001端口,如果有冲突,请根据实际情况修改。 
- 当ACK Edge集群与ACR企业版实例处于同一地域时,参数 - region和- vpcId可以留空;若ACK Edge集群与ACR企业版实例处于不同地域时,- region需设置为ACR企业版实例所在的地域,- vpcId需设置为ACR企业版实例所绑定的VPC ID。
- 在ACK Edge集群中使用P2P时,您需要在 - edgeNodePool.id参数中配置节点池的ID信息(例如- npxyzxxxxxxxxx),待配置的节点池需为云端节点池或者节点间网络互通的专用网络型边缘节点池,P2P能力将会在指定的节点池生效;如果未配置该参数,P2P能力会在所有的边缘节点生效(需要保障边缘节点已通过专线打通ACR企业版实例的专有网络,且边缘节点间网络互通)。
 - # ID of ACR EE instances, support multi, e.g. "cri-xxx,cri-yyy" acrInstances: "" # Please fill in the following parameters if the K8s cluster is built in your own IDC accessKey: "" accessKeySecret: "" # Region of ACR EE instance, default is the region of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster. region: "" # VPC which is connected to the VPC network of the ACR EE instance, default is the VPC of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster through VPC network. vpcId: "" # [Optional] (when the cluster type is ACK Edge, this parameter can be set) # ID (NOT NAME!!!) of the edge nodepool , for example "np8b6aaa89e93a44b5b54180898247****". # If edgeNodePool.id is set, it is used to deploy p2p agents into the specified nodepool, # otherwise, it will be deployed into all edge nodepools. edgeNodePool: id: "" p2p: # Port of P2P Agent in host network port: 65001
使用RRSA进行授权并安装
基于适用于服务账户的RAM角色(RAM Roles for Service Accounts,简称RRSA)功能,可以在集群内为组件实现Pod维度的权限隔离。
- 开启RRSA功能需要将组件升级到v0.3.6或以上版本。 
- 启用P2P组件的RRSA功能首先需要在集群基本信息中启用RRSA,再进行P2P组件的RRSA的相关配置。若操作顺序不对,在配置完成后,需要卸载P2P组件并重新安装,RRSA功能才会生效。 
- 启用集群的RRSA功能。具体操作,请参见通过RRSA配置ServiceAccount的RAM权限实现Pod权限隔离。 
- 配置RAM角色的容器镜像服务ACR的资源访问权限。 - 若ACR企业版实例与ACK集群属于同一阿里云账号。 - 例如A用户为ACK集群和ACR企业版实例的所有者,在A用户中创建RAM角色。具体操作,请参见创建可信实体为阿里云账号的RAM角色。并添加如下权限策略。 - { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }- { "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "oidc:aud": [ "sts.aliyuncs.com" ], "oidc:iss": "<oidc_issuer_url>", "oidc:sub": [ "system:serviceaccount:aliyun-acr-acceleration:ack-acr-acceleration-p2p-job-sa", "system:serviceaccount:aliyun-acr-acceleration:ack-acr-acceleration-p2p-sa" ] } }, "Effect": "Allow", "Principal": { "Federated": [ "<oidc_provider_arn>" ] } } ], "Version": "1" }
- 若ACR企业版实例与ACK集群属于不同的阿里云账号。 - 例如A用户为ACK集群所有者,B用户为ACR企业版实例所有者,现在需要授权A用户的ACK集群具备访问B用户的容器镜像服务ACR资源的权限。 - 在A用户中创建RAM角色。具体操作,请参见创建可信实体为阿里云账号的RAM角色。添加AliyunSTSAssumeRoleAccess权限策略,授予这个角色具有角色扮演的权限。并修改其信任策略。 - { "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "oidc:aud": [ "sts.aliyuncs.com" ], "oidc:iss": "<oidc_issuer_url>", "oidc:sub": [ "system:serviceaccount:aliyun-acr-acceleration:ack-acr-acceleration-p2p-job-sa", "system:serviceaccount:aliyun-acr-acceleration:ack-acr-acceleration-p2p-sa" ] } }, "Effect": "Allow", "Principal": { "Federated": [ "<oidc_provider_arn>" ] } } ], "Version": "1" }- 在B用户中创建一个用户ACR相关权限的角色,选择信任策略,添加A用户角色ARN。对B用户的角色添加如下权限策略,授予这个角色如下权限。 - { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }说明- 该RAM角色可以设置角色最大会话时间,可设置时间范围为3600秒到43200秒,而角色会话时间在下文的配置项中的expireDuration也需要设置。推荐此处取值的设置和配置项的expireDuration的值一致。允许expireDuration小于等于角色最大会话时间。 
 
- 登录容器服务管理控制台,在左侧导航栏选择。 
- 在应用目录页面下方搜索框内输入ack-acr-acceleration-p2p,找到该组件,单击该组件卡片。 
- 在组件详情页面,单击右上角的一键部署。 
- 在创建面板中,选择集群和命名空间,设置发布名称,单击下一步。 
- 在参数配置面板,选择Chart版本为最新版本,设置acrInstances参数为上文获取的容器镜像实例ID。如果有多个容器镜像实例,在设置acrInstances参数时,实例之间使用英文半角逗号(,)隔开。 - 按照如下表格填入RRSA相关配置项。 - 参数 - 说明 - 值 - rrsa.enable - 是否开启RRSA。 - true - rrsa.rrsaRoleARN - 上文中A用户创建的角色的ARN。 - acs:ram::aaa - rrsa.rrsaOIDCProviderRoleARN - 上文中A用户ACK控制台集群基本信息中的提供商ARN。 - acs:ram::bbb - rrsa.assumeRoleARN - 上文中B用户创建的角色的ARN。同账号场景不需要填写 - acs:ram::ccc - rrsa.expireDuration - 上文中B用户创建的角色的会话时间,等同于免密组件生成的临时凭证的有效期。同账号场景不填。 重要- expireDuration的值不应大于B用户创建角色的最大会话时间。 - 默认为3600。取值区间为3600~43200,单位为秒。 - 同时需要将B用户创建角色的最大会话时间调整为43200。 说明- 默认占用节点上的65001端口,如果有冲突,请根据实际情况修改。 
- 当ACK Edge集群与ACR企业版实例处于同一地域时,参数 - region和- vpcId可以留空;若ACK Edge集群与ACR企业版实例处于不同地域时,- region需设置为ACR企业版实例所在的地域,- vpcId需设置为ACR企业版实例所绑定的VPC ID。
- 在ACK Edge集群中使用P2P时,您需要在 - edgeNodePool.id参数中配置节点池的ID信息(例如- npxyzxxxxxxxxx),待配置的节点池需为云端节点池或者节点间网络互通的专用网络型边缘节点池,P2P能力将会在指定的节点池生效;如果未配置该参数,P2P能力会在所有的边缘节点生效(需要保障边缘节点已通过专线打通ACR企业版实例的专有网络,且边缘节点间网络互通)。
 - # ID of ACR EE instances, support multi, e.g. "cri-xxx,cri-yyy" acrInstances: "" rrsa: enable: true rrsaRoleARN: "" rrsaOIDCProviderRoleARN: "" assumeRoleARN: "" expireDuration: 3600 # Region of ACR EE instance, default is the region of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster. region: "" vpcId: "" # [Optional] (when the cluster type is ACK Edge, this parameter can be set) # ID (NOT NAME!!!) of the edge nodepool , for example "np8b6aaa89e93a44b5b54180898247****". # If edgeNodePool.id is set, it is used to deploy p2p agents into the specified nodepool, # otherwise, it will be deployed into all edge nodepools. edgeNodePool: id: "" p2p: # Port of P2P Agent in host network port: 65001