@@ -54,3 +54,76 @@ honor these settings, where applicable.
5454 makes the tests which verify the contextual logging integrity dump the full raw captured logs
5555 before to run any actual test. Useful for troubleshooting and test fixing/tuning.
5656 NOTE: setting this value will make the test output significantly larger.
57+
58+ ## how to run
59+
60+ The simplest way is from your terminal:
61+
62+ ``` bash
63+ make test-e2e-kind
64+ ```
65+
66+ This creates a kind cluster from scratch, deploys the driver, and runs the full suite.
67+
68+ To run against an existing cluster with the driver already deployed:
69+
70+ ``` bash
71+ make test-e2e
72+ ```
73+
74+ Note: ` make test-e2e ` does not build or load the test image; it only runs the Go e2e suite.
75+ The ` make test-e2e-kind ` target builds and loads the image
76+ automatically into a kind cluster, but for an arbitrary cluster the default ` IMAGE_TEST ` value
77+ points at the local CI image name and will not be pullable. Either make sure the
78+ test image is available to the cluster, or override the image explicitly:
79+
80+ ``` bash
81+ DRACPU_E2E_TEST_IMAGE=< image> make test-e2e
82+ ```
83+
84+ ### troubleshooting
85+
86+ - ** Kubelet fails with ` unknown service runtime.v1.RuntimeService ` **
87+
88+ The real error is in the containerd logs: ` failed to create fsnotify watcher: too many open files ` .
89+ The host's ` fs.inotify.max_user_instances ` (default 128) is exhausted.
90+
91+ Fix: ` sudo sysctl fs.inotify.max_user_instances=1024 ` , then recreate the cluster.
92+
93+ - ** ` kind load docker-image ` fails with ` no unpack platforms defined ` **
94+
95+ Happens with fuse-overlayfs storage driver and kind < v0.32.0
96+ ([ kind #3945 ] ( https://github.com/kubernetes-sigs/kind/issues/3945 ) .
97+
98+ Fix: upgrade kind and rebuild the node image:
99+
100+ ``` bash
101+ go install sigs.k8s.io/kind@v0.32.0
102+ docker rmi kindest/node:< version>
103+ ```
104+
105+ - ** Pods fail with ` openat2 .../cpuset.cpus: no such file or directory ` **
106+
107+ When running kind with rootless Docker, the ` cpuset ` cgroup controller is not
108+ delegated to user sessions by default. The NRI hook sets ` cpuset.cpus ` on every
109+ container, so all pods (including CoreDNS) crash on startup.
110+
111+ Verify by checking inside a kind node:
112+
113+ ``` bash
114+ docker exec < kind-node> cat /sys/fs/cgroup/cgroup.controllers
115+ # If "cpuset" is missing from the output, this is the issue.
116+ ```
117+
118+ Fix:
119+
120+ ``` bash
121+ sudo mkdir -p /etc/systemd/system/user@.service.d
122+ sudo tee /etc/systemd/system/user@.service.d/delegate-cpuset.conf << EOF
123+ [Service]
124+ Delegate=cpuset cpu io memory pids
125+ EOF
126+ sudo systemctl daemon-reload
127+ ` ` `
128+
129+ Then recreate the kind cluster.
0 commit comments