本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
您可以在ACK集群中使用P2P加速功能提升镜像拉取速度,减少应用部署时间。本文介绍如何在ACK集群中安装P2P加速套件。
前提条件
创建容器镜像服务ACR企业版实例,且创建的企业版实例需为标准版或高级版。具体操作,请参见创建企业版实例。
创建ACK集群。具体操作,请参见创建集群。
确认在容器镜像服务企业版实例中配置ACK集群对应的专有网络。具体操作,请参见配置专有网络的访问控制。
步骤一:获取容器镜像服务ACR企业版实例ID并开启P2P模块
登录容器镜像服务控制台。
在顶部菜单栏,选择所需地域。
在左侧导航栏,选择实例列表。
在实例列表页面单击目标企业版实例。
在概览页面,打开组件设置板块下的P2P加速按钮,然后在弹出的对话框中单击确定。
警告关闭P2P加速组件前需要停止使用P2P功能,并从所有安装使用P2P组件的集群中卸载P2P组件,重新开启该功能需要重新安装P2P组件。
步骤二:安装P2P组件(包含授予P2P组件相应的权限)
您可以通过以下三种方式授予P2P组件对容器镜像服务ACR企业版实例的访问权限。
使用Worker RAM角色进行授权并安装。
使用限制:容器镜像服务ACR企业版实例与ACK集群属于同一个阿里云账号。
使用RAM用户的AK及SK进行授权并安装。
使用RRSA进行授权并安装。
使用限制:仅支持在1.22及以上版本的ACK标准版以及Pro版集群。
使用Worker RAM角色进行授权并安装
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息。
在集群信息页面,选择基本信息页签,在集群资源栏中,单击Worker RAM角色右侧链接。
在RAM角色基本信息的权限管理页面,单击目标权限策略名称。确认该权限策略是否存在如下内容,若不存在,单击修改策略内容,在策略内容区域,增加如下字段,单击确定。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }
登录容器服务管理控制台,在左侧导航栏选择 。
在应用目录页面下方搜索框内输入ack-acr-acceleration-p2p,找到该组件,单击该组件卡片。
在组件详情页面,单击右上角的一键部署。
在创建面板中,选择集群和命名空间,设置发布名称,单击下一步。
在参数配置面板,选择Chart版本为最新版本,设置acrInstances参数为上文获取的容器镜像实例ID。如果有多个容器镜像实例,在设置acrInstances参数时,实例之间使用英文半角逗号(,)隔开。
# 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: "" p2p: # Port of P2P Agent in host network port: 65001
说明默认占用节点上的65001端口,如果有冲突,请根据实际情况修改。
当ACK集群与ACR企业版实例处于同一地域时,参数Region和VPC ID可以留空;若ACK集群与ACR企业版实例处于不同地域时,Region需要设置为ACR企业版实例所在的地域,VPC ID需要设置为ACR企业版实例所绑定的VPC ID。
使用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参数时,实例之间使用英文半角逗号(,)隔开,填入上文中查到的AccessKey和AccessSecret。
# 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: "" p2p: # Port of P2P Agent in host network port: 65001
说明默认占用节点上的65001端口,如果有冲突,请根据实际情况修改。
当ACK集群与ACR企业版实例处于同一地域时,参数Region和VPC ID可以留空;若ACK集群与ACR企业版实例处于不同地域时,Region需要设置为ACR企业版实例所在的地域,VPC ID需要设置为ACR企业版实例所绑定的VPC ID。
使用RRSA进行授权并安装
基于适用于服务账户的RAM角色(RAM Roles for Service Accounts,简称RRSA)功能,可以在集群内为组件实现Pod维度的权限隔离。
RRSA功能目前仅支持在1.22及以上版本的集群中使用。
开启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版本为最新版本,设置registryInstances参数为上文获取的容器镜像实例ID。如果有多个容器镜像实例,在设置registryInstances参数时,实例之间使用英文半角逗号(,)隔开。按照如下表格填入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集群与ACR企业版实例处于同一地域时,参数Region和VPC ID可以留空;若ACK集群与ACR企业版实例处于不同地域时,Region需要设置为ACR企业版实例所在的地域,VPC ID需要设置为ACR企业版实例所绑定的VPC ID。
# ID of ACR EE instances, support multi, e.g. "cri-xxx,cri-yyy" acrInstances: "" rrsa: enable: false 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: "" # 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: "" p2p: # Port of P2P Agent in host network port: 65001