-
Notifications
You must be signed in to change notification settings - Fork 879
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Disallow overlay driver when kernel prereq is unmet #774
Comments
@danehammer would you be able to push a PR to fix this ? |
I would certainly be interested, though I haven't written any golang yet. Tell me if this sounds right:
|
@danehammer If you need an example for the kernel version check, you can find it here |
What happens in the case, when I have say two hosts backed by a KV store, host A has the right kernel version, host B has lower version. Creating an overlay network will be allowed on host A will it be created on host B as well ?? Will this fix address this scenario as well ? |
That was the very problem that made me aware of this. I tried to deploy an app with docker-compose on a swarm and it failed to use the network once it went to deploy a container on the node with too low of kernel. As far as I understand, though, the docker-compose client would call each node's docker daemon API and call this libnetwork code, and fail to create the network (it creates a new overlay network on the fly if you do |
@danehammer @prateekgogia @aboch You should try to check for this during container join time rather than network create time. Overlay network is created cluster wide so there is no point in checking the kernel version on a particular host. But you can always check before running a container on a particular host on overlay network and check for kernel deps |
@mrjana then that would go in compose or swarm? |
Hi @mrjana @danehammer Error response from daemon: Cannot start container e8b3b310d902e50cd2d66b3ac7d9f54f0579a66f60acd338efa649fd54a2fb5e: subnet sandbox join failed for "10.0.0.0/24": vxlan interface creation failed for subnet "10.0.0.0/24": failed in prefunc: failed to set namespace on link "vxlan935ad6b": invalid argument Even attaching an existing container throws an error, if the kernel version < 3.16. However, since this host is on the cluster, I guess doing network ls fetches it from KV store. Do you think blocking GET from KV store will help when kernel version < 3.16 and also when someone tries to create/attach a container to an overlay network it won't find the network and error out saying network not created ? |
I think the best case scenario would be that in the event that I try to compose up an app, that it just doesn't put containers on the hosts that can't support the network. If there are conflicting constraints that means it can't start the container, it says so. I dug through the compose code last night, and it would appear that everything it does is through the client, so it's not "aware" of such limitations. I think I would look next to the swarm master docker daemon to say something like "no, you can't run that container on host X." Does that sound right? |
With #821, overlay networking is supported in older kernels as well. Closing this issue. |
I would not expect this to work, due to the kernel not being a high enough version for the overlay network driver. I would expect creation to fail.
The text was updated successfully, but these errors were encountered: