can you bump up CRI-O's pids_limit
to something higher like 4096
? We're in the process of dropping the field, but for now it can be increased
Created 10 months ago
@haircommander just tested crio with
# Maximum number of processes allowed in a container.
pids_limit = 4096
and it seems to work now. Thanks for your hint ;)
Created 10 months ago
excellent to hear!
nginx-ingress unable to reload worker processes #5779
What happened?
Just deploy a fresh k8s cluster with crio, deploy ingress-nginx and try to load ingresses. Nginx throws errors because it cannot respawn its worker processes:
If i just switch from crio to docker it works without any error - thats why i think the issue is related to crio and not to ingress-nginx.
The issue only happens if nginx has many worker processes. With testing i think the sweet spot is around 14- 18 worker processes.
We ran into the issue because by default, nginx-ingress has an auto setting for worker processes which spawns as many workers as cores are detected. If you have large systems with xxx cores the issue occures.
What did you expect to happen?
Nginx should work without any issues / should be able to spawn its worker processes.
How can we reproduce it (as minimally and precisely as possible)?
Yum install
Create k8s cluster
Prepare configs
Install nginx-ingress
Anything else we need to know?
If i set worker-processes to a lower value like 4x or 8x it works with crio.
If i set higher values like 14x i see that some worker processes are able to respawn and others fail with the error:
You can verify that from within the container if you run
ps auxf
and count the worker processes:If you set for example 20x worker processes via config file you should see 8x worker processes via ps auxf (after restarting the container / creating a new ingress object which triggers a realod) and 12x the error mesage from above; That means that 8x workeer processes are able to spawn and 12x are not (you see then 12x times the failed / exited error message).
Like i said before, if i remove crio and install docker everything works like it should.
Selinux is disabled. cgroups are managed via systemd (for both, crio and k8s).
CRI-O and Kubernetes version
OS version
Additional environment details (AWS, VirtualBox, physical, etc.)