Commit Graph

2460 Commits

Author SHA1 Message Date
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
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
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
David Porter
0020631985 test: Add node e2e to restart kubelet while pod is terminating
Add a regression test for https://issues.k8s.io/116925. The test
exercises the following:

1) Start a restart never pod which will exit with
   `v1.PodSucceeded` phase.
2) Start a graceful deletion of the pod (set a deletion timestamp)
3) Restart the kubelet as soon as the kubelet reports the pod is
   terminal (but before the pod is deleted).
4) Verify that after kubelet restart, the pod is deleted.

As of v1.27, there is a delay between the pod being marked terminal
phaes, and the status manager deleting the pod. If the kubelet is
restarted in the middle, after starting up again, the kubelet needs to
ensure the pod will be deleted on the API server.

Signed-off-by: David Porter <david@porter.me>
2023-04-11 01:39:05 -07:00
Davanum Srinivas
bda73bd112
Refactor remote runners
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2023-04-02 16:51:39 -04:00
David Porter
1893f639d0 test: Fix flake in node e2e mirror pod tests
The newly added `MirrorPodWithGracePeriod when create a mirror pod and
the container runtime is temporarily down during pod termination` test
is currently flaking because in some cases when it is run there are
other pods from other tests that are still in progress of being
terminated. This results in the test failing because it asserts metrics
that assume that there is only one pod running on the node.

To fix the flake, prior to starting the test, verify that no pods exist
in the api server other then the newly created mirror pod.

Signed-off-by: David Porter <david@porter.me>
2023-03-31 02:10:39 -07:00
Michal Wozniak
3d68f362c3 Give terminal phase correctly to all pods that will not be restarted 2023-03-16 21:25:29 +01:00
David Porter
6ead3e3945 test: Update standalone test in node e2e
* Slightly changed pod spec to repro issue #116262
* Refactor test to ensure that the static pod is deleted even if the
  test fails

Signed-off-by: David Porter <david@porter.me>
2023-03-15 14:00:39 -07:00
Kubernetes Prow Robot
ad4cbd4c85
Merge pull request #116628 from SergeyKanzhelev/fixStandaloneTest
fix standalone test
2023-03-15 13:47:17 -07:00
Kubernetes Prow Robot
602ba9a714
Merge pull request #116611 from dims/missed-registering-kubelet-config-file-for-make-test-e2e-node-usecase
missed registering kubelet-config-file for the command line use case running test-e2e-node target
2023-03-14 19:27:21 -07:00
Sergey Kanzhelev
ef0485e428 first iteration to add standalone mode 2023-03-15 00:59:55 +00:00
Sergey Kanzhelev
1e6281e4a2 first iteration to add standalone mode 2023-03-14 20:46:41 +00:00
Davanum Srinivas
ee294de56d
missed registering kubelet-config-file for the command line use case running test-e2e-node target
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2023-03-14 15:46:31 -04:00
Kubernetes Prow Robot
1cb334960c
Merge pull request #116591 from gjkim42/add-service-feature-gates-to-e2e_node
Add service-feature-gates argument to node_e2e
2023-03-14 10:41:17 -07:00
Kubernetes Prow Robot
bab2774b21
Merge pull request #116517 from dims/re-organize-remote-e2e-test-to-be-pluggable
re-organize remote e2e test to be pluggable
2023-03-14 10:41:00 -07:00
Kubernetes Prow Robot
204a9a1f17
Merge pull request #116459 from ffromani/podresources-ratelimit-minimal
add podresources DOS prevention using rate limit
2023-03-14 08:36:45 -07:00
Davanum Srinivas
a1d157bf32
Add some missing flags
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2023-03-14 10:36:25 -04:00
Gunju Kim
cdf501f77b
Add service-feature-gates argument to node_e2e
This separates the "service-feature-gates" argument from the
"feature-gates" to set feature gates of API service independently.
2023-03-14 22:54:30 +09:00
Davanum Srinivas
a889cc7f79
prevent initializing the same flag more than once
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2023-03-13 17:07:00 -04:00
Davanum Srinivas
be42dcfd73
re-organize remote e2e test to be pluggable
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2023-03-13 12:33:47 -04:00
Sergey Kanzhelev
009a2cbbc8 initialize feature gates in test project 2023-03-13 16:16:03 +00:00
Kubernetes Prow Robot
85524e7da6
Merge pull request #116518 from tzneal/refactor-remote-runner
test: refactor remote test running
2023-03-13 05:56:59 -07:00
Kubernetes Prow Robot
185cd95b9c
Merge pull request #113443 from yangjunmyfm192085/namespace-contextual-logging
namespace controller: use contextual logging
2023-03-13 04:34:44 -07:00
JunYang
f5bd8c86d4 namespace controller: use contextual logging 2023-03-13 14:59:17 +08:00
Todd Neal
23f71f0eba refactor remote test running 2023-03-12 21:26:01 -05:00