kubernetes: Confusing use of TooManyRequests error for eviction
What happened?
When the Kubernetes API server returns a 429 (throttled), the response may include misleading cause information.
We observed that a pod eviction API call received a response that included both of the following fragments:
"responseStatus": {
"metadata": {},
"status": "Failure",
"reason": "TooManyRequests",
"code": 429
},
and
"responseObject": {
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "Cannot evict pod as it would violate the pod's disruption budget.",
"reason": "TooManyRequests",
"details": {
"causes": [
{
"reason": "DisruptionBudget",
"message": "The disruption budget [elided] needs 11 healthy pods and has 12 currently"
}
]
},
"code": 429
},
Note that the message given above is confusing, as there are more currently healthy pods than the required number.
What did you expect to happen?
When a request is rejected due to throttling (429 HTTP response), either
- no other error information should be included; or
- the included error information should indicate throttling
How can we reproduce it (as minimally and precisely as possible)?
Provoke a 429 HTTP response and inspect the response.
Anything else we need to know?
Issue #88535 seems to be similar - it also describes a 429 response where inclusion of a cause resulted in confusion.
Kubernetes version
Version: 1.20.9
Cloud provider
Azure Kubernetes Service
OS version
# On Linux:
$ cat /etc/os-release
# paste output here
$ uname -a
# paste output here
# On Windows:
C:\> wmic os get Caption, Version, BuildNumber, OSArchitecture
# paste output here
Install tools
Container runtime (CRI) and and version (if applicable)
Related plugins (CNI, CSI, …) and versions (if applicable)
About this issue
- Original URL
- State: open
- Created 3 years ago
- Comments: 18 (4 by maintainers)
any message coming back with PDB language in it belongs to sig-apps