Skip to content

Commit

Permalink
Merge pull request #273 from jherrman/patch-2
Browse files Browse the repository at this point in the history
Writing style tweaks for HCOMisconfiguredDescheduler.md
  • Loading branch information
sradco authored Nov 14, 2024
2 parents 128ddac + 4ef6a2b commit fb60120
Showing 1 changed file with 25 additions and 23 deletions.
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
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 @@ unstable or oscillatory behavior, undermining cluster stability.
$ 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

0 comments on commit fb60120

Please sign in to comment.