Pada Service Kubernetes native, titik akhir backend didistribusikan ke seluruh node dalam kluster. Distribusi ini dapat menyebabkan masalah akses atau kinerja buruk untuk lalu lintas yang melintasi kelompok node. Topologi lalu lintas layanan memastikan bahwa aplikasi pada node tepi hanya dapat diakses dari node dalam kelompok node yang sama atau dari node lokal. Topik ini menjelaskan fitur manajemen topologi lalu lintas layanan dan cara mengonfigurasinya.
Informasi latar belakang
Dalam skenario komputasi tepi, node tepi sering dikelompokkan berdasarkan lokasi, wilayah, atau atribut logis lainnya, seperti arsitektur CPU atau Penyedia layanan internet (ISP). Kelompok node ini biasanya terisolasi dan mungkin memiliki jaringan, sumber daya, atau aplikasi yang terpisah.
Implementasi manajemen topologi lalu lintas layanan
Untuk mengatasi tantangan tersebut, ACK Edge memperluas Service native dengan fitur manajemen topologi titik akhir. Anda dapat menggunakan konfigurasi sederhana untuk membatasi cakupan akses titik akhir backend suatu Service. Misalnya, Anda dapat memastikan bahwa aplikasi pada node tepi hanya dapat diakses dari node dalam kelompok node yang sama atau dari node lokal. Gambar berikut mengilustrasikan perilaku ini.
-
Service 1 dikaitkan dengan dua instans backend: Pod 2 dan Pod 3. Anotasi
"openyurt.io/topologyKeys: kubernetes.io/zone"pada Service 1 menentukan cakupan topologinya berdasarkan kelompok node. -
Node 2, yang menjalankan Pod 2, dan Node 4, yang menjalankan Pod 3, berada dalam kelompok node yang berbeda: A dan B.
-
Pod 1 dan Pod 3 tidak berada dalam kelompok node yang sama. Saat Pod 1 mengakses Service 1, lalu lintas hanya diteruskan ke Pod 2. Lalu lintas ke Pod 3 diblokir.
Catatan
-
Untuk versi sebelum v1.26.3-aliyun.1: Untuk mengaktifkan fitur topologi lalu lintas, Anda harus menambahkan anotasi topologi saat membuat Service. Jika Anda menambahkan anotasi setelah Service dibuat, fitur tersebut tidak akan berlaku. Anda harus menghapus dan membuat ulang Service tersebut.
-
Untuk v1.26.3-aliyun.1 dan versi setelahnya: Anda dapat menambahkan atau mengubah anotasi topologi setelah Service dibuat. Perubahan tersebut berlaku secara langsung.
Deskripsi anotasi
Tambahkan anotasi ke Service native untuk mengonfigurasi topologi lalu lintas. Tabel berikut menjelaskan parameter-parameter tersebut.
|
Annotation Key |
Annotation Value |
Description |
|
openyurt.io/topologyKeys |
kubernetes.io/hostname |
Membatasi akses Service hanya ke node lokal. |
|
openyurt.io/topologyKeys |
kubernetes.io/zone atau openyurt.io/nodepool |
Anda dapat membatasi akses ke Service hanya untuk node dalam kelompok node saat ini. Untuk versi ACK Edge cluster 1.18 atau lebih baru, kami merekomendasikan penggunaan openyurt.io/nodepool. |
|
- |
- |
Service tidak memiliki pembatasan topologi. |
Konfigurasi topologi lalu lintas layanan
Anda dapat mengonfigurasi topologi lalu lintas layanan melalui Konsol atau command line.
Metode 1: Konfigurasi topologi lalu lintas layanan menggunakan Konsol
Untuk membuat Service yang hanya dapat diakses dari dalam kelompok nodenya, tambahkan anotasi ke Service tersebut. Misalnya, atur Name menjadi openyurt.io/topologyKeys dan Value menjadi kubernetes.io/zone. Untuk informasi selengkapnya tentang cara membuat Service, lihat Manajemen layanan.

Metode 2: Konfigurasi topologi lalu lintas layanan menggunakan command line
Templat YAML berikut menunjukkan cara membuat Service yang menggunakan domain topologi kelompok node.
apiVersion: v1
kind: Service
metadata:
annotations:
openyurt.io/topologyKeys: kubernetes.io/zone
name: my-service-nodepool
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: nginx
sessionAffinity: None
type: ClusterIP