Anda dapat menggunakan fitur akselerasi P2P di klaster ACK Serverless dan Container Service for Kubernetes (ACK) untuk mempercepat penarikan gambar serta penyebaran aplikasi. Topik ini menjelaskan cara menggunakan fitur akselerasi P2P di klaster Kubernetes terkelola, khusus, dan serverless dari ACK.
Prasyarat
Sebuah instance Container Registry Edisi Perusahaan telah dibuat. Instance tersebut harus berupa Edisi Lanjutan. Untuk informasi lebih lanjut, lihat Buat Instance Container Registry Edisi Perusahaan.
Sebuah virtual private cloud (VPC) telah dikonfigurasi jika Anda memerlukan klaster ACK untuk mengakses instance Container Registry Edisi Perusahaan melalui VPC. Untuk informasi lebih lanjut, lihat Konfigurasikan ACL VPC. Jika klaster ACK perlu mengakses instance Container Registry Edisi Perusahaan melalui Internet, pastikan akses Internet diaktifkan dan alamat IP klaster ditambahkan ke daftar putih. Untuk informasi lebih lanjut, lihat Konfigurasikan Akses Melalui Internet.
Langkah 1: Berikan izin baca pada sumber daya Container Registry
Jika klaster ACK adalah klaster Kubernetes serverless, Anda harus memberikan izin baca pada sumber daya Container Registry kepada komponen P2P.
Untuk klaster Kubernetes terkelola atau khusus, izin baca sudah diberikan secara default sehingga tidak perlu dilakukan lagi.
Buat Peran RAM.
Saat membuat Peran RAM, atur parameter Role Type ke Normal Service Role dan layanan tepercaya ke Elastic Compute Service (ECS). Untuk informasi lebih lanjut, lihat Buat Peran RAM untuk Layanan Tepercaya Alibaba Cloud.
Berikan Izin kepada Peran RAM.
Lampirkan kebijakan AliyunContainerRegistryReadOnlyAccess ke Peran RAM. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Peran RAM.
Langkah 2: Lihat ID instance Container Registry Edisi Perusahaan
Masuk ke Konsol Container Registry.
Di bilah navigasi atas, pilih wilayah.
Di panel navigasi sisi kiri, klik Instances.
Di halaman Instances, klik instance Edisi Perusahaan yang ingin Anda kelola.
Lihat ID instance Container Registry di pojok kiri atas halaman Overview.
Langkah 3: Instal komponen P2P
Masuk ke Konsol ACK.
Di panel navigasi sisi kiri, pilih .
Di halaman App Catalog, cari komponen ack-acr-acceleration-p2p. Setelah menemukannya, klik kartu komponen tersebut.
Di halaman yang muncul, klik Deploy.
Di wizard Deploy, pilih klaster dan namespace, lalu klik Next.
Di langkah Parameters, atur parameter registryInstances ke ID instance Container Registry yang Anda peroleh di Langkah 2.
Jika beberapa instance Container Registry digunakan, pisahkan ID instance dengan koma (,) saat menyetel parameter registryInstances.
CatatanSecara default, komponen P2P menggunakan port 65001 pada node. Jika port tersebut telah digunakan oleh komponen lain, ubah port sesuai kebutuhan bisnis Anda.
p2p: ... # Port of P2P Agent in host network port: 65001 # Id of ACR registry instances, support multi, e.g. "cri-xxx,cri-yyy" registryInstances: <ACR instance Id>Opsional:Atur parameter controller.ramRole ke nama Peran RAM yang Anda buat di Langkah 1.
CatatanParameter controller.ramRole hanya diperlukan untuk klaster ACK Serverless. Anda dapat melewati langkah ini untuk klaster lainnya.
controller: ... # ACK Serverless cluster setting, to accessing ACR OpenAPI(Get*, List*) for ECS ramRole: <your ram role name>Opsional:Untuk menentukan batas atas total bandwidth untuk mengunggah dan mengunduh menggunakan komponen P2P, atur parameter ratelimit. Nilai defaultnya adalah 512 MB/s. Sesuaikan nilai berdasarkan bandwidth node.
p2p: # Total net rate limit (MBytes/s) for uploading and downloading ratelimit: "512M"Di panel Deploy, pilih klaster dan klik Create.
Langkah 4: Aktifkan akselerasi P2P
Anda dapat menambahkan label akselerasi P2P ke workload seperti pod dan Deployment untuk mengaktifkan akselerasi P2P. Anda juga dapat menambahkan label akselerasi P2P ke namespace di klaster ACK Anda. Dengan cara ini, akselerasi P2P diaktifkan untuk semua workload yang memenuhi kondisi akselerasi di namespace tersebut tanpa perlu memodifikasi file YAML tertentu. Pilih metode berdasarkan kebutuhan bisnis Anda.
Nama label akselerasi P2P adalah k8s.aliyun.com/image-accelerate-mode dan nilainya adalah p2p.
Tambahkan Label Akselerasi P2P ke Workload
Dalam contoh ini, tambahkan label akselerasi P2P ke Deployment. Jalankan perintah berikut untuk menambahkan label:
kubectl edit deploy <Deployment name>Tambahkan label
k8s.aliyun.com/image-accelerate-mode: p2pke file YAML Deployment.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 instacne image pull secret imagePullSecrets: - name: test-registry containers: # your ACR instacne image - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/docker-builder/nginx:latest name: test command: ["sleep", "3600"]Tambahkan Label Akselerasi P2P ke Namespace
Tambahkan Label Akselerasi P2P ke Namespace di Konsol ACK
Masuk ke Konsol ACK.
Di panel navigasi sisi kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang ingin Anda kelola dan klik nama klaster atau klik Details di kolom Actions.
Di panel navigasi sisi kiri, klik Namespaces and Quotas.
Di halaman Namespace, temukan namespace yang ingin Anda konfigurasi dan klik Edit di kolom Actions.
Di bagian Label kotak dialog Edit Namespace, atur parameter Variable Key ke
k8s.aliyun.com/image-accelerate-modedan parameter Variable Value kep2p, lalu klik OK.
Tambahkan Label Akselerasi P2P ke Namespace Menggunakan kubectl
kubectl label namespaces <your-namespace> k8s.aliyun.com/image-accelerate-mode=p2p
Verifikasi akselerasi P2P
Setelah akselerasi P2P diaktifkan untuk pod, komponen P2P secara otomatis menambahkan informasi terkait P2P ke file YAML pod. Informasi tersebut mencakup anotasi terkait P2P, alamat gambar yang dipercepat P2P, dan Secret untuk menarik gambar yang dipercepat P2P.
Satu-satunya perbedaan antara Secret yang digunakan untuk menarik gambar yang dipercepat P2P dan Secret yang digunakan untuk menarik gambar asli adalah nama domain repositori gambar. Jika informasi pengguna tidak valid dalam Secret untuk menarik gambar asli, gambar yang dipercepat P2P juga gagal ditarik.
Jalankan perintah berikut untuk melihat file YAML pod:
kubectl get po <Pod name> -oyamlKeluaran yang diharapkan:
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-vpc.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-p2pJika anotasi terkait P2P, alamat gambar yang dipercepat P2P, dan Secret untuk menarik gambar yang dipercepat P2P ada di file YAML, akselerasi P2P diaktifkan.