P2P加速利用計算節點的內網頻寬資源,在節點之間分發鏡像。您可以在註冊叢集中使用P2P加速功能提升鏡像拉取速度,減少應用部署時間。本文介紹如何在註冊叢集中使用P2P加速鏡像拉取。
前提條件
步驟一:為P2P加速組件配置RAM許可權
通過onectl配置
在本地安裝配置onectl。具體操作,請參見通過onectl管理註冊叢集。
執行以下命令,為P2P加速組件配置RAM許可權。
onectl ram-user grant --addon ack-acr-acceleration-p2p預期輸出:
Ram policy ack-one-registered-cluster-policy-ack-acr-acceleration-p2p granted to ram user ack-one-user-ce313528c3 successfully.
通過控制台配置
在註冊叢集中安裝組件前,您需要在叢集中配置AccessKey來訪問雲端服務。配置AccessKey前,您需要建立RAM使用者並為其添加訪問相關雲資源的許可權。
建立自訂權限原則,策略內容如下。
{ "Version": "1", "Statement": [ { "Action": [ "cr:ListInstanceEndpoint", "cr:GetInstanceVpcEndpoint" ], "Resource": "*", "Effect": "Allow" } ] }為RAM使用者建立AccessKey。
警告建議您參見AccessKey網路訪問限制策略配置網路原則,將AccessKey調用來源控制在可信的網路環境內,提升AccessKey的安全性。
使用AccessKey在註冊叢集中建立名為alibaba-addon-secret的Secret資源。執行以下命令建立組件使用的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資訊。
步驟二:擷取企業版執行個體ID
在頂部功能表列,選擇所需地區。
在左側導覽列,選擇執行個體列表。
在執行個體列表頁面單擊目標企業版執行個體。
在概覽頁面左上方查看容器鏡像執行個體ID。
步驟三:安裝P2P加速組件
通過onectl安裝
執行以下命令,安裝P2P加速組件。
onectl addon install ack-acr-acceleration-p2p --set region=cn-zhangjiakou,acrInstances=****,pullImageInternet=true參數 | 是否必選 | 說明 |
region | 是 | 容器鏡像執行個體所在的地區ID。 |
acrInstances | 是 | 容器鏡像執行個體ID。 |
pullImageInternet | 否 | 組件鏡像是否從公網拉取。 |
預期輸出:
Addon ack-acr-acceleration-p2p, version **** installed.安裝組件時,可根據實際需求添加以下參數配置。
根據節點磁碟容量適當調整registry-mirror快取資料的保留時間,預設24h。
set p2p.plusMode.cacheTTL=<custom time>設定registry-mirror快取資料保留的宿主機路徑。若不設定,緩衝在registry-mirror容器重啟時會丟失。
set p2p.plusMode.cacheHostPath=<host path>回源下載時切換到OSS的公網傳輸加速鏈路,適用於公網跨海、跨地區等公網鏈路不穩定的情境。使用此功能,需確保已在OSS控制台開啟該加速能力。
set p2p.plusMode.ossInternetAccelerate=true設定節點上的P2P Agent直接從registry-mirror或者雲上registry下載,此時不會安裝P2P加速組件。
set p2p.plusMode.downloadPattern=source部署Scheduler和registry-mirror到指定的節點上,需要首先為指定的節點打上標籤
k8s.aliyun.com/p2p-plus-node=trueset p2p.plusMode.nodeSelectorEnable=true
通過控制台安裝
登入Container Service管理主控台,在左側導覽列選擇。
在應用目錄頁面,搜尋P2P加速組件ack-acr-acceleration-p2p,找到並單擊ack-acr-acceleration-p2p。
在頁面右上方,單擊一鍵部署。
在建立面板中,選擇叢集和命名空間,然後單擊下一步,選擇Chart版本為最新版本。
在參數配置頁面,設定acrInstances參數為上文擷取的容器鏡像執行個體ID。如果有多個容器鏡像執行個體,在設定acrInstances參數時,執行個體之間使用英文半形逗號(,)隔開。
說明預設佔用節點上的65001連接埠,如果有衝突,請根據實際情況修改。
# [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參數配置節點上P2P組件的總頻寬節流設定(包括下行和上行頻寬),預設512 MB/s,請根據您的節點頻寬適當調整。
p2p: # Total net rate limit (MBytes/s) for uploading and downloading ratelimit: "512M"單擊確定。
步驟四:啟用P2P加速
您可以通過為應用或命名空間添加標籤的方式啟用P2P加速。根據實際情況選擇任一方式添加P2P加速標籤。
為應用添加P2P加速標籤,例如Pod、Deployment等。
為叢集的命名空間設定P2P加速標籤。為命名空間設定P2P加速標籤後,該命名空間內的所有符合加速條件的應用均啟用P2P加速,無需再修改應用的YAML檔案。
為應用添加P2P加速標籤
執行以下命令,編輯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加速標籤
執行以下命令,為命名空間添加P2P加速標籤。
kubectl label namespaces <YOUR-NAMESPACE> k8s.aliyun.com/image-accelerate-mode=p2p步驟五:驗證P2P加速
啟用P2P加速後,P2P組件會自動為Pod注入P2P相關Annotation、P2P加速鏡像地址以及對應的鏡像拉取憑證。
若您應用的YAML中不存在ACR企業版執行個體的鏡像,或者未配置對應的非P2P加速網域名稱地址的鏡像拉取憑證,P2P組件會跳過Pod的自動注入。
P2P鏡像拉取憑證與您之前配置的非P2P鏡像地址拉取憑證僅鏡像倉庫網域名稱不同,其他憑證資訊一致。因此,若您之前鏡像拉取憑證的使用者資訊配置錯誤,也會導致P2P鏡像拉取失敗。
執行以下命令,查看Pod。
kubectl get po <Pod的名稱> -o yaml預期輸出:
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預期輸出表明,Pod已注入P2P相關的Annotation、P2P加速鏡像地址以及對應的鏡像拉取憑證,說明P2P加速啟用成功。
相關操作
更新P2P加速組件參數
執行以下命令,根據實際需求更新P2P加速組件的相關參數。
onectl addon upgrade ack-acr-acceleration-p2p --set p2p.plusMode.cacheTTL=72h卸載P2P加速組件
如您無需使用P2P加速組件時,可通過onectl或控制台兩種方式卸載組件。
通過onectl卸載
執行以下命令,卸載P2P加速組件。
onectl addon uninstall ack-acr-acceleration-p2p預期輸出:
Addon ack-acr-acceleration-p2p uninstalled.通過控制台卸載
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
找到ack-acr-acceleration-p2p組件,單擊右側操作列下的刪除。
在提示對話方塊,單擊確認。