Profile Applicability:
Level 1
Description:
The --request-timeout argument sets the maximum duration for the Kubernetes API server to wait for a request to complete before it is considered a failure. This timeout setting applies to client requests to the API server, ensuring that long-running requests are terminated if they exceed the specified time limit. It helps prevent excessive resource usage by stuck or unresponsive requests.
Rationale:
Setting an appropriate --request-timeout value helps prevent the API server from hanging indefinitely on requests that take too long. It ensures that Kubernetes remains responsive and available by allowing control over how long to wait for a request before aborting it. Adjusting this setting appropriately is important to balance between ensuring successful request completion and preventing resource exhaustion.
Impact:
Pros:
Prevents hanging or unresponsive requests from impacting cluster performance.
Ensures that resources are freed up if requests exceed a reasonable time threshold.
Cons:
If set too low, legitimate long-running requests (e.g., large batch processing) might be prematurely terminated.
Misconfiguration could lead to unnecessary request failures if the timeout is too aggressive for certain workloads.
Default Value:
The default value is typically 0 (no timeout), meaning requests will not be timed out by default unless configured.
Pre-requisites:
The timeout value should be configured based on the workload and the expected response times of API requests.
The appropriate timeout duration should be determined after evaluating the cluster's workloads and typical request durations.
Test Plan:
Using AWS Console:
Sign in to the AWS Management Console.
Navigate to your EKS Cluster.
Go to the API server configuration and check the --request-timeout argument to ensure it is set appropriately based on your environment's needs.
Using AWS CLI:
Run the following AWS CLI command to describe your EKS cluster's configuration:
aws eks describe-cluster --name <cluster-name> --query "cluster.config"
Verify that the --request-timeout argument is set to an appropriate value.
Implementation Plan
Using AWS Console:
Navigate to the EKS cluster in the AWS Console.
Under the Cluster Configuration section, modify the API server's settings.
Set the --request-timeout argument to a value that suits your workload requirements (e.g., 5m for 5 minutes).
Save the configuration and apply the changes.
Using AWS CLI:
Update the --request-timeout argument to an appropriate value:
aws eks update-cluster-config --name <cluster-name> --kubernetes-version <kubernetes-version> --request-timeout <value>
Backout Plan
Using AWS Console:
Navigate to the EKS cluster's API server configuration.
If necessary, revert the --request-timeout argument to the previous value (e.g., 0 for no timeout).
Save the configuration and redeploy the cluster.
Using AWS CLI:
If issues occur, revert the change using:
aws eks update-cluster-config --name <cluster-name> --kubernetes-version <kubernetes-version> --request-timeout <previous-value>
References:
Kubernetes API Server Command-Line Flags
EKS Cluster Management