Reviewed-by: Kovács, Zoltán <zkovacs@t-systems.com> Co-authored-by: Dong, Qiu Jian <qiujiandong1@huawei.com> Co-committed-by: Dong, Qiu Jian <qiujiandong1@huawei.com>
11 KiB
Configuring Timeout for a LoadBalancer Ingress
LoadBalancer ingresses support the following timeout settings:
- Idle timeout setting for client connections: Maximum duration for keeping a connection when no client request is received. If no request is received during this period, the load balancer closes the connection and establishes a new one with the client when the next request arrives.
- Timeout for waiting for a request from a client: If the client fails to send a request header to the load balancer during the timeout duration or the interval for sending body data exceeds a specified period, the load balancer will release the connection.
- Timeout setting for waiting for a response from a backend server: If the backend server fails to respond during the timeout duration, the load balancer will stop waiting and return HTTP 504 Gateway Timeout to the client.
Notes and Constraints
- The following table lists the scenarios where timeout can be configured for a Service.
Timeout Type
Load Balancer Type
Supported Cluster Version
Idle Timeout
Dedicated
- v1.19: v1.19.16-r30 or later
- v1.21: v1.21.10-r10 or later
- v1.23: v1.23.8-r10 or later
- v1.25: v1.25.3-r10 or later
- Other clusters of later versions
Request Timeout
Dedicated
Response Timeout
Dedicated
- If you delete the timeout configuration during an ingress update, the timeout configuration on the existing listeners will be retained.
Using kubectl
An ingress configuration example is as follows:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test namespace: default annotations: kubernetes.io/elb.port: '80' kubernetes.io/elb.id: <your_elb_id> # In this example, an existing dedicated load balancer is used. Replace its ID with the ID of your dedicated load balancer. kubernetes.io/elb.class: performance kubernetes.io/elb.keepalive_timeout: '300' # Timeout setting for client connections kubernetes.io/elb.client_timeout: '60' # Timeout duration for waiting for a request from a client kubernetes.io/elb.member_timeout: '60' # Timeout for waiting for a response from a backend server spec: rules: - host: '' http: paths: - path: / backend: service: name: test port: number: 80 property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific ingressClassName: cce
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
kubernetes.io/elb.keepalive_timeout |
No |
String |
Timeout for client connections. If there are no requests reaching the load balancer during the timeout duration, the load balancer will disconnect the connection from the client and establish a new connection when there is a new request. The value ranges from 0 to 4000 (in seconds). The default value is 60. |
kubernetes.io/elb.client_timeout |
No |
String |
Timeout for waiting for a request from a client. There are two cases:
The value ranges from 1 to 300 (in seconds). The default value is 60. |
kubernetes.io/elb.member_timeout |
No |
String |
Timeout for waiting for a response from a backend server. After a request is forwarded to the backend server, if the backend server does not respond within the duration specified by member_timeout, the load balancer will stop waiting and return HTTP 504 Gateway Timeout. The value ranges from 1 to 300 (in seconds). The default value is 60. |