-
Notifications
You must be signed in to change notification settings - Fork 19
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
Filter OpenShift VMs by features #770
Conversation
@rszwajko looks nice, but it looks too detailed to me, a user need to do lots of clicks and decisions to select all vms with some feature. @ahadas can we group some features that have things in common together (efi+tpm, cpu+gpu ... )? |
yeah, grouping features sounds like a good idea thinking out aloud:
so maybe that's actually a question to ask - what value should filtering by features bring to users? |
@ahadas thanks, @rszwajko can we do finer filtering using the warnings / errors, IARC we only filter by existing of warning or error, we don't differentiate between specific errors or warnings, @ahadas does it makes sense to allow filtering by different error / warning types ? @ahadas doe the scenario of making different plans for different VM gropups makes sense ? |
The future plan is to replace Plan Wizard with this screen i.e. you filter the VMs and click "Migrate" button.
For OpenShift providers we have the same capabilities on source and on the target so no feature need to be lost.
The primary use case is a successful migration of VMs with features that are not covered by our mappings. Such features require manual config on the target(i.e. in a dedicated namespace). Most likely other VMs will need a different setup so it's better to keep both groups separated. The flow could look the following:
|
It's possible to do free-text filtering based on labels. The structure looks the following:
|
yeah, that makes sense to me
it certainly makes sense to make different plans for different VM groups since we need a plan per target namespace, however, I don't think it would be based on the VM features/capabilities but rather based on their ownership/permissions |
ah ok, I didn't realize that's the context, thanks
currently you're right as we assume we migrate between OCP clusters that have the same OCP version
I see, but then looking at the features above:
there is SR-IOV that is namespace-scoped but that's supposed to be covered by the network mapping (i.e., if we get a VM from the source that is mapped to a network-attachment-definition with SR-IOV, then we need to make sure that network is mapped to a network-attachment-definition with SR-IOV on the target) |
@ahadas As for your comments - note that most of those features require configuration at node level. Nodes in turn can be assigned to namespaces (see below). However even if we assume that this is a cluster wide setting it only means that decision is made at different level i.e.
The feature requires nodes with a running CPU manager.
See https://kubevirt.io/user-guide/virtual_machines/host-devices/
Requires dedicated CPU resources and hugepages which are node-level.
I've over-interpreted the docs. The setting seems per cluster. |
Note: |
@rszwajko ack
can you point to me to where we see nodes can be assigned to namespaces? I'm not familiar with that configuration about the steps above, in our case it's not like oVirt that we have a data center that contains multiple clusters and then we pick VMs in the first step and follow with picking a target cluster, but rather we pick the target cluster (cluster == OCP instance) and then pick the VMs to migrate to a namespace in that cluster I doubt users would pick different OCP instances based on features, even though it's possible, but I think it's more likely that people would want to test things, e.g., test migration of a VM with vGPU, before initiating the full migration as @yaacov wrote above, so ok, I see the value in this now - it is worth mentioning it somewhere though
right, and CPU manager is enabled per-cluster
ack, it didn't exist back then so we also need to adjust our validations - we currently still warn users that host devices won't be mapped
ok, but the problem with node-level is that we don't know, in MTV, the node-level specification in kubevirt
here we have a bigger issue - we cannot get the persistent data from RHV and that from vSphere won't help us even if we could have got it, so regardless of the support for these features in kubevirt, we should warn about VMs with these features. we thought at some point, and I proposed it in kubevirt user's mailing list, to try to identify which features are supported or enabled in kubevirt - this could allow us to produce different message, e.g., when TPM is not supported in kubvirt vs. when it's supported, but it didn't get much attention from the kubevirt side so it means we'll have to store, e.g., TPM is supported as from version X, however this is not that easy and we'll need to have that mapping also for k8s.. |
check out PodNodeSelector
My understanding is that a cluster can have multiple nodes and not all nodes may have a CPU manager. Generally running the CPU manager and labeling seems a manual process.
Yes and it's unlikely that we will cover such advanced features with mappings. Preparing such configuration will rather stay a manual process. We can however try to support the users in the process i.e. with filtering the right VMs and choosing the pre-configured target provider/namespace. |
ah ok, so they're not really "assigned" but rather "selected", like we can affect pod scheduling with taints and tolerations but here it's done on at the namespace-level, nice
yes, the CPU manager runs on kubelet, i.e., on the nodes
we are definitely not going to prepare such configuration. btw, we also don't prepare network configuration but count on users to define the network attachment definitions and only map to them, so that makes sense about choosing pre-configured target provider/namespace automatically - that's very complicated. also take into account that in k8s it all works with "desired state" - you may want to migrate the vm to a new namespace or an existing namespace that don't yet have the resources the VMs need, but the VMs should still ask for them as you're going to add it later on I think it comes down to: in which situation we need a feature without a concern because if we have concerns (warnings / errors) for each feature, we better let users filter concerns rather than features |
examples: |
ok, let's check this concretely for the features above: |
@yaacov ok, that's something different - here you say when filtering of either concerns or features may be useful for the first case, do we agree that it's more likely that such filtering would happen with features that we have concerns for? the way you put it is too broad since for that we can add features of, e.g., 'two disks', 'nic with special properties', etc also think about our internal migration from RHV to OpenShift - this would mean to divide the plans that we created for each target namespace to multiple plans that are per-target namespace and per-feature. we have in the backlog a task about prioritization of the migrations - not to create plans with less VMs but to say "here is my plan, I want to start with certain VMs, then other group of VMs, and so on" for the third case, if users need to create new plans for failed migrations, we did something incorrect. user are supposed to be able to restart a plan and then only the failed migrations would be retriggered |
hmm, from my side this is a discussion about how to choose vms for migration plan, not about this specific feature list. this discussion is about how we can make the plan creation more useful, |
Supported features: 1. NUMA 2. GPUs/Host Devices 3. Persistent TPM/EFI 4. Dedicated CPU Signed-off-by: Radoslaw Szwajkowski <rszwajko@redhat.com>
Kudos, SonarCloud Quality Gate passed! 0 Bugs No Coverage information |
Change summary in the force push above:
|
@yaacov please re-review. |
@@ -64,3 +64,5 @@ autoattach | |||
virt | |||
multiqueue | |||
filesystems | |||
bootloader | |||
typeahead |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NICE !
Supported features: