全部产品
Search
文档中心

Container Service for Kubernetes:Konfigurasikan Topologi Layanan

更新时间:Jun 26, 2025

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.

G-9

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