Titik akhir dari Layanan asli Kubernetes didistribusikan secara acak di seluruh node. Akibatnya, permintaan Layanan yang didistribusikan ke node di seluruh grup node mungkin gagal mencapai node atau tidak segera dijawab. Anda dapat mengonfigurasi topologi Layanan untuk mengekspos aplikasi pada node tepi hanya ke node saat ini atau node dalam kolam node tepi yang sama. Topik ini menjelaskan cara kerja topologi Layanan dan cara mengonfigurasinya.
Informasi Latar Belakang
Dalam komputasi tepi, node tepi diklasifikasikan ke dalam grup berdasarkan zona, wilayah, atau atribut logis lainnya seperti arsitektur CPU, penyedia layanan internet (ISP), atau penyedia layanan cloud. Node dalam grup yang berbeda diisolasi satu sama lain dengan cara tertentu. Sebagai contoh, node tersebut mungkin terputus, tidak berbagi sumber daya yang sama, memiliki sumber daya heterogen, atau menjalankan aplikasi yang diterapkan secara independen.
Cara Kerja Topologi Layanan
Untuk menyelesaikan masalah yang disebutkan di atas, Container Service for Kubernetes (ACK) Edge menyediakan fitur untuk mengelola topologi titik akhir dari Layanan asli Kubernetes. Sebagai contoh, Anda dapat mengonfigurasi topologi Layanan untuk mengekspos aplikasi pada node tepi hanya ke node saat ini atau node dalam kolam node tepi yang sama. Gambar berikut menunjukkan cara kerja topologi Layanan.
Layanan 1 terkait dengan Pod 2 dan Pod 3. Anotasi
annotation:"openyurt.io/topologyKeys: kubernetes.io/zone"menentukan kolam node yang diizinkan untuk mengakses Layanan 1.Pod 2 ditempatkan pada Node 2 dan Pod 3 ditempatkan pada Node 4. Node 2 termasuk dalam Kolam Node A dan Node 4 termasuk dalam Kolam Node B.
Pod 3 dan Pod 1 tidak termasuk dalam kolam node yang sama. Akibatnya, ketika Pod 1 mengakses Layanan 1, lalu lintas hanya diteruskan ke Pod 2. Lalu lintas tidak diteruskan ke Pod 3.
Catatan Penggunaan
Untuk versi sebelum v1.26.3-aliyun.1: Anda harus menambahkan anotasi topologi Layanan saat membuat Layanan. Jika anotasi ditambahkan setelah pembuatan Layanan, topologi Layanan tidak akan berlaku. Dalam hal ini, Anda harus menghapus dan membuat ulang Layanan.
Untuk v1.26.3-aliyun.1 dan yang lebih baru: Anda dapat menambahkan atau memodifikasi anotasi topologi Layanan setelah membuat Layanan. Topologi Layanan akan langsung berlaku setelah penambahan atau modifikasi anotasi.
Anotasi
Anda dapat menambahkan anotasi topologi Layanan ke Layanan asli Kubernetes untuk mengonfigurasi topologi Layanan. Tabel berikut menjelaskan anotasi yang dapat digunakan untuk mengonfigurasi topologi Layanan.
Kunci Anotasi | Nilai Anotasi | Deskripsi |
openyurt.io/topologyKeys | kubernetes.io/hostname | Menentukan bahwa Layanan hanya dapat diakses oleh node tempat Layanan tersebut ditempatkan. |
openyurt.io/topologyKeys | kubernetes.io/zone atau openyurt.io/nodepool | Menentukan bahwa Layanan hanya dapat diakses oleh node dalam kolam node tempat Layanan tersebut ditempatkan. Jika versi kluster ACK Edge adalah 1.18 atau lebih baru, kami sarankan Anda menggunakan openyurt.io/nodepool. |
- | - | Menentukan bahwa akses ke Layanan tidak dibatasi. |
Konfigurasikan Topologi Layanan
Anda dapat mengonfigurasi topologi Layanan di konsol ACK atau menggunakan CLI.
Metode 1: Konfigurasikan Topologi Layanan di Konsol ACK
Untuk membuat Layanan yang hanya dapat diakses oleh node dalam kolam node tempat Layanan tersebut ditempatkan, Anda cukup menambahkan anotasi ke Layanan. Sebagai contoh, atur Name menjadi openyurt.io/topologyKeys dan Value menjadi kubernetes.io/zone. Untuk informasi lebih lanjut tentang cara membuat Layanan, lihat Manajemen Layanan.

Metode 2: Konfigurasikan Topologi Layanan dengan Menggunakan CLI
Buat Layanan yang menggunakan domain topologi kolam node tertentu. Blok kode berikut adalah contoh template YAML:
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