Waypoint proxy'leri yüksek L7 trafik hacimlerini işlediğinde veya uzun ömürlü bağlantılar için zarif kapatma gerektirdiğinde varsayılan kaynak tahsisleri yetersiz kalabilir. Service Mesh (ASM), Ambient modunda Gateway API aracılığıyla dağıtılan Waypoint proxy'leri için CPU ve bellek isteklerini, Yatay Pod Otomatik Ölçeklendirici (HPA) ölçeklendirme sınırlarını ve proxy boşaltma davranışını özelleştirmenize olanak tanır.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Kümenizde Gateway API bileşeninin 1.2.1 veya sonraki bir sürümünün yüklü olması
Çalışma mantığı
Bir Waypoint'i özelleştirmek için hedef ayarları bir ConfigMap içinde tanımlayın ve bunu Gateway kaynağından referans verin. ASM, ConfigMap'i okur ve geçersiz kılmalarınızı Strategic Merge Patch kullanarak varsayılan kaynak yapılandırmasıyla birleştirir. ConfigMap'iniz yalnızca değiştirmek istediğiniz alanları içermelidir; ASM birleştirmeyi yönetir ve Waypoint Deployment ile HPA'yı buna göre oluşturur veya günceller.
ConfigMap üç yapılandırma bölümünü destekler:
| Bölüm | Amaç |
|---|---|
data.horizontalPodAutoscaler |
Minimum ve maksimum çoğaltma sayısı gibi HPA ayarları |
data.deployment |
Konteyner kaynak istekleri ve zarif kapatma zamanlaması gibi pod düzeyindeki ayarlar |
data.proxyConfig |
Boşaltma süresi ve sonlandırma davranışı gibi Istio proxy çalışma zamanı ayarları |
Özel ayarlara sahip bir ConfigMap oluşturun
ConfigMap, yapılandırdığı Gateway kaynağıyla aynı ad alanında olmalıdır.
-
Aşağıdaki içeriği
gw-options.yamlolarak kaydedin.apiVersion: v1 kind: ConfigMap metadata: name: gw-options data: horizontalPodAutoscaler: | spec: minReplicas: 2 maxReplicas: 2 deployment: | spec: # Do not configure replicas when HPA is enabled. # replicas: 4 template: spec: containers: - name: istio-proxy resources: requests: cpu: 1000m # The maximum wait time before a pod goes offline. terminationGracePeriodSeconds: 120 proxyConfig: | # The proxy drain duration. drainDuration: 30s # The maximum duration for the proxy to stop draining. Ensure that terminationGracePeriodSeconds > terminationDrainDuration > drainDuration. terminationDrainDuration: 60s -
ConfigMap'i uygulayın.
kubectl apply -f gw-options.yaml
ConfigMap parametre referansı
HPA parametreleri (data.horizontalPodAutoscaler)
| Parametre | Açıklama |
|---|---|
spec.minReplicas |
Minimum Waypoint pod çoğaltma sayısı. Önceki örnekte 2 olarak ayarlanmıştır. |
spec.maxReplicas |
Maksimum Waypoint pod çoğaltma sayısı. Önceki örnekte 2 (sabit çoğaltma sayısı) olarak ayarlanmıştır. |
HPA etkinleştirildiğinde Deployment bölümünde replicas ayarlamayın. HPA denetleyicisi çoğaltma sayılarını otomatik olarak yönetir ve statik bir replicas değeri HPA ölçeklendirme kararlarıyla çakışır.
Deployment parametreleri (data.deployment)
| Parametre | Açıklama |
|---|---|
spec.template.spec.containers[].name |
Konteyner adı. Waypoint proxy konteyneri için istio-proxy olarak ayarlayın. |
spec.template.spec.containers[].resources.requests.cpu |
Waypoint proxy için CPU isteği. Önceki örnekte 1000m (1 vCPU) olarak ayarlanmıştır. Yüksek L7 trafiğine sahip ad alanları için bu değeri artırın. |
spec.template.spec.terminationGracePeriodSeconds |
Kubernetes'in kapatma sırasında bir pod'u zorla sonlandırmadan önce beklediği maksimum süre (saniye cinsinden). Önceki örnekte 120 olarak ayarlanmıştır. |
ProxyConfig parametreleri (data.proxyConfig)
| Parametre | Açıklama |
|---|---|
drainDuration |
Envoy proxy'nin kapatma sırasında aktif bağlantıları boşalttığı süre. Önceki örnekte 30s olarak ayarlanmıştır. |
terminationDrainDuration |
Proxy'nin zarif kapatmayı başlattıktan sonra kalan bağlantıları sonlandırmadan önce beklediği maksimum süre. Önceki örnekte 60s olarak ayarlanmıştır. |
Üç zamanlama parametresi şu sıralama kısıtlamasını karşılamalıdır: terminationGracePeriodSeconds > terminationDrainDuration > drainDuration. Bu kısıtlama ihlal edilirse proxy boşaltmayı bitirmeden bağlantılar sonlandırılabilir ve bu da istek hatalarına neden olabilir.
ConfigMap'i Gateway kaynağına bağlayın
ConfigMap'i oluşturduktan sonra infrastructure.parametersRef alanı aracılığıyla onu Gateway kaynağından referans verin.
-
Aşağıdaki içeriği
gateway.yamlolarak kaydedin.infrastructure.parametersRefbloğugw-optionsConfigMap'ine referans verir. ASM bu referansı okur ve ConfigMap değerlerini Waypoint Deployment ve HPA'ya uygular.apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: waypoint namespace: default spec: infrastructure: parametersRef: group: "" kind: ConfigMap name: gw-options gatewayClassName: istio-waypoint listeners: - allowedRoutes: namespaces: from: Same name: mesh port: 15008 protocol: HBONE -
Gateway kaynağını uygulayın.
kubectl apply -f gateway.yaml
Yapılandırmayı doğrulayın
Her iki kaynağı da uyguladıktan sonra ASM'nin ConfigMap ayarlarını Waypoint Deployment ve HPA ile birleştirdiğini doğrulayın.
-
Waypoint Deployment'ı kontrol edin. Çıktıda şunları onaylayın:
istio-proxykonteynerininresources.requestsaltındacpu: 1000mdeğeri vardır.terminationGracePeriodSecondsdeğeri120olarak ayarlanmıştır.
kubectl get deployment waypoint -n default -o yaml -
HPA'yı kontrol edin. Waypoint HPA için
MINPODSdeğerinin2veMAXPODSdeğerinin2olduğunu onaylayın.kubectl get hpa -n default