Bagikan melalui


Penyeimbangan beban berbasis DNS multi-kluster dengan Azure Kubernetes Fleet Manager (pratinjau)

Azure Kubernetes Fleet Manager dapat digunakan untuk membuat dan mengelola penyeimbangan beban multi-kluster berbasis DNS untuk beban kerja yang menghadap publik yang disebarkan di seluruh kluster anggota.

Penting

Fitur pratinjau Azure Kubernetes Fleet Manager tersedia secara layanan mandiri dan berdasarkan sistem pendaftaran. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Pratinjau Azure Kubernetes Fleet Manager sebagian dicakup oleh dukungan pelanggan berdasarkan upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi.

Pratinjau jaringan sarana data kami dirilis melalui API kami networking.fleet.azure.com/v1beta1 . Jika Anda tidak melihat objek pratinjau, periksa apakah Anda meminta networking.fleet.azure.com/v1beta1 API saat berinteraksi dengan kluster hub Fleet Manager.

Diagram yang menunjukkan gambaran umum konseptual tentang bagaimana Fleet Manager mendukung penyeimbangan beban DNS di tiga kluster anggota menggunakan sumber daya Azure Traffic Manager dan Kubernetes ServiceExport.

Untuk memberikan penyeimbangan beban publik multi-kluster dengan DNS, Fleet Manager menggunakan Azure Traffic Manager dengan profil perutean tertimbang untuk bertindak sebagai frontend untuk Services diekspor dari kluster anggota. Dimungkinkan untuk menggunakan kemampuan ini untuk penyeimbangan beban lapisan 4 dan 7.

Administrator armada menggunakan kubectl untuk membuat dan mengonfigurasi TrafficManagerProfile dan TrafficManagerBackend sumber daya pada kluster hub Fleet Manager. TrafficManagerProfile menentukan Profil Azure Traffic Manager yang menyertakan konfigurasi pemantauan kesehatan titik akhir, dengan yang terkait mendefinisikan TrafficManagerBackendService agar beban seimbang.

Layanan pada kluster anggota dapat ditambahkan ke penyeimbangan beban dengan membuat ServiceExport pada kluster dan mengonfigurasi nama host DNS unik untuk Service. Bobot opsional dapat ditentukan untuk mengonfigurasi perilaku perutean lalu lintas antar kluster. Jika beban kerja disebarkan menggunakan penempatan sumber daya kluster Manajer Armada, nama host DNS dapat dikonfigurasi pada penempatan menggunakan ResourceOverride.

Pembuatan dan konfigurasi Traffic Manager terkait dikelola oleh Fleet Manager, dengan administrator armada dapat mendorong pengalaman end to end menggunakan API Kubernetes.

Properti dari TrafficManagerProfile

Sumberdaya TrafficManagerProfile menyediakan representasi objek Kubernetes dari profil standar Azure Traffic Manager.

apiVersion: networking.fleet.azure.com/v1beta1
kind: TrafficManagerProfile
metadata:
  name: myatm
  namespace: work
spec:
  monitorConfig:
    protocol: HTTP
    path: /api
    port: 8080
    intervalInSeconds: 30
    timeoutInSeconds: 10
    toleratedNumberOfFailures: 3

Properti penting yang perlu dipahami meliputi:

  • name: digunakan sebagai awalan DNS untuk trafficmanager.net nama DNS. Ini harus unik. Jika nama sudah digunakan, penyebaran gagal.
  • namespace: harus sama dengan sumber daya TrafficManagerBackend dan Service yang sesuai.
  • monitorCOnfig: memetakan ke konfigurasi pemantauan Azure Traffic Manager standar. Opsi pemantauan titik akhir Azure Traffic Manager yang tidak didukung adalah: Pengaturan header kustom; kode status yang diharapkan.

Properti TrafficManagerBackend

Sumber TrafficManagerBackend daya menyediakan objek Kubernetes yang digunakan untuk menyimpan titik akhir backend yang dapat dipertimbangkan oleh Traffic Manager sebagai penerima lalu lintas. Sebelum lalu lintas dikirim ke titik akhir, ServiceExport harus dibuat.

apiVersion: networking.fleet.azure.com/v1beta1
kind: TrafficManagerBackend
metadata:
  name: app
  namespace: work
spec:
  profile:
    name: myatm
  backend:
    name: app
  weight: 100

Properti penting yang perlu dipahami meliputi:

  • spec/profile/name: harus cocok dengan yang sesuai TrafficManagerProfile.
  • spec/backend/name: harus cocok dengan nama layanan yang diekspor untuk penyeimbangan beban.
  • spec/weight: berat opsional (prioritas) untuk diterapkan ke backend ini. Nilai bilangan bulat antara 0 dan 1.000. Jika dihilangkan, Traffic Manager menggunakan bobot default '1'. Atur ke '0' untuk menonaktifkan perutean lalu lintas tanpa menghapus sumber daya Profil Traffic Manager yang terkait. Untuk informasi selengkapnya, lihat Metode perutean tertimbang Azure Traffic Manager.

Properti ServiceExport

Untuk menambahkan titik akhir dari Service ke Traffic Manager, buat resource ServiceExport pada kluster anggota yang berisi layanan. Daya ServiceExport harus dibuat dalam namespace yang sama dengan Service untuk diekspor.

apiVersion: networking.fleet.azure.com/v1alpha1
kind: ServiceExport
metadata:
  name: kuard-export
  namespace: kuard-demo
  annotations:
    networking.fleet.azure.com/weight: "50"

Properti penting yang perlu dipahami meliputi:

  • metadata/namespace: harus cocok dengan namespace dari Service yang akan diekspor.
  • metadata/annotations/networking.fleet.azure.com/weight: berat opsional (prioritas) untuk diterapkan pada ekspor layanan ini. Nilai bilangan bulat antara 0 dan 1.000. Jika dihilangkan, Traffic Manager menggunakan bobot default '1'. Setel ke '0' untuk menonaktifkan perutean lalu lintas tanpa menghapus titik akhir layanan terkait. Untuk informasi lebih lanjut, lihat Metode perutean tertimbang Azure Traffic Manager.

Nama host DNS unik melalui anotasi Layanan

Untuk menambahkan Service ke Traffic Manager, ia harus memiliki nama host DNS yang unik. Nama host DNS dapat diatur dengan mengikuti metode yang direkomendasikan oleh AKS menggunakan anotasi sebagaimana ditunjukkan service.beta.kubernetes.io/azure-dns-label-name.

apiVersion: v1
kind: Service
metadata:
  name: kuard-svc
  namespace: kuard-demo
  labels:
    app: kuard
  annotations:
    service.beta.kubernetes.io/azure-dns-label-name: kuard-demo-cluster-01
spec:
  selector:
    app: kuard
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

Anotasi label DNS dapat diambil alih menggunakan ResourceOverride fitur Fleet Manager sehingga memungkinkan untuk menyebarkan nama host unik di beberapa kluster. Untuk informasi selengkapnya, lihat panduan cara menyeimbangkan beban DNS.

Mengontrol rute lalu lintas

Di bagian ini kita akan melihat skenario umum untuk mengelola perutean lalu lintas antar kluster.

Mendistribusikan lalu lintas di seluruh kluster

Untuk memungkinkan Traffic Manager mempertimbangkan kluster apa pun untuk menerima lalu lintas, gunakan definisi yang ditampilkan.

  1. Buat TrafficManagerBackend sumber daya dan abaikan weight properti.

    apiVersion: networking.fleet.azure.com/v1beta1
    kind: TrafficManagerBackend
    metadata:
      name: app
      namespace: work
    spec:
      profile:
        name: myatm
      backend:
        name: app
    
  2. Pada setiap kluster, buatlah ServiceExport dan hilangkanlah properti weight.

    apiVersion: networking.fleet.azure.com/v1alpha1
    kind: ServiceExport
    metadata:
      name: kuard-export
      namespace: kuard-demo
    

Setelah disebarkan, Traffic Manager akan memilih kluster secara acak, mengingat semua kluster dengan berat yang sama.

Mendistribusikan lalu lintas antar kluster dengan bobot berbeda

Untuk memberikan petunjuk preferensi kepada Traffic Manager saat memilih kluster, atur properti pada objek TrafficManagerBackend dan ServiceExport.

  1. Buat TrafficManagerBackend sumber daya dan atur properti weight ke 100.

    apiVersion: networking.fleet.azure.com/v1beta1
    kind: TrafficManagerBackend
    metadata:
      name: app
      namespace: work
    spec:
      profile:
        name: myatm
      backend:
        name: app
      weight: 100
    
  2. ServiceExport Buat dan atur weight properti ke nilai yang mewakili prioritas yang harus digunakan Traffic Manager saat mempertimbangkan kluster untuk menerima lalu lintas.

    apiVersion: networking.fleet.azure.com/v1alpha1
    kind: ServiceExport
    metadata:
      name: kuard-export
      namespace: kuard-demo
      annotations:
        networking.fleet.azure.com/weight: "40"
    

Setelah disebarkan, Traffic Manager akan memilih kluster dengan bobot yang lebih tinggi. Anda tidak perlu menetapkan nilai berat pada setiap kluster. Jika Anda mengatur nilai bobot yang sama pada lebih dari satu kluster, Traffic Manager akan mempertimbangkan kluster tersebut secara merata.

Mengecualikan kluster dari perutean lalu lintas

Untuk mengecualikan kluster dari pengaturan lalu lintas, setel properti weight menjadi 0 pada sumber daya ServiceExport. Bobot ini menghapus titik akhir dari konfigurasi Traffic Manager.

apiVersion: networking.fleet.azure.com/v1alpha1
kind: ServiceExport
metadata:
  name: kuard-export
  namespace: kuard-demo
  annotations:
    networking.fleet.azure.com/weight: "0"

Perilaku penghapusan TrafficManagerProfile

Ketika sumber daya Kubernetes dihapus, maka Azure Traffic Manager terkait beserta titik akhirnya juga ikut dihapus, dan permintaan tidak lagi dirutekan ke kluster.

Jika Anda ingin menghentikan perutean lalu lintas tetapi mempertahankan Azure Traffic Manager dan titik akhirnya, atur properti ke weight0TrafficManagerBackend pada sumber daya.

Langkah selanjutnya