Commit Graph

2483 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
86d786090a Merge pull request #117793 from tzneal/memory-oom-group-support
use the cgroup aware OOM killer if available
2023-06-12 14:45:58 -07:00
Todd Neal
4e20a8f52b kill all processes in a container in the event of OOM
Set memory.oom.group if using cgroups v2 unified mode so all processes in
the container will be killed together in the event of an OOM kill.
2023-06-12 15:49:01 -05:00
Kubernetes Prow Robot
18d05b646d Merge pull request #117702 from kannon92/pod-ready-to-start-rename
feat: rename PodHasNetwork to PodReadyToStartContainers
2023-06-11 18:59:48 -07:00
Kubernetes Prow Robot
5f598179d8 Merge pull request #118492 from pacoxu/eviction-nil
fix eviction failing test for nil feature gates assignment
2023-06-07 12:02:24 -07:00
Kubernetes Prow Robot
fb9c22cb29 Merge pull request #118498 from pacoxu/nodegracefulshutdown-e2e
re-send the shutdown signal in case the dbus restart is not done
2023-06-07 10:20:12 -07:00
Ed Bartosh
58162ffd63 DRA: add node tests
- Setup overall test structure
- Tested Kubelet plugin re-registration on plugin and Kubelet restarts
- Tested pod processing on Kubelet start
2023-06-06 23:03:50 +03:00
Paco Xu
8b0a6ed699 re-send the shutdown signal in case the dbus restart is not done 2023-06-06 18:04:29 +08:00
Paco Xu
743e5525ed fix eviction failing test for nil feature gates assignment 2023-06-06 17:05:04 +08:00
Dixita Narang
369e3faa4f Moving Kubelet Credential Provider test to common so that it can be run both as Node and Cluster test
Signed-off-by: Dixita Narang <ndixita@google.com>
2023-05-30 20:15:40 +00:00
Kubernetes Prow Robot
03ebd4b7ef Merge pull request #116656 from HirazawaUi/fik-fd-leaks
Cleanup fd leaks and file removal cleanup
2023-05-24 22:50:50 -07:00
Kubernetes Prow Robot
e28866e976 Merge pull request #117393 from HirazawaUi/use-wait-replace-loop
Use wait to avoid blocking the SIGTERM handler
2023-05-23 19:07:00 -07:00
Kubernetes Prow Robot
c136b4884d Merge pull request #117017 from ike-ma/arm-ci
Setup e2e_node to support testing on ARM64
2023-05-23 14:22:49 -07:00
Kubernetes Prow Robot
8b8dfcad12 Merge pull request #117586 from mimowo/preemption-for-critical-pods
Add DisruptionTarget condition when preempting for critical pod
2023-05-23 11:22:27 -07:00
Ike Ma
e21cf9a54e Setup e2e_node to support testing on ARM64
* Enable dockerized build with --use-dockerized-build=true
* Build and create test artifacts for ARM64 with --target-build-arch=arm64
* Prepull multi-arch ready container image
* Download ARM64 binaries/packages if running on ARM64 machine
2023-05-20 00:07:44 +00:00
Kubernetes Prow Robot
8f9c185696 Merge pull request #116761 from iancoolidge/devel-cpuset-revendor
Complete cpuset export to k/utils by revendoring
2023-05-12 08:37:02 -07:00
HirazawaUi
cc1251123b use wait to avoid blocking the SIGTERM handler 2023-05-12 15:45:59 +08:00
HirazawaUi
5289a7b029 fix fd leaks and failed file removing for test directory 2023-05-09 09:22:31 -05:00
Kubernetes Prow Robot
dd43d864c1 Merge pull request #116901 from pacoxu/cleanup-KubeletCredentialProviders
remove GAed KubeletCredentialProviders (1.28)
2023-05-08 07:55:53 -07:00
Paco Xu
27cdddeaf1 update Feature:KubeletCredentialProviders] e2e test name 2023-05-08 11:53:14 +08:00
Kubernetes Prow Robot
b26a07a660 Merge pull request #117710 from hyangah/master
test/e2e_node: move getSampleDevicePluginPod to a test-only source file
2023-05-03 12:02:47 -07:00
Kubernetes Prow Robot
fb93000eb5 Merge pull request #117468 from HirazawaUi/replace-test-deprecated-ioutil
Replace the deprecated ioutil methods in the test directory
2023-05-03 12:02:32 -07:00
Ian K. Coolidge
cede96336a Depend on k8s.io/utils cpuset
Steps performed:

$ find . -name '*.go' -exec sed -i
's|k8s.io/kubernetes/pkg/kubelet/cm/cpuset|k8s.io/utils/cpuset|g' {} \
$ ./hack/update-vendor.sh
$ ./hack/update-gofmt.sh
$ git rm -r pkg/kubelet/cm/cpuset/
2023-05-03 16:26:09 +00:00
Hana (Hyang-Ah) Kim
17c17da97b e2e_node: move getSampleDevicePluginPod to device_plugin_test.go
image_list.go is one of the files included in the non-test variant Go build list, but its getSampleDevicePluginPod function references readDaemonSetV1OrDie function defined in device_plugin_test.go which is included in the test variant Go build list only. (The file name is *_test.go).

As a result, "go build" fails with the undefined reference error.

In practice, that may not be an issue since k8s project contributors aren't meant to run go build on this package. However, tools that depend on go build to operate - e.g., gopls or govulncheck ./... - will report this as an error.

Fix this error and make test/e2e package pass go build by moving this file to also test-only source code.
2023-05-03 08:37:40 -04:00
kannon92
5f489a3327 feat: rename PodHasNetwork to PodReadyToStartContainers 2023-05-02 19:52:23 +00:00
Michal Wozniak
e1e38148bb Add DisruptionTarget condition when preempting for critical pod 2023-05-02 18:53:19 +02:00
Kubernetes Prow Robot
1241ddc567 Merge pull request #116376 from swatisehgal/device-mgr-recovery-wip
node: device-mgr: Handle recovery flow by checking if healthy devices exist- attempt 2
2023-05-01 21:30:11 -07:00
Todd Neal
28c573358b test for init container restarts
Refactor tests and add an additional one to ensure init containers
don't restart upon regular container restart.
2023-04-28 13:13:55 -05:00
Swati Sehgal
d727df1741 node: device-plugin: e2e: Additional test cases
Additional test cases added:
Keeps device plugin assignments across pod and kubelet restarts (no device plugin re-registration)
Keeps device plugin assignments after the device plugin has re-registered (no kubelet or pod restart)

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2023-04-28 14:45:21 +01:00
Swati Sehgal
3dbb741c97 node: device-plugin: add node reboot test scenario
Add a test suit to simulate node reboot (achieved by removing pods
using CRI API before kubelet is restarted).

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2023-04-28 14:45:21 +01:00
Swati Sehgal
a26f4d855d node: device-plugin: e2e: Capture pod admission failure
This test captures that scenario where after kubelet restart,
application pod comes up and the device plugin pod hasn't re-registered
itself, the pod fails with admission error. It is worth noting that
once the device plugin pod has registered itself, another
application pod requesting devices ends up running
successfully.

For the test case where kubelet is restarted and device plugin
has re-registered without involving pod restart, since the
pod after kubelet restart ends up with admission error,
we cannot be certain the device that the second pod (pod2) would
get. As long as, it gets a device we consider the test to pass.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2023-04-28 14:44:42 +01:00
Swati Sehgal
9697573703 node: device-mgr: e2e: adapt to sample device plugin refactoring
These updates are to adapt to the sample device plugin
refactoring done here: 92e00203e0.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2023-04-28 14:43:25 +01:00
Swati Sehgal
282a6a80b9 node: device-mgr: e2e: Update the e2e test to reproduce issue:109595
Breakdown of the steps implemented as part of this e2e test is as follows:
1. Create a file `registration` at path `/var/lib/kubelet/device-plugins/sample/`
2. Create sample device plugin with an environment variable with
   `REGISTER_CONTROL_FILE=/var/lib/kubelet/device-plugins/sample/registration` that
    waits for a client to delete the control file.
3. Trigger plugin registeration by deleting the abovementioned directory.
4. Create a test pod requesting devices exposed by the device plugin.
5. Stop kubelet.
6. Remove pods using CRI to ensure new pods are created after kubelet restart.
7. Restart kubelet.
8. Wait for the sample device plugin pod to be running. In this case,
   the registration is not triggered.
9. Ensure that resource capacity/allocatable exported by the device plugin is zero.
10. The test pod should fail with `UnexpectedAdmissionError`
11. Delete the test pod.
12. Delete the sample device plugin pod.
13. Remove `/var/lib/kubelet/device-plugins/sample/` and its content, the directory
    created to control registration

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2023-04-28 14:43:17 +01:00
Swati Sehgal
d509e79837 node: device-mgr: e2e: Implement End to end test
This commit reuses e2e tests implmented as part of https://github.com/kubernetes/kubernetes/pull/110729.
The commit is borrowed from the aforementioned PR as is to preserve
authorship. Subsequent commit will update the end to end test to
simulate the problem this PR is trying to solve by reproducing
the issue: 109595.

Co-authored-by: Francesco Romani <fromani@redhat.com>
Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2023-04-28 14:41:38 +01:00
Sergey Kanzhelev
fc0d2cd32f added init containers tests to simplify the sidecar KEP large PR 2023-04-27 22:42:49 +00:00
Kubernetes Prow Robot
299db84401 Merge pull request #117057 from ffromani/e2e-device-plugin-test-fixes
node: e2e device plugin test improvements
2023-04-27 12:28:34 -07:00
Swati Sehgal
0a58243159 node: device-plugin: e2e: Add test case for kubelet restart
Capture explicitly a test case pertaining to kubelet restart
but with no pod restart and device plugin re-registration.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2023-04-26 15:33:00 +02:00
Swati Sehgal
0910080472 node: device-plugin: e2e: Provide sleep intervals via constants
Based on whether the test case requires pod restart or not, the sleep
interval needs to be updated and we define constants to represent the two
sleep intervals that can be used in the corresponding test cases.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
Co-authored-by: Francesco Romani <fromani@redhat.com>
2023-04-26 15:32:59 +02:00
Swati Sehgal
4a0f7c791f node: device-plugin: e2e: Update test description to make it explicit
Explicitly state that the test involves kubelet restart and device plugin
re-registration (no pod restart)

We remove the part of the code where we wait for the pod to restart as this
test case should no longer involve pod restart.

In addition to that, we use `waitForNodeReady` instead of `WaitForAllNodesSchedulable`
for ensuring that the node is ready for pods to be scheduled on it.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
Co-authored-by: Francesco Romani <fromani@redhat.com>
2023-04-26 15:32:57 +02:00
Swati Sehgal
fd459beeff node: device-plugin: e2e: Isolate test to pod restart scenario
Rather than testing out for both pod restart and kubelet restart,
we change the tests to just handle pod restart scenario.

Clarify the test purpose and add extra check to tighten the test.

We would be adding additional tests to cover kubelet restart scenarios
in subsequent commits.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
Signed-off-by: Francesco Romani <fromani@redhat.com>
2023-04-26 15:32:54 +02:00
Swati Sehgal
5ab4ba6205 node: device-plugin: e2e: Annotate device check with error message
With this change the error message are more helpful and easier
to troubleshoot in case of test failures.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2023-04-26 15:32:21 +02:00
Swati Sehgal
5c4f397361 node: device-plugins: e2e: s/devLen/expectedSampleDevsAmount
We rename to make the intent more explicit;
We make it global to be able to reuse the value all across the module
(e.g. to check the node readiness) later on.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
Co-authored-by: Francesco Romani <fromani@redhat.com>
2023-04-26 15:32:16 +02:00
Swati Sehgal
0aa6a5726a node: device-plugins: e2e: Refactor parse log to return string and error
Rather than only returning a string forcing us to log failure with
`framework.Fail`, we return a string and error to handle error cases
more conventionally. This enables us to use the `parseLog` function
inside `Eventually` and `Consistently` blocks, or in general to delegate
the error processing and enable better composability.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
Co-authored-by: Francesco Romani <fromani@redhat.com>
2023-04-26 15:31:16 +02:00
HirazawaUi
a8b808ee6c Replace the deprecated ioutil methods in the test directory 2023-04-18 21:51:10 +08:00
Kubernetes Prow Robot
53cccbe4f9 Merge pull request #117019 from bobbypage/gh_116925
kubelet: Mark new terminal pods as non-finished in pod worker
2023-04-17 15:10:58 -07:00
Todd Neal
453f81d1ca kubelet: pass context to VolumeManager.WaitFor*
This allows us to return with a timeout error as soon as the
context is canceled.  Previously in cases where the mount will
never succeed pods can get stuck deleting for 2 minutes.

In the Sync*Pod methods that call VolumeManager.WaitFor*, we
must filter out wait.Interrupted errors from being logged as
they are part of control flow, not runtime problems. Any
early interruption should result in exiting the Sync*Pod method
as quickly as possible without logging intermediate errors.
2023-04-17 11:53:28 -05:00
Ed Bartosh
1b93abb9ba Move kubelet config API to e2e_node
This API is only used by e2e_node, moved it out of e2e framework.
2023-04-14 17:56:15 +03:00
Kubernetes Prow Robot
c1bbf791dd Merge pull request #117282 from bart0sh/PR108-e2e-framework-get-rid-of-k/k/pkg/kubelet-dep
get rid of e2e/framework -> k/k/pkg/kubelet dependency
2023-04-14 02:06:40 -07:00
Hao Ruan
c4e1b01416 replace spew methods with dump methods 2023-04-14 08:05:53 +08:00
Ed Bartosh
867be8fc3e get rid of e2e/framework -> k/k/pkg/kubelet dependency
It's conceptually wrong to have dependencies to k/k/pkg in
the e2e framework code. They should be moved to corresponding
packages, in this particular case to the test/e2e_node.
2023-04-14 00:28:33 +03:00
Kubernetes Prow Robot
19f3cf66d3 Merge pull request #117053 from dims/refactor-remote-runner-to-be-pluggable
Refactor remote runners to allow pluggable cloud specific extensions
2023-04-11 20:20:56 -07:00