-
-
Notifications
You must be signed in to change notification settings - Fork 149
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
virtual nodes requires explicit pod command and dns configs #259
Comments
Thanks for taking this time to raise this @mgsnuno. It is always nice to read a well-written issue.
We should update
Happy for that to be the default. It's a shame that virtual kubelet doesn't honour
This is a pretty experimental feature. It's still early days but I agree the documentation is rather lacking at this point. @mgsnuno do you have any interest in raising PRs to address these issues? |
Thank you @jacobtomlinson After some more digging virtual-kubelet/azure-aci#8 seems to fix an issue so that we don't need to explicitly define DNS search in I agree with not changing
I got the default from dask's Dockerfile, not sure how to dynamically insert it in Sure, I can PR the documentation and |
I am in favour of changing. I was just saying we shouldn't really have to. But it doesn't seem like there is a downside to doing so.
Hardcoded is fine.
Setting Instead of creating a scheduler locally in the Python process it launches a pod for the scheduler and creates a service for clients and workers to connect to. So the client and workers will need to be able to connect to the service. As you suggested setting the service type to |
What are other ways of exposing it?
I've been working with it for the last 2 weeks and I randomly have DNS problems, it doesn't matter if I use the
I'll see how to best implement it. |
Kubectl proxy and node ports are two common ways. Various service meshes may also have their own way of doing things.
Sure |
The classic |
What happened:
dask deployment in azure aks kubernetes cluster with virtual nodes (virtual-kubelet) fails.
Minimal Complete Verifiable Example:
Explanation
As explained here there are two problems:
command + args
and dask only suppliesargs
.tcp://{name}.{namespace}:{port}
To fix 1 I explicitly added the entrypoint command as in here:
To fix 2 there are two options:
edit the line bellow into:
tcp://{name}.{namespace}.svc.cluster.local:{port}
dask-kubernetes/dask_kubernetes/core.py
Line 180 in b7ccae7
I verified that this works both for virtual and VM deployments.
References: AKS Connector KubeDNS Resolution and Service IP resolution is not working virtual-kubelet/virtual-kubelet#456 (comment), ACI pod cannot communicate with other pods Azure/AKS#868 (comment), virtual-kubelet has different DNS resolution behaviour to standard kubelet virtual-kubelet/azure-aci#46
use the
dnsConfig
options invirtual_config
aboveQuestion
What is the best way to address this and incorporate this into
dask-kubernetes
so that the only thing one needs to do to run using virtual nodes is:The references mentioned seem to indicate that the proper naming is
tcp://{name}.{namespace}.svc.cluster.local:{port}
, should this be default?Also while developing this it was hard to find in the documentation that we can have a fully remote deployment of workers and scheduler by setting
dask.config.set({"kubernetes.scheduler-service-type": "LoadBalancer"})
withdeploy_mode="remote"
.Versions
The text was updated successfully, but these errors were encountered: