使用P2P加速鏡像拉取
P2P加速利用計算節(jié)點的內(nèi)網(wǎng)帶寬資源,在節(jié)點之間分發(fā)鏡像。您可以在注冊集群中使用P2P加速功能提升鏡像拉取速度,減少應(yīng)用部署時間。本文介紹如何在注冊集群中使用P2P加速鏡像拉取。
前提條件
已創(chuàng)建容器鏡像服務(wù)企業(yè)版實例,且您創(chuàng)建的企業(yè)版實例必須為標準版或高級版。更多信息,請參見創(chuàng)建企業(yè)版實例。
已創(chuàng)建注冊集群,并將自建Kubernetes集群接入注冊集群。具體操作,請參見創(chuàng)建注冊集群。
步驟一:為P2P加速組件配置RAM權(quán)限
通過onectl配置
在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
執(zhí)行以下命令,為P2P加速組件配置RAM權(quán)限。
onectl ram-user grant --addon ack-acr-acceleration-p2p
預(yù)期輸出:
Ram policy ack-one-registered-cluster-policy-ack-acr-acceleration-p2p granted to ram user ack-one-user-ce313528c3 successfully.
通過控制臺配置
在注冊集群中安裝組件前,您需要在集群中配置AccessKey來訪問云服務(wù)。配置AccessKey前,您需要創(chuàng)建RAM用戶并為其添加訪問相關(guān)云資源的權(quán)限。
創(chuàng)建RAM用戶。具體操作,請參見創(chuàng)建RAM用戶。
創(chuàng)建自定義權(quán)限策略,策略內(nèi)容如下。具體操作,請參見創(chuàng)建自定義權(quán)限策略。
{ "Version": "1", "Statement": [ { "Action": [ "cr:ListInstanceEndpoint", "cr:GetInstanceVpcEndpoint" ], "Resource": "*", "Effect": "Allow" } ] }
為RAM用戶添加權(quán)限。具體操作,請參見為RAM用戶授權(quán)。
為RAM用戶創(chuàng)建AccessKey。具體操作,請參見獲取AccessKey。
使用AccessKey在注冊集群中創(chuàng)建名為alibaba-addon-secret的Secret資源。執(zhí)行以下命令創(chuàng)建組件使用的Secret。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<ACCESSKEY_ID>' --from-literal='access-key-secret=<ACCESSKEY_SECRET>'
說明<ACCESSKEY_ID>
和<ACCESSKEY_SECRET>
為上一步獲取的AccessKey信息。
步驟二:獲取企業(yè)版實例ID
在頂部菜單欄,選擇所需地域。
在左側(cè)導(dǎo)航欄,選擇實例列表。
在實例列表頁面單擊目標企業(yè)版實例。
在概覽頁面左上角查看容器鏡像實例ID。
步驟三:安裝P2P加速組件
通過onectl安裝
執(zhí)行以下命令,安裝P2P加速組件。
onectl addon install ack-acr-acceleration-p2p --set region=cn-zhangjiakou,acrInstances=****,pullImageInternet=true
參數(shù) | 是否必選 | 說明 |
region | 是 | 容器鏡像實例所在的地域ID。 |
acrInstances | 是 | 容器鏡像實例ID。 |
pullImageInternet | 否 | 組件鏡像是否從公網(wǎng)拉取。 |
預(yù)期輸出:
Addon ack-acr-acceleration-p2p, version **** installed.
安裝組件時,可根據(jù)實際需求添加以下參數(shù)配置。
根據(jù)節(jié)點磁盤容量適當(dāng)調(diào)整registry-mirror緩存數(shù)據(jù)的保留時間,默認24h。
set p2p.plusMode.cacheTTL=<custom time>
設(shè)置registry-mirror緩存數(shù)據(jù)保留的宿主機路徑。若不設(shè)置,緩存在registry-mirror容器重啟時會丟失。
set p2p.plusMode.cacheHostPath=<host path>
回源下載時切換到OSS的公網(wǎng)傳輸加速鏈路,適用于公網(wǎng)跨海、跨地域等公網(wǎng)鏈路不穩(wěn)定的場景。使用此功能,需確保已在OSS控制臺開啟該加速能力。
set p2p.plusMode.ossInternetAccelerate=true
設(shè)置節(jié)點上的P2P Agent直接從registry-mirror或者云上registry下載,此時不會安裝P2P加速組件。
set p2p.plusMode.downloadPattern=source
部署Scheduler和registry-mirror到指定的節(jié)點上,需要首先為指定的節(jié)點打上標簽
k8s.aliyun.com/p2p-plus-node=true
set p2p.plusMode.nodeSelectorEnable=true
通過控制臺安裝
登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇 。
在應(yīng)用目錄頁面,搜索P2P加速組件ack-acr-acceleration-p2p,找到并單擊ack-acr-acceleration-p2p。
在頁面右上角,單擊一鍵部署。
在創(chuàng)建面板中,選擇集群和命名空間,然后單擊下一步,選擇Chart版本為最新版本。
在參數(shù)配置頁面,設(shè)置acrInstances參數(shù)為上文獲取的容器鏡像實例ID。如果有多個容器鏡像實例,在設(shè)置acrInstances參數(shù)時,實例之間使用英文半角逗號(,)隔開。
說明默認占用節(jié)點上的65001端口,如果有沖突,請根據(jù)實際情況修改。
# [Required] # ID of ACR EE instances, support multi, e.g. "cri-xxx,cri-yyy" acrInstances: "" p2p: ... # Port of P2P Agent in host network port: 65001
可選:使用ratelimit參數(shù)配置節(jié)點上P2P組件的總帶寬限制(包括下行和上行帶寬),默認512 MB/s,請根據(jù)您的節(jié)點帶寬適當(dāng)調(diào)整。
p2p: # Total net rate limit (MBytes/s) for uploading and downloading ratelimit: "512M"
單擊確定。
步驟四:啟用P2P加速
您可以通過為應(yīng)用或命名空間添加標簽的方式啟用P2P加速。根據(jù)實際情況選擇任一方式添加P2P加速標簽。
為應(yīng)用添加P2P加速標簽,例如Pod、Deployment等。
為集群的命名空間設(shè)置P2P加速標簽。為命名空間設(shè)置P2P加速標簽后,該命名空間內(nèi)的所有符合加速條件的應(yīng)用均啟用P2P加速,無需再修改應(yīng)用的YAML文件。
為應(yīng)用添加P2P加速標簽
執(zhí)行以下命令,編輯Deployment文件。
kubectl edit deploy <Deployment名稱>
在Deployment文件中添加標簽
k8s.aliyun.com/image-accelerate-mode: p2p
。apiVersion: apps/v1 kind: Deployment metadata: name: test labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: # enable P2P k8s.aliyun.com/image-accelerate-mode: p2p app: nginx spec: # your ACR instance image pull secret imagePullSecrets: - name: test-registry containers: # your ACR instance image - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/docker-builder/nginx:latest name: test command: ["sleep", "3600"]
為命名空間添加P2P加速標簽
執(zhí)行以下命令,為命名空間添加P2P加速標簽。
kubectl label namespaces <your-namespace> k8s.aliyun.com/image-accelerate-mode=p2p
步驟五:驗證P2P加速
啟用P2P加速后,P2P組件會自動為Pod注入P2P相關(guān)Annotation、P2P加速鏡像地址以及對應(yīng)的鏡像拉取憑證。
若您應(yīng)用的YAML中不存在ACR企業(yè)版實例的鏡像,或者未配置對應(yīng)的非P2P加速域名地址的鏡像拉取憑證,P2P組件會跳過Pod的自動注入。
P2P鏡像拉取憑證與您之前配置的非P2P鏡像地址拉取憑證僅鏡像倉庫域名不同,其他憑證信息一致。因此,若您之前鏡像拉取憑證的用戶信息配置錯誤,也會導(dǎo)致P2P鏡像拉取失敗。
執(zhí)行以下命令,查看Pod。
kubectl get po <Pod的名稱> -o yaml
預(yù)期輸出:
apiVersion: v1
kind: Pod
metadata:
annotations:
# inject p2p-annotations automatically
k8s.aliyun.com/image-accelerate-mode: p2p
k8s.aliyun.com/p2p-config: '...'
spec:
containers:
# inject image to p2p endpoint
- image: test-registry.distributed.cn-hangzhou.cr.aliyuncs.com:65001/docker-builder/nginx:latest
imagePullSecrets:
- name: test-registry
# inject image pull secret for p2p endpoint
- name: acr-credential-test-registry-p2p
預(yù)期輸出表明,Pod已注入P2P相關(guān)的Annotation、P2P加速鏡像地址以及對應(yīng)的鏡像拉取憑證,說明P2P加速啟用成功。
相關(guān)操作
更新P2P加速組件參數(shù)
執(zhí)行以下命令,根據(jù)實際需求更新P2P加速組件的相關(guān)參數(shù)。
onectl addon upgrade ack-acr-acceleration-p2p --set p2p.plusMode.cacheTTL=72h
卸載P2P加速組件
如您無需使用P2P加速組件時,可通過onectl或控制臺兩種方式卸載組件。
通過onectl卸載
執(zhí)行以下命令,卸載P2P加速組件。
onectl addon uninstall ack-acr-acceleration-p2p
預(yù)期輸出:
Addon ack-acr-acceleration-p2p uninstalled.
通過控制臺卸載
登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
找到ack-acr-acceleration-p2p組件,單擊右側(cè)操作列下的刪除。
在提示對話框,單擊確認。