Gateway con Inference Extension se basa en Envoy Gateway. Para ajustar los parámetros de ejecución (réplicas, recursos de CPU y memoria, tipo de servicio y comportamiento de escalado), modifique el recurso personalizado EnvoyProxy y vincúlelo a un Gateway o a una GatewayClass.
Cómo funciona
Existen dos ámbitos de configuración:
|
Ámbito |
Cómo vincular |
Efecto |
|
Nivel de Gateway |
Referencie |
Solo ese Gateway usa los parámetros personalizados |
|
Nivel de GatewayClass |
Referencie |
Todos los Gateways de esa clase heredan los parámetros, a menos que definan los suyos propios |
Si se configuran ambos ámbitos, los parámetros de nivel de Gateway tienen prioridad.
Cuándo usar cada ámbito:
Use la configuración de nivel de Gateway cuando distintos Gateways de la misma clase requieran perfiles de recursos diferentes (por ejemplo, distinto número de réplicas para producción y pruebas).
Use la configuración de nivel de GatewayClass para aplicar una línea base compartida a todos los Gateways de una clase y permitir que cada Gateway sobrescriba solo los campos que difieran.
Antes de empezar
Antes de configurar, considere las siguientes restricciones:
Un recurso
Gatewaysolo puede hacer referencia a unEnvoyProxyen el mismo namespace.Si configura tanto
envoyDeployment.replicascomoenvoyHpa, omitareplicasenenvoyDeployment. El Horizontal Pod Autoscaler (HPA) administra el recuento de réplicas.
Configurar un solo Gateway
Haga referencia a un recurso EnvoyProxy desde el campo infrastructure.parametersRef del Gateway:
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: eg
spec:
gatewayClassName: eg
infrastructure:
parametersRef:
group: gateway.envoyproxy.io
kind: EnvoyProxy
name: custom-proxy-config
listeners:
- name: http
protocol: HTTP
port: 80
---
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
name: custom-proxy-config
spec:
provider:
type: Kubernetes
kubernetes:
envoyDeployment:
replicas: 2
container:
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
Configurar todos los Gateways en una GatewayClass
Haga referencia a un recurso EnvoyProxy desde el campo parametersRef de la GatewayClass:
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: eg
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
parametersRef:
group: gateway.envoyproxy.io
kind: EnvoyProxy
name: custom-proxy-config
namespace: default
---
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
name: custom-proxy-config
namespace: default
spec:
provider:
type: Kubernetes
kubernetes:
envoyDeployment:
replicas: 2
container:
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
Todos los recursos Gateway bajo esta GatewayClass heredan estos parámetros. Un Gateway que haga referencia a su propio EnvoyProxy sobrescribe estos valores de nivel de clase solo para ese Gateway.
Referencia de campos de EnvoyProxy
El siguiente ejemplo muestra el conjunto completo de campos de uso común:
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
name: custom-proxy-config
spec:
provider:
type: Kubernetes
kubernetes:
envoyDeployment:
replicas: 2 # Omit if envoyHpa is also configured.
strategy:
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
pod:
affinity: ...
tolerations: ...
nodeSelector: ...
container:
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
envoyService:
annotations:
key: value
labels:
key: value
type: LoadBalancer
loadBalancerClass: ...
externalTrafficPolicy: Cluster # or Local
envoyHpa:
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
envoyPDB:
minAvailable: 1
La siguiente tabla describe los campos de nivel superior bajo kubernetes:
|
Campo |
Tipo |
Obligatorio |
Descripción |
|
|
No |
Configuración de la carga de trabajo para el Gateway personalizado. |
|
|
|
No |
Configuración del servicio para el Gateway personalizado. |
|
|
|
No |
Configuración de HPA para el Gateway personalizado. |
|
|
|
No |
Configuración de PodDisruptionBudget (PDB) para el Gateway personalizado. |
Para consultar la especificación completa de la API de EnvoyProxy, consulte EnvoyProxy.