You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue is a sub-issue of #4459 to focus on/discuss the case where the capacity of a persistent volume is larger than the one specified in the claim.
As an example here is a claim of 1Gi bounded to a volume with an actual physical capacity of 368Gi:
Having a capacity larger than the request may lead to the following situations:
Elasticsearch reports the total, observed, capacity as the required capacity for a tier. If the actual capacity is higher than the claim it can lead to some cascading scale up events, up to the limit specified by the user. It can also exceed to limit specified by the user in which case some not pertinent HorizontalScalingLimitReached events are generated.
If the actual capacity of a volume is greater than the claim, then the nodes may hold more data than the maximum one specified in the autoscaling specification. It may lead to overloaded nodes. For example, assuming the following autoscaling policy:
Say that the claims of 1Gi have been bound to volumes of 1Ti of data each, then chances are that the 2Gi of memory are not enough to handle that amount of data.
Unforeseeable storage capacity makes it hard to scale vertically. It is especially true as long as there is no memory requirement in the autoscaling Elasticsearch API and as long as the operator attempts to infer memory requirement from storage (see #4076).
Proposals
Documentation update
It should be clearly stated in the documentation that scaling vertically data nodes assumes that the storage provider provisions physical volume with a predictable and even capacity across all the volumes managed by an autoscaling policy.
Autoscaling controller update
If the operator detects that the capacity of a volume is greater than the one specified in the claim then:
Memory is computed according to the capacity of the volume, as reported in the PVC status, up to the memory limit specified by the user.
Print a log, update the status and emit a K8S warning.
The text was updated successfully, but these errors were encountered:
If the operator detects that the capacity of a volume is greater than the one specified in the claim then:
Memory is computed according to the capacity of the volume, as reported in the PVC status, up to the memory limit specified by the user.
On second thought I'm wondering if the capacity reported in the status of the PVC is always accurate. If not then the proposal would not always help. Maybe we should just consider the capacity as reported by Elasticsearch, raise some warning if it is not expected, without trying to scale vertically.
This issue is a sub-issue of #4459 to focus on/discuss the case where the capacity of a persistent volume is larger than the one specified in the claim.
As an example here is a claim of
1Gi
bounded to a volume with an actual physical capacity of368Gi
:Having a capacity larger than the request may lead to the following situations:
HorizontalScalingLimitReached
events are generated.Say that the claims of 1Gi have been bound to volumes of 1Ti of data each, then chances are that the 2Gi of memory are not enough to handle that amount of data.
Unforeseeable storage capacity makes it hard to scale vertically. It is especially true as long as there is no memory requirement in the autoscaling Elasticsearch API and as long as the operator attempts to infer memory requirement from storage (see #4076).
Proposals
Documentation update
It should be clearly stated in the documentation that scaling vertically data nodes assumes that the storage provider provisions physical volume with a predictable and even capacity across all the volumes managed by an autoscaling policy.
Autoscaling controller update
If the operator detects that the capacity of a volume is greater than the one specified in the claim then:
The text was updated successfully, but these errors were encountered: