-
Notifications
You must be signed in to change notification settings - Fork 296
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
[Feature] Support for anti-affinity/affinity rules for the created machines #175
Comments
/kind feature |
This potentially can get done for v1alpha1, but it isn't a feature that's absolutely needs to go in for this release. If it gets done in time and the PR has been reviewed, we can make a judgement call at that time. |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Any reason why this can't be supported without DRS? Not sure DRS works across multiple clusters, and scheduling aross multiple clusters in a vcenter seems like a reasonable thing todo? |
This may need to be punted to v1alpha2. If not we need to resource this work yesterday. cc @frapposelli |
@moshloop affinity/anti-affinity rules are defined within a DRS-enabled cluster, a cluster is also a fault-domain boundary for vSphere. Deploying across multiple clusters should be possible today using @akutz this is potentially a noop (see kubernetes/cloud-provider-vsphere#179), but even if not, definitely needs to be punted to v1alpha2. |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle rotten |
Short Answer: No. Without-DRS, it won't be effective. Long Answer: I have been working on a design-proposal for supporting Antiafinity/Affinity. Attached. |
@sujeet-banerjee Can you create a google doc for commenting and review? vMotion is something I believe should be turned off for kubernetes clusters as it conflicts with kubernetes view of the system. If a host fails then kubernetes should reschedule the pods that become not ready, cluster-api machineset should then detect unresponsive nodes, and create new ones. Same applies to DRS, it should be turned off and kubernetes native components like descheduler used to move and rebalance workloads. Without DRS or vMotion, machine affinity/antiAffinity can easily be implemented when creating a machine by listing all available hosts/clusters and running through rules list in the same way pod affinity is implemented. |
+1 to this, please use Google docs so we can comment/review :) |
Could you point me to the shared location where I could add the doc?
I somehow disagree on a few things, |
Proposal Doc: https://docs.google.com/document/d/1fNm53l5K0OfPrGc3zhjNDYzVQNBEc85uEJfNwtiDQrY I would invite folks to review the proposal and add suggestions (if any). Thanks, |
I believe |
@moshloop |
@brysonshepherd vMotion requires shared storage which is really expensive, slow and unreliable (when compared to just starting a new vm) |
antiAffinity using a topology key would work as new hosts, clusters and datancenters are added and removed: e.g. vmAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
topologyKey: "vmware.io/hostname" and to distribute nodes across multiple clusters vmAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
topologyKey: "vmware.io/clustername" |
Some users may pay for that higher level of service for higher uptime. In my organizations current use case, drs and vmotion are needed. |
Shared storage is much more likely to reduce uptime than it is to increase it, especially when your application is stateless and doesn't need persistent storage. Even when an application requires clustered or replicated storage, the control plane (kubernetes) should not share the same shared fault domain. vMotion has it's advantages and is often the easiest solution from an operational overhead, but if you want to achieve the highest levels of resilience and uptime your kubernetes nodes shouldn't be using it. |
@moshloop I'm not saying that vmotion is what I want, it is just faster than making a new node. If making a new node (along with rescheduling/starting up the pods) was faster, then that is what I would do. But it isn't. At least not that I'm aware of. |
The time to recover a pod doesn't need to be instant, just reasonable - You should be running multiple pods with enough headroom to survive the loss of one pod, If you lose a physical ESXi host than the VM doesn't get vMotion'ed, it gets booted on a different host, potentially goes through disk crash recovery and rejoins the cluster - in the meantime the pods running on the node may have already been detected as down and rescheduled. |
The discussion moved to: https://docs.google.com/document/d/1fNm53l5K0OfPrGc3zhjNDYzVQNBEc85uEJfNwtiDQrY/edit# |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
ping @pdaigle |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle stale |
/remove-lifecycle rotten |
- Set keyname on instances - Better handle certificate missing from machine status in GetKubeConfig
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/lifecycle frozen |
naively looking at this, and wondering, Since @srm09 added https://github.com/kubernetes-sigs/cluster-api-provider-vsphere/pull/1182/files , would it be possibly to hijack the |
@jayunit100 I am not sure I quite understand what you are looking for here? Currently multi AZ allows you to attach VMs to specific hosts, if the host groups are setup to point to a particular host. |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/close |
@srm09: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Does VSphereDeploymnetZone tie the machines (VMs) to specific ESXi hosts? As I understand, ESXi hosts may be added/taken down at the will of the end-users, within a vSphere cluster. Not sure if it's a good idea to tie/specify host details in the affinity definition (machine/machine-set CRDs). |
vsphere DRS supports defining anti-affinity / affinity rules for VMs. This feature is to add support for the user to specify affinity/anti-affinity grouping for the VMs.
Use case: User created 3 Machine object, and want all 3 VMs to run on different hosts to improve resiliency from host failures. This can easily be realized by creating the anti-affinity rule for the 3 VMs
The text was updated successfully, but these errors were encountered: