Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Writing style tweaks for HCOMisconfiguredDescheduler.md #273

Merged
merged 1 commit into from
Nov 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 25 additions & 23 deletions docs/runbooks/HCOMisconfiguredDescheduler.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,31 @@

## Meaning

A Descheduler is a Kubernetes application that causes the control plane to
A descheduler is a Kubernetes application that causes the control plane to
sradco marked this conversation as resolved.
Show resolved Hide resolved
re-arrange the workloads in a better way.

The descheduler uses the Kubernetes eviction API to evict pods, and receives
feedback from `kube-api` whether the eviction request was granted or not.
On the other side, in order to keep VM live and trigger live-migration,
KubeVirt handles eviction requests in a custom way and unfortunately
a live migration takes time.
So from the descheduler's point of view, `virt-launcher` pods fail to be
evicted, but they actually migrating to another node in background.
So the way KubeVirt handles eviction requests causes the descheduler to
make wrong decisions and take wrong actions that could destabilize the cluster.
feedback from `kube-api` on whether the eviction request was granted.
In contrast, to keep a VM live and trigger a live migration,
KubeVirt handles eviction requests in a custom manner,
and a live migration takes time to perform.

Therefore, when a `virt-launcher` pod is migrating to another node in the background,
the descheduler detects this as a pod that failed to be evicted. As a consequence,
the manner in which KubeVirt handles eviction requests causes the descheduler
to make incorrect decisions and take incorrect actions that might destabilize the cluster.

Check failure on line 17 in docs/runbooks/HCOMisconfiguredDescheduler.md

View workflow job for this annotation

GitHub Actions / Sanity Checks

Line length

docs/runbooks/HCOMisconfiguredDescheduler.md:17:81 MD013/line-length Line length [Expected: 80; Actual: 90] https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md013.md

To correctly handle the special case of `VM` pod evicted triggering a live
To correctly handle the special case of an evicted VM pod triggering a live
migration to another node, the `Kube Descheduler Operator` introduced
a `profileCustomizations` named `devEnableEvictionsInBackground`
which is currently considered an `alpha` feature
on `Kube Descheduler Operator` side.
a `profileCustomizations` named `devEnableEvictionsInBackground`.
This is currently considered an `alpha` feature for
on `Kube Descheduler Operator`.

## Impact

Using the descheduler operator for KubeVirt VMs without the
`devEnableEvictionsInBackground` profile customization can lead to
unstable or oscillatory behavior, undermining cluster stability.
`devEnableEvictionsInBackground` profile customization might lead
to unstable or unpredictable behavior, which negatively impacts cluster stability.

## Diagnosis

Expand All @@ -36,31 +36,33 @@
$ kubectl get -n openshift-kube-descheduler-operator KubeDescheduler cluster -o yaml
```

looking for:
2. Search for the following lines in the CR:

```yaml
spec:
profileCustomizations:
devEnableEvictionsInBackground: true
```

If not there, the `Kube Descheduler Operator` is not correctly configured
If these lines are not present, the `Kube Descheduler Operator` is not correctly configured

Check failure on line 47 in docs/runbooks/HCOMisconfiguredDescheduler.md

View workflow job for this annotation

GitHub Actions / Sanity Checks

Line length

docs/runbooks/HCOMisconfiguredDescheduler.md:47:81 MD013/line-length Line length [Expected: 80; Actual: 91] https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md013.md
to work alongside KubeVirt.

## Mitigation

Set:
Do one of the following:

* Add the following lines to the CR for `Kube Descheduler Operator`:
```yaml
spec:
profileCustomizations:
devEnableEvictionsInBackground: true
```
on the CR for the `Kube Descheduler Operator` or
remove the `Kube Descheduler Operator`.

Please notice that `EvictionsInBackground` is an alpha feature,
and it's subject to change and currently provided as an
experimental feature.
* Remove the `Kube Descheduler Operator`.

Note that `EvictionsInBackground` is an alpha feature,
and as such, it is provided as an experimental feature
and is subject to change.

<!--DS: If you cannot resolve the issue, log in to the
link:https://access.redhat.com[Customer Portal] and open a support case,
Expand Down
Loading