Menyesuaikan konfigurasi backend dengan cakupan GCPBackendPolicy

Di lingkungan multi-cluster Google Kubernetes Engine (GKE) Inference Gateway, Anda dapat menerapkan konfigurasi backend yang berbeda ke layanan yang di-deploy di beberapa cluster. Misalnya, Anda dapat menetapkan kecepatan permintaan maksimum atau penskala kapasitas yang berbeda untuk backend di berbagai region atau lingkungan.

Untuk memahami dokumen ini, Anda harus memahami hal-hal berikut:

Dokumen ini menargetkan persona berikut:

  • Engineer machine learning (ML), Admin dan operator platform, serta Spesialis Data dan AI yang tertarik menggunakan kemampuan orkestrasi kontainer Kubernetes untuk menyajikan beban kerja AI/ML.
  • Arsitek cloud atau spesialis Jaringan yang berinteraksi dengan jaringan Kubernetes.

Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam Google Cloud konten, lihat Peran dan tugas pengguna GKE Enterprise umum.

Cara kerja cakupan GCPBackendPolicy

Kolom scopes di GCPBackendPolicy memungkinkan Anda menyesuaikan konfigurasi backend berdasarkan cluster tertentu tempat backend Anda berjalan. Anda dapat menerapkan setelan yang berbeda ke backend di lingkungan atau region yang berbeda, yang memberi Anda kontrol mendetail atas beban kerja AI/ML terdistribusi. Bagian berikut menjelaskan cara menargetkan resource, menentukan cakupan kebijakan, dan menangani penyelesaian konflik.

Menargetkan resource Inference Gateway

Untuk menggunakan kebijakan Inference Gateway di lingkungan GKE multi-cluster, kolom targetRef GCPBackendPolicy harus mereferensikan resource GCPInferencePoolImport:

targetRef:
  group: networking.gke.io
  kind: GCPInferencePoolImport
  name: example

Definisi cakupan kebijakan

Kolom scopes di GCPBackendPolicy memungkinkan Anda menerapkan setelan backend yang berbeda ke grup backend tertentu. Dengan menentukan objek konfigurasi dalam default.scopes, Anda dapat menggunakan label cluster untuk menargetkan backend secara tepat dan menerapkan setelan tertentu. Misalnya, Anda dapat menetapkan batas kapasitas atau kecepatan permintaan yang unik untuk backend di berbagai region atau cluster.

Anda tidak dapat menentukan kolom tingkat backend yang sama (seperti maxRatePerEndpoint) di bagian default utama dan dalam entri default.scopes. Mencoba melakukannya akan menyebabkan kebijakan ditolak, yang membantu memastikan konfigurasi yang jelas dan konsisten.

Penyelesaian konflik

Jika backend cocok dengan beberapa cakupan, sistem akan menerapkan aturan berikut untuk memastikan perilaku yang dapat diprediksi:

  • Pencocokan yang diprioritaskan: jika backend mencocokkan beberapa pemilih dalam daftar scopes, sistem hanya menerapkan setelan dari pemilih yang cocok pertama. Urutkan cakupan Anda dari yang paling spesifik hingga yang paling umum untuk membantu memastikan konfigurasi yang Anda inginkan diterapkan.
  • Penargetan presisi: saat satu pemilih berisi beberapa label (misalnya, gke.io/region: us-central1 dan env: prod), backend harus memenuhi semua label tersebut agar sistem menerapkan konfigurasi cakupan. Pendekatan ini memungkinkan Anda menargetkan backend secara tepat berdasarkan beberapa kriteria.

Kolom per-backend yang didukung

Tabel berikut mencantumkan kolom tingkat backend yang dapat Anda sesuaikan untuk mengontrol perilaku backend di berbagai lingkungan atau region.

Nama Kolom Deskripsi Contoh Konfigurasi
backendPreference Menentukan apakah backend lebih disukai (PREFERRED) atau default (DEFAULT) selama penyesuaian kapasitas untuk load balancing multi-region. backendPreference: PREFERRED
balancingMode Menentukan algoritma penyeimbangan. Nilai yang didukung adalah RATE, UTILIZATION, atau CUSTOM_METRICS. balancingMode: CUSTOM_METRICS
capacityScalerPercent Mengonfigurasi distribusi traffic berdasarkan kapasitas. Nilai ini adalah persentase dari 0 hingga 100, yang berfungsi sebagai pengali pada kapasitas target yang dikonfigurasi backend. Nilai defaultnya adalah 100%. capacityScalerPercent: 20
customMetrics Menentukan metrik kustom yang digunakan untuk load balancing saat balancingMode disetel ke CUSTOM_METRICS. Kolom ini adalah daftar definisi metrik. customMetrics: [{ name: "my-metric", value: 0.8 }]
maxInFlightPerEndpoint Menetapkan jumlah maksimum permintaan atau koneksi serentak per endpoint. maxInFlightPerEndpoint: 100
maxRatePerEndpoint Menetapkan laju maksimum permintaan per endpoint, dalam permintaan per detik (RPS). maxRatePerEndpoint: 50

Menentukan pemilih cakupan

Kolom selectors di setiap cakupan memungkinkan Anda mengontrol backend mana yang menerima setelan kebijakan tertentu. Anda dapat menargetkan backend berdasarkan label cluster—baik label GKE bawaan maupun label kustom Anda sendiri—untuk menyesuaikan konfigurasi bagi berbagai grup backend.

kind: GCPBackendPolicy
apiVersion: networking.gke.io/v1
metadata:
  name: echoserver-v2
spec:
  targetRef:
    group: "networking.gke.io"
    kind: GCPInferencePoolImport
    name: test-inference-pool
  default:
    balancingMode: IN_FLIGHT # IN_FLIGHT mode is set at the default level
    scopes:
    - selector:
        gke.io/zone: "us-central1-a"
      maxInFlightPerEndpoint: 100 # Invalid: maxInFlightPerEndpoint cannot be set within a scope when balancingMode is IN_FLIGHT at the default level

Label GKE implisit

Label implisit berikut tersedia untuk digunakan sebagai pemilih. GKE secara otomatis menerapkan label ini ke cluster Anda:

Label Deskripsi Nilai Contoh
gke.io/cluster-name Nama cluster GKE. my-cluster
gke.io/region Region tempat cluster berada. us-central1
gke.io/zone Zona tempat cluster berada. us-central1-a

Label cluster kustom

Label cluster kustom memberikan fleksibilitas yang lebih besar untuk mengelompokkan dan mengelola backend Anda. Dengan menentukan label Anda sendiri di cluster GKE, Anda dapat membuat pemilih yang sangat spesifik di GCPBackendPolicy untuk menerapkan konfigurasi unik. Misalnya, Anda dapat mendasarkan konfigurasi ini pada kriteria seperti lingkungan yang berbeda (dev, staging, atau prod) atau versi aplikasi tertentu.

Untuk menambahkan label kustom, seperti environment=production, ke cluster GKE, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --region=REGION \
    --update-labels=LABEL_KEY=LABEL_VALUE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster Anda.
  • REGION: region cluster Anda.
  • LABEL_KEY: kunci untuk label kustom Anda, misalnya, environment.
  • LABEL_VALUE: nilai untuk label kustom Anda, misalnya, production.

Kemudian, Anda dapat memilih backend di cluster ini dengan menggunakan pemilih label kustom dalam kebijakan Anda.

Contoh GCPBackendPolicy dengan pemilih cakupan

Contoh berikut menentukan GCPBackendPolicy yang menargetkan GCPInferencePoolImport bernama experimental. Kebijakan ini menggunakan label implisit dan kustom untuk menetapkan nilai backendPreference, maxRatePerEndpoint, dan capacityScalerPercent.

apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
  name: backend-policy
spec:
  targetRef:
    kind: GCPInferencePoolImport
    name: experimental
  default:
    scopes:
      # Selector 1: Targets backends in us-west2, sets capacity to 50%
      - capacityScalarPercent: 50
        selector:
          gke.io/region: us-west2

      # Selector 2: Targets backends in clusters labeled 'env: prod'
      - maxRatePerEndpoint: 40
        selector:
          env: prod

      # Selector 3: Targets backends in a specific US-Central zone and marks them as PREFERRED
      - backendPreference: PREFERRED
        maxRatePerEndpoint: 50
        selector:
          gke.io/cluster-name: my-cluster
          gke.io/zone: us-central1-a

Setelah menerapkan kebijakan ini, Anda akan mengamati perilaku berikut:

  • Backend di cluster dalam region us-west2 memiliki kapasitas efektif yang diskalakan menjadi 50%.
  • Backend dalam cluster yang diberi label env: prod dibatasi hingga maksimum 40 permintaan per detik per endpoint.
  • Backend di cluster yang berlokasi secara khusus di zona us-central1-a diprioritaskan (PREFERRED) selama load balancing dan memiliki kecepatan maksimum 50 permintaan per detik per endpoint.

Langkah berikutnya