Penafian : Proyek ini masih dalam versi beta - API mungkin berubah.
Pengontrol Watermark Pod Autoscaler (WPA) adalah pengontrol khusus yang memperluas Horizontal Pod Autoscaler (HPA).
Pengontrol Autoscaler Pod Watermark adalah pengontrol alternatif dari Pengontrol Autoscaler Pod Horizontal upstream.
Jika Anda ingin melakukan penskalaan otomatis pada beberapa aplikasi Anda, tetapi:
misalnya
apiVersion : datadoghq.com/v1alpha1
kind : WatermarkPodAutoscaler
[...]
spec :
algorithm : absolute
[...]
Ada dua opsi untuk menghitung jumlah replika yang diinginkan:
average
Pengontrol akan menggunakan value from the external metrics provider
/ current number of replicas
, dan akan membandingkannya dengan tanda air. Jumlah replika yang disarankan adalah value from the external metrics provider
/ watermark
(rendah atau tinggi bergantung pada nilai saat ini).
Algoritme average
cocok jika Anda menggunakan metrik yang tidak bergantung pada jumlah replika. Biasanya, jumlah permintaan yang diterima oleh ELB dapat menunjukkan berapa banyak server web yang ingin kita miliki, mengingat kita tahu bahwa satu server web harus menangani n
rq/s. Menambahkan replika tidak akan menambah atau mengurangi jumlah permintaan yang diterima oleh penyeimbang beban.
absolute
Nilai defaultnya adalah absolute
. Metrik rata-rata harus digunakan. Jumlah replika yang disarankan dihitung sebagai current number of replicas
* value from the external metrics provider
/ watermark
.
Algoritme absolute
adalah defaultnya, karena mewakili kasus penggunaan yang paling umum. Misalnya, jika Anda ingin aplikasi Anda berjalan antara 60% dan 80% CPU, dan avg:cpu.usage
berada pada 85%, Anda perlu meningkatkan skalanya. Metriknya harus dikorelasikan dengan jumlah replika.
Catatan : Di pengontrol upstream, hanya fungsi math.Ceil
yang digunakan untuk mengumpulkan jumlah replika yang disarankan.
Artinya, jika Anda memiliki ambang batas pada 10, Anda harus mencapai pemanfaatan 8,999... dari penyedia metrik eksternal untuk menurunkan skala sebanyak satu replika. Namun, pemanfaatan 10.001 akan membuat Anda meningkatkan satu replika.
Pengontrol WPA akan menggunakan math.Floor
jika nilainya berada di bawah tanda air yang lebih rendah. Ini memastikan perilaku simetris. Dikombinasikan dengan opsi penskalaan lainnya, hal ini memungkinkan kontrol yang lebih baik mengenai kapan harus menurunkan skala.
Untuk menggunakan Watermark Pod Autoscaler, terapkan Watermark Pod Autoscaler di cluster Kubernetes Anda:
Unduh file zip proyek Watermark Pod Autoscaler. Kode sumber dapat ditemukan di DataDog/watermarkpodautoscaler
.
Buka zip proyek, dan masuk ke folder ./watermarkpodautoscaler
.
Tentukan namespace dan pengontrol Watermark Pod Autoscaler Anda:
DD_NAMESPACE= " datadog "
DD_NAMEWPA= " wpacontroller "
Buat ruang nama:
kubectl create ns $DD_NAMESPACE
Instal pengontrol Watermark Pod Autoscaler dengan Helm:
helm install $DD_NAMEWPA -n $DD_NAMESPACE ./chart/watermarkpodautoscaler
WatermarkPodAutoscaler Controler hadir dengan plugin kubectl yang menyediakan serangkaian utilitas pembantu. informasi lebih lanjut di halaman dokumentasi khusus: docs/kubectl-plugin.md
Buat WPA Anda di namespace yang sama dengan penerapan target Anda.
Agen Klaster Datadog akan mengambil peristiwa pembuatan/pembaruan/penghapusan. Ini menguraikan spesifikasi WPA untuk mengekstrak metrik dan cakupan yang didapat dari Datadog.
Dalam contoh ini, kami menggunakan konfigurasi spesifikasi berikut:
apiVersion : datadoghq.com/v1alpha1
kind : WatermarkPodAutoscaler
metadata :
name : example-watermarkpodautoscaler
spec :
downscaleForbiddenWindowSeconds : 60
downscaleDelayBelowWatermarkSeconds : 300
upscaleForbiddenWindowSeconds : 30
upscaleDelayAboveWatermarkSeconds : 30
scaleDownLimitFactor : 30
scaleUpLimitFactor : 50
minReplicas : 4
maxReplicas : 9
scaleTargetRef :
kind : " Deployment "
name : " some_app "
apiVersion : " apps/v1 "
metrics :
- external :
highWatermark : 400m
lowWatermark : 150m
metricName : custom.request_duration.max
metricSelector :
matchLabels :
kubernetes_cluster : mycluster
service : billing
short_image : billing-app
type : External
tolerance : " 0.01 "
Jenis metrik External
dan Resource
didukung. Pengontrol WPA menggunakan format yang sama dengan HPA. Informasi lebih lanjut di sini.
Dimulai dengan tanda air, nilai metrik yang dikumpulkan ( watermarkpodautoscaler.wpa_controller_value
) dari Datadog berwarna ungu ketika berada di antara batas ( watermarkpodautoscaler.wpa_controller_low_watermark
dan watermarkpodautoscaler.wpa_controller_high_watermark
) akan memerintahkan pengontrol untuk tidak memicu peristiwa penskalaan. Mereka ditentukan sebagai Quantities
, sehingga Anda dapat menggunakan m | "" | k | M | G | T | P | E
untuk dengan mudah mewakili nilai yang ingin Anda gunakan.
Kita dapat menggunakan metrik watermarkpodautoscaler.wpa_controller_restricted_scaling{reason:within_bounds}
untuk memverifikasi bahwa metrik tersebut memang dibatasi. Catatan : metrik dikalikan dengan 1000 untuk membuatnya lebih eksplisit bahwa selama waktu ini, tidak ada peristiwa penskalaan yang dapat dipicu oleh pengontrol.
Kumpulan opsi konfigurasi kedua berkaitan dengan kecepatan penskalaan penerapan Anda, yang dikontrol oleh scaleDownLimitFactor
dan scaleUpLimitFactor
. Ini adalah bilangan bulat antara 0 dan 100. Ini mewakili rasio maksimum downscaling dan upscaling, mengingat jumlah replika saat ini.
Dalam hal ini, jika kita memiliki 10 replika dan jumlah replika yang direkomendasikan adalah 14 (lihat bagian Algoritma untuk detail lebih lanjut mengenai rekomendasi) dengan scaleUpFactor
sebesar 30 (%), kita akan dibatasi hingga 13 replika.
Pada grafik berikut, kita dapat melihat bahwa jumlah replika yang disarankan (berwarna ungu), yang diwakili oleh metrik watermarkpodautoscaler.wpa_controller_replicas_scaling_proposal
terlalu tinggi dibandingkan dengan jumlah replika saat ini. Hal ini akan memicu logika pembatasan kelas atas, yang dapat dipantau menggunakan metrik watermarkpodautoscaler.wpa_controller_restricted_scaling{reason:upscale_capping}
( Catatan : Sama seperti di atas, metrik dikalikan agar lebih eksplisit). Dengan demikian, jumlah replika watermarkpodautoscaler.wpa_controller_replicas_scaling_effective
yang efektif akan ditingkatkan, namun sesuai dengan scaleUpLimitFactor
.
Dalam contoh serupa ini, kami menghindari penurunan skala terlalu banyak, dan kami dapat menggunakan kumpulan metrik yang sama untuk menjamin bahwa kami hanya menurunkan skala sebanyak jumlah replika yang wajar.
Penting untuk diingat bahwa kami selalu mengambil keputusan penskalaan yang konservatif.
scaleUpLimitFactor
sebesar 29%: jika kami memiliki 10 replika dan direkomendasikan 13, kami akan meningkatkannya menjadi 12.scaleDownLimitFactor
sebesar 29%: jika kami memiliki 10 replika dan direkomendasikan 7, kami akan menurunkan skalanya menjadi 8.minReplicas
dan maxReplicas
diutamakan. Lihat bagian Prioritas. Terakhir, opsi terakhir yang tersedia adalah downscaleForbiddenWindowSeconds
dan upscaleForbiddenWindowSeconds
. Ini mewakili berapa lama waktu (dalam detik) setelah peristiwa penskalaan untuk menunggu sebelum melakukan penskalaan ke bawah dan ke atas. Kami hanya menyimpan peristiwa penskalaan terakhir, dan kami tidak membandingkan upscaleForbiddenWindowSeconds
dengan terakhir kali kami hanya melakukan peningkatan.
Pada contoh berikut, kita dapat melihat bahwa jumlah replika yang disarankan diabaikan jika kita berada dalam periode cooldown. Periode cooldown downscale dapat divisualisasikan dengan watermarkpodautoscaler.wpa_controller_transition_countdown{transition:downscale}
, dan ditunjukkan dengan warna kuning pada grafik di bawah. Kita dapat melihat bahwa ini jauh lebih tinggi daripada periode cooldown kelas atas ( transition:upscale
) yang berwarna oranye pada grafik kita. Setelah kami disarankan untuk melakukan penskalaan, kami hanya akan menskalakan jika jendela cooldown yang sesuai telah berakhir. Ini akan mengatur ulang kedua hitungan mundur.
Untuk menghindari penskalaan dari semburan, Anda dapat menggunakan fitur berikut: downscaleDelayBelowWatermarkSeconds
dan/atau upscaleDelayAboveWatermarkSeconds
. Opsi-opsi ini ditentukan sebagai bilangan bulat. Metrik harus tetap berada di atas atau di bawah tanda airnya masing-masing selama durasi yang dikonfigurasi. Anda dapat melacak berapa banyak waktu yang tersisa dalam status WPA:
- lastTransitionTime: "2022-11-15T02:02:09Z"
message: Allow downscaling if the value stays under the Watermark
reason: Value below Low Watermark
status: "False"
type: BelowLowWatermark
Atau di log pengontrol:
{"level":"info","ts":1668481092517.446,"logger":"controllers.WatermarkPodAutoscaler","msg":"Will not scale: value has not been out of bounds for long enough","watermarkpodautoscaler":"datadog/example-watermarkpodautoscaler","wpa_name":"example-watermarkpodautoscaler","wpa_namespace":"datadog","time_left":3209}
Catatan: Jika Anda menggunakan beberapa metrik dengan fitur ini, kondisi di atas/di bawah dianggap menggunakan OR
metrik tersebut.
Misalnya, Anda memiliki upscaleDelay
60 detik dengan dua metrik, M1 dan M2. Jika M1 tetap berada di atas tanda air tertingginya selama 40 detik [t0; t40]
, dan M2 melampaui tanda air tingginya selama 30 detik, tumpang tindih dengan M1 selama 10 detik terakhir, [t30; t60]
, ini memvalidasi kondisi upscaleDelay
dan memungkinkan terjadinya peristiwa peningkatan.
Saat kita mengambil nilai metrik eksternal, pertama-tama kita akan membandingkannya dengan jumlah highWatermark
+ tolerance
dan selisih lowWatermark
- tolerance
. Jika kami berada di luar batas, kami menghitung jumlah replika yang disarankan. Kami kemudian membandingkan nilai ini dengan jumlah replika saat ini untuk berpotensi membatasi jumlah replika yang disarankan juga menurut minReplicas
dan maxReplicas
. Terakhir, kami melihat apakah kami diizinkan untuk melakukan penskalaan, dengan mempertimbangkan downscaleForbiddenWindowSeconds
dan upscaleForbiddenWindowSeconds
.
Untuk memiliki kontrol yang lebih terperinci terhadap kondisi di mana target dapat diskalakan, Anda dapat menggunakan fitur berikut:
minAvailableReplicaPercentage
: Menunjukkan persentase minimum replika yang perlu tersedia agar pengontrol dapat melakukan penskalaan otomatis pada target. Misalnya, jika disetel ke 50 dan kurang dari separuh pod di belakang target berada dalam status Tersedia, maka target tidak akan diskalakan oleh pengontrol.
readinessDelaySeconds
: Menentukan berapa lama waktu yang dibutuhkan replika untuk berjalan, sebelum diperhitungkan dalam keputusan penskalaan.
Jika semua ketentuan terpenuhi, pengontrol akan menskalakan objek yang ditargetkan di scaleTargetRef
ke jumlah replika yang disarankan hanya jika tanda dryRun
tidak disetel ke true
. Ini akan menunjukkan hal ini dengan mencatat:
{ "level" : " info " , "ts" : 1566327479.866722 , "logger" : " wpa_controller " , "msg" : " DryRun mode: scaling change was inhibited currentReplicas:8 desiredReplicas:12 " }
Agen Cluster menjalankan informan terhadap sumber daya WPA, dan mirip dengan HPA, setelah pembuatan/pembaruan/penghapusan akan mengurai spesifikasi untuk menanyakan metrik dari Datadog.
Agen Cluster tidak menjalankan pendengar WPA secara default. Untuk mengaktifkan WPA di Agen Klaster, atur variabel lingkungan DD_EXTERNAL_METRICS_PROVIDER_WPA_CONTROLLER=true
dan perbarui ClusterRole yang ditetapkan ke Akun Layanan Agen Klaster agar memiliki akses ke objek WatermarkPodAutoscaler:
[...]
- apiGroups : ["datadoghq.com"]
resources :
- watermarkpodautoscalers
verbs :
- get
- list
- watch
[...]
Catatan: Untuk mengaktifkan WPA di Agen Klaster menggunakan bagan helm datadog, atur clusterAgent.metricsProvider.wpaController
ke true
. ClusterRole akan diperbarui secara otomatis.
Setelah Anda menerapkan perubahan tersebut dan membuat objek WPA, jika Anda menjalankannya di pod Agen Klaster Datadog dan menjalankan agent status
Anda akan dapat melihat detail yang lebih spesifik tentang spesifikasi penskala otomatis yang diurai (apakah itu horizontal atau a penskala otomatis pod tanda air).
* watermark pod autoscaler: default/example2-watermarkpodautoscaler
- name : example2-watermarkpodautoscaler
- namespace : default
- type : watermark
- uid : ff09b7d8-d99b-11e9-a8c1-42010a8001c4
Metric name : sinus
Labels :
- foo : bar
Value : 75.1297378540039
Timestamp : 15688259400
Valid : true
* horizontal pod autoscaler: default/nginxext
- name : nginxext
- namespace : default
- type : horizontal
- uid : 61ef3f6e-af32-11e9-a8c1-42010a8001c4
Metric name : docker.mem.rss
Labels :
- cluster-location : us-central1-a
- cluster-name : charly
Value : 263888700952
Timestamp : 15688259400
Valid : true
Selain metrik yang disebutkan di atas, ini adalah log yang akan membantu Anda lebih memahami berfungsinya WPA.
Setiap 15 detik, kami mengambil metrik yang tercantum di bagian metrics
spesifikasi dari Datadog.
{ "level" : " info " , "ts" : 1668484420515.7678 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Metrics from the External Metrics Provider " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "metrics" :[ 33959 ]}
{ "level" : " info " , "ts" : 1668484420515.8203 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Value is below lowMark " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "usage" : " 33959m " , "replicaCount" : 7 , "currentReadyReplicas" : 8 , "tolerance (%)" : 1 , "adjustedLM" : 34650 , "adjustedUsage" : 33959 }
{ "level" : " info " , "ts" : 1668484420515.8906 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Proposing replicas " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "proposedReplicas" : 7 , "metricName" : " datadogmetric@datadog:example-watermarkpodautoscaler-utilization-metric{map[kube_container_name:my-container service:my-target]} " , "reference" : " Deployment/datadog/example-watermarkpodautoscaler " , "metric timestamp" : " Tue, 15 Nov 2022 03:53:20 UTC " }
{ "level" : " info " , "ts" : 1668484420515.9324 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Normalized Desired replicas " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "desiredReplicas" : 7 }
{ "level" : " info " , "ts" : 1668484420515.946 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Cooldown status " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "backoffUp" : false , "backoffDown" : false , "desiredReplicas" : 7 , "currentReplicas" : 8 }
{ "level" : " info " , "ts" : 1668484420515.9563 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Will not scale: value has not been out of bounds for long enough " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "time_left" : 2335 }
Di sini, jumlah replika yang terlihat dalam penerapan target saat ini adalah enam. Kami kemudian melihat nilai mentah yang diambil dari Penyedia Metrik Eksternal, dan kami membandingkannya dengan tanda air tinggi dan rendah. Berdasarkan hasil perbandingan ini, kami mencetak jumlah replika yang disarankan. Dalam hal ini, jumlahnya lima.
Jika Anda ingin menanyakan Penyedia Metrik Eksternal secara langsung, Anda dapat menggunakan perintah berikut:
kubectl get --raw " /apis/external.metrics.k8s.io/v1beta1/namespaces// | jq ."
Secara opsional, Anda juga dapat menambahkan pemilih label dengan menambahkan ?labelSelector=key%3Dvalue
. Jika kami ingin mengambil metrik dalam kasus ini, kami dapat menggunakan:
kubectl get --raw " /apis/external.metrics.k8s.io/v1beta1/namespaces// | jq .?labelSelector=key%3Dvalue%2Cotherkey%3Dothervalue%2Cshort_image%3Dimage "
Jika Anda melihat log seperti:
{ "level" : " info " , "ts" : 1566397216.8918724 , "logger" : " wpa_controller " , "msg" : " failed to compute desired number of replicas based on listed metrics for Deployment/datadog/propjoe-green: failed to get external metric dd.propjoe.request_duration.max: unable to get external metric datadog/propjoe-green/&LabelSelector{MatchLabels:map[string]string{fooa: bar,},MatchExpressions:[],}: no metrics returned from external metrics API " }
Kemudian Anda dapat memverifikasi bahwa metrik ini memang tidak tersedia dari Penyedia Metrik Eksternal. Hal ini mungkin terjadi karena kesalahan ketik pada label, atau metrik tidak dapat diambil dari Datadog (yang mungkin disebabkan oleh berbagai faktor: terlalu jarang, API tidak berfungsi, batas kecepatan tercapai, dll.). Anda dapat melihat log Penyedia Metrik Eksternal untuk penyelidikan lebih lanjut.
Kami kemudian memverifikasi pembatasan kecepatan penskalaan dan jendela cooldown. Dalam kasus pembatasan penskalaan, Anda akan melihat sesuatu seperti:
{ "level" : " info " , "ts" : 1566327268.8839815 , "logger" : " wpa_controller " , "msg" : " Upscaling rate higher than limit of 50.0% up to 9 replicas. Capping the maximum upscale to 9 replicas " }
{ "level" : " info " , "ts" : 1566327268.884001 , "logger" : " wpa_controller " , "msg" : " Returning 9 replicas, condition: ScaleUpLimit reason the desired replica count is increasing faster than the maximum scale rate " }
{ "level" : " info " , "ts" : 1566327479.8845513 , "logger" : " wpa_controller " , "msg" : " -> after normalization: 9 " }
Kemudian kami mempertimbangkan periode cooldown. Anda akan memiliki log yang menunjukkan kapan peristiwa penskalaan terakhir terjadi, serta kapan peristiwa skala atas dan bawah berikutnya dilarang hingga:
{ "level" : " info " , "ts" : 1566327479.8845847 , "logger" : " wpa_controller " , "msg" : " Too early to downscale. Last scale was at 2019-08-20 18:57:44 +0000 UTC, next downscale will be at 2019-08-20 18:58:44 +0000 UTC, last metrics timestamp: 2019-08-20 18:57:59 +0000 UTC " }
{ "level" : " info " , "ts" : 1566327479.8846018 , "logger" : " wpa_controller " , "msg" : " Too early to upscale. Last scale was at 2019-08-20 18:57:44 +0000 UTC, next upscale will be at 2019-08-20 18:58:14 +0000 UTC, last metrics timestamp: 2019-08-20 18:57:59 +0000 UTC " }
{ "level" : " info " , "ts" : 1566327479.884608 , "logger" : " wpa_controller " , "msg" : " backoffUp: true, backoffDown: true, desiredReplicas 5, currentReplicas: 6 " }
Terakhir, kami mendapatkan verifikasi bahwa penerapan telah diskalakan secara otomatis dengan benar:
{ "level" : " info " , "ts" : 1566327253.7887673 , "logger" : " wpa_controller " , "msg" : " Successful rescale of watermarkpodautoscaler, old size: 8, new size: 9, reason: cutom_metric.max{map[kubernetes_cluster:my-cluster service:my-service short_image:my-image]} above target " }
wpa.datadoghq.com/logs-attributes
untuk menambahkan nilai kunci tambahan di log yang terkait dengan objek WPA yang mendasarinya. Contoh: apiVersion: datadoghq.com/v1alpha1
kind: WatermarkPodAutoscaler
metadata:
annotations:
wpa.datadoghq.com/logs-attributes: '{"mywpa": "isgreat"}'
name: watermarkpodautoscaler-sinus
namespace: default
[...]
Akan menghasilkan:
{"level":"info","ts":1643642642091.062,"logger":"controllers.WatermarkPodAutoscaler","msg":"getReadyPodsCount","watermarkpodautoscaler":"default/watermarkpodautoscaler-sinus","mywpa":"isgreat","full podList length":2,"toleratedAsReadyPodCount":2,"incorrectly targeted pods":0}
Apa yang terjadi jika saya menskalakan penerapan saya secara manual?
Pada perulangan rekonsiliasi berikutnya, jumlah replika baru akan dipertimbangkan untuk menghitung jumlah replika yang diinginkan. Anda mungkin melihat log yang menyatakan bahwa sumber daya telah dimodifikasi oleh orang lain. Namun, jika jumlah replika yang dikonfigurasi berada di luar batas, pengontrol akan menskalakannya kembali ke jumlah replika dalam rentang yang dapat diterima.
Bagaimana cara menonaktifkan sementara WPA untuk meningkatkan/menurunkan penerapan saya secara manual?
Cara yang disarankan adalah mengatur WPA dalam mode uji coba dan kemudian menskalakan ke jumlah replika yang diinginkan. Anda dapat mengatur WPA dalam kondisi kering menggunakan perintah patch ini:
kubectl patch wpa --type='json' -p='[{"op": "replace", "path": "/spec/dryRun", "value":true}]'
Jangan lupa untuk mengatur kembali mode dry run ke false
setelah override sementara Anda selesai sehingga WPA aktif kembali.
Apa jejak pengontrolnya?
Dari pengujian kami, ini merupakan faktor jumlah penerapan di cluster.
Apakah pengontrolnya tidak memiliki kewarganegaraan?
Ya.
Apakah WPA mendukung banyak metrik?
Ya, WPA dapat menskalakan beberapa metrik dan cara kerjanya mirip dengan HPA. WPA mengevaluasi setiap metrik secara terpisah dan mengusulkan jumlah replika yang terkait dengan metrik yang memerlukan jumlah terbesar. Misalnya, jika WPA mengevaluasi metrik1, metrik2, metrik3, dan untuk setiap metrik tersebut menghitung masing-masing 10, 20, 30 replika proposal, maka proposal akhirnya adalah 30.
Karena kami melihat semua cluster definisi WPA secara luas, kami menggunakan peran cluster.
Opsi yang berguna adalah meniru identitas pengguna untuk memverifikasi hak. Misalnya, untuk memverifikasi bahwa Anda berhak mendapatkan penerapan sebagai akun layanan pengontrol WPA:
kubectl get deploy < your_deploy > --as system:serviceaccount:datadog:watermarkpodautoscaler -n < your_ns >
Atau, tanyakan pada Penyedia Metrik Eksternal:
kubectl get --raw " /apis/external.metrics.k8s.io/v1beta1/namespaces//metric --as system:serviceaccount::watermarkpodautoscaler
Persyaratan:
Setelah mengkloning repositori https://github.com/DataDog/watermarkpodautoscaler
, tetapkan beberapa variabel lingkungan:
export GO111MODULE=on
unset GOPATH
export PATH= $PATH : $( pwd ) /bin
Kemudian, untuk menginstal beberapa dependensi perkakas, jalankan make install-tools
.
make install-tools
: Instal perkakas untuk menggunakan SDK operator.make build
: Bangun pengontrol secara lokal.make generate
: Jalankan beberapa generator SDK operator, yang menghasilkan kode untuk pengontrol dan registrasi informan.make test
: Jalankan pengujian unit.make validate
: Jalankan linter Golang umum ( golangci-lint
).make e2e
: Menjalankan pengujian end-to-end pada cluster Kubernetes yang dikonfigurasi saat ini.make container
: Bangun image pengontrol Docker menggunakan operator SDK.make container-ci
: Membangun image pengontrol Docker dengan Dockerfile multi-tahap.Dokumentasi proses rilis tersedia di sini.
Beberapa fitur terinspirasi oleh Configurable HPA atau CHPA. Sebagian besar struktur kode juga digunakan untuk Watermark Pod Autoscaler, meskipun keseluruhan pengemasan CRD dilakukan dengan operator SDK.