mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-12-03 23:03:53 +00:00
Currently, when running node e2e it's not possible to use the ginkgo `--repeat` flag to run the test suite multiple times. This is useful when debugging tests and ensuring they are not flaky by re-running them several times. Currently if using `--repeat` ginkgo flag, the 2nd run of the test will fail due to kubelet not starting with message like: ``` Failed to start transient service unit: Unit kubelet-20221020T040841.service already exists. ``` This is because during the test startup, kubelet is started as a transient unit file via `systemd-run`. The unit is started with the `--remain-after-exit` flag to ensure that the unit will remain even if the kubelet is restarted. The test suite currently uses `systemd kill` command to stop kubelet. This works fine for stopping the kubelet, but on the second run, when `systemd-run` is used to start systemd unit again it will fail because the unit already exists. This is because `systemd kill` will not delete the systemd unit, only send SIGTERM signal to it. To fix this, add `unitName` as a field to the `server` struct. When kubelet server is constructed, set the unit name. As part of e2e test termination, in `E2EServices.Stop()``, stop the kubelet systemd unit. By stopping the kubelet systemd unit, systemd will delete the systemd transient unit, allowing it to be created and started again in a subsequent e2e run. Signed-off-by: David Porter <david@porter.me>