-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
Ability to specify mon endpoints when using host networking #12363
Comments
Rook currently gets the host IP from the |
In our case our nodes all have InternalIP's set but those relate to our k8s 10Gb network, we want to bind the mon endpoints to our 40Gb switch subnet instead, so there needs to be a way to specify in the CephCluster CRD a list of IPs or a subnet that Rook can use for the mon endpoints to bind to, Rook may need to create a IP address mapping of all the nodes first to determine where to place the mon endpoints dynamically, if nothing is specified, then have it default back to its original logic. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in a week if no further activity occurs. Thank you for your contributions. |
@echel0n-TR In your K8s nodes, what do you see in the
|
@travisn below you can see what the output of the command you used but in our cluster, the IP address range we have assigned for ceph is 10.0.2.0/24 and is not shown in the output, instead we see our k8s IP address range.
|
I see, it seems we would have to purely configure this based off some custom settings in the CephCluster CR. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in a week if no further activity occurs. Thank you for your contributions. |
This issue has been automatically closed due to inactivity. Please re-open if this still requires investigation. |
Any update on this request? |
The design hasn't felt right, so this hasn't made progress. Here is another idea... Instead of settings in the CephCluster CR, what about node labels? This feels like a topology question very similar to the OSD topology labels. For example, the flow could be:
|
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in a week if no further activity occurs. Thank you for your contributions. |
this sounds like a more clean approach to the solution, when can that be implemented ? |
I think the reason that we have the mons specifically bind to the k8s Node resource's IP is because it is guaranteed to be routable to the Rook operator. The Rook operator pod isn't guaranteed to know how to reach the ceph public network to query mon health status, which means Rook could then create a cluster that it doesn't know how to manage. I think what you are suggesting would work, but we need some time to consider whether there are usage patterns where users would be able to shoot themselves in the foot easily by adding this option in. But the Rook is implemented today, the Ceph cluster should still be working even with mons on the k8s node IP, and there should be no bandwidth loss. The mons aren't directly in the Ceph data path for any ceph client. Mons are only contacted when the client makes initial contact, then the client communicates to OSDs (or MDSes), so bandwidth isn't lost to the Ceph cluster by the mons communicating on a different network. Both of these reasons are why it hasn't been a high priority to fix the situation. There isn't really enough downside to force our hand into doing the surprisingly large amount of work needed to plan through all of the use-cases and eventualities. |
@echel0n-HX With #13500 this change is implemented. I verified in minikube that I could apply an IP that was specified by the annotation, but I don't really know if it will work for your networked environment. Could you test this change? I've pushed an image with this change.
If you need any additional configuration such as running the operator on the host network, please comment here (or in #13500) to be clear about what it took to run as expected in your network configuration. |
@echel0n-TR @echel0n-HX Did you get a chance to look at this? |
Unfortunately we had to switch to a different storage system as the performance we got from rook-ceph was just not adequate to what our requirements are, so I am unable to test this for you, sorry. |
Ok thanks for the response, will close this for now until someone else has this requirement. |
@travisn We are interested in trying this. Currently running rook 1.14.4 We tested your code on 1.14.4 and it seems to work as expected.
|
@klippo Great to hear it's working for you. With that, I will reopen assuming you are interested in the feature getting into a release. |
Thanks @travisn , looking forward to this |
Is this a bug report or feature request?
What should the feature do:
Allow for specifying either a list of IPs or a subnet range that the mon endpoints are allowed to bind to, in the case event that nothing is specified in the Cluster CRD, default back to using the node's InternalIP, followed by the ExternalIP which is the current logic.
What is use case behind this feature:
Currently mon endpoints are used by the CSI to mount Ceph Filesystem volumes into the pod, having this feature would allow those mon endpoints to be bound to other networks instead of just to the Kubernetes cluster network, in our case our Kubernetes network is on a 10Gb switch, however, our Ceph public network uses a 40Gb switch which is idea for this scenario to be used for Ceph filesystem
Environment:
Kubernetes v1.27.1
Rook v1.11.7
Ceph v17.2.6
The text was updated successfully, but these errors were encountered: