open-cluster-management-io / community

open-cluster-management governance material.
https://open-cluster-management.io
Apache License 2.0
61 stars 23 forks source link

Topology aware scheduling in cloud native multi-cluster/multi-cloud environments #153

Open yue9944882 opened 2 years ago

yue9944882 commented 2 years ago

Background

About: Open-Cluster-Management

Open Cluster Management (OCM) is a community-driven project that is focused on multicluster and multicloud scenarios for Kubernetes applications. Open APIs are evolving within this project for cluster registration, work distribution, dynamic placement of policies and workloads, and much more.

About: Placement

The placement concept is used to dynamically select a set of clusters so that higher level users can either replicate Kubernetes resources to the member clusters or run their advanced workload.For example: As a cluster administrator, I can do some configuration only for clusters created on Amazon Web Services (AWS). As an application developer, I can deploy my workload to clusters with the most allocatable memory. In OCM, the above scheduling features are provided by placement.

Project

Topology aware scheduling in cloud native multi-cluster/multi-cloud environments

In this project, the topology aware scheduling’s requirement is to support spread policy. Spread policy is used to control how workload are spread across your clusters failure-domains such as regions, zones, and other user-defined topology domains. For example, with spread policy, user can spread the workload to clusters with different regions as much as possible first, and then spread the workload to clusters with different zones as much as possible. The degree of how much the workload could be unevenly distributed is configurable.

We want you to work together with OCM developers and the community, to deliver a proposal for this project. The proposal should include the API design and how the placement controller consumes the API. The proposal needs to be finally reviewed in OCM community meeting. Also, you need to deliver a prototype based on the proposal. The prototype should support topology spread policy, what’s more, you need to consider the performance and the scale capability in a large (thousands of) clusters environments.

Through this project, you can learn how OCM manages large-scale Kubernetes clusters, as well as the scheduling techniques of Kubernetes and OCM Placement. Also, you can experience the joy of working in open source community. Hope you love this project and pick it!

yunwei37 commented 2 years ago

Hi, I am interested in this project.

mikeshng commented 2 years ago

Hi, I am interested in this project.

Thank you for your interest @yunwei37 Could you please see https://github.com/open-cluster-management-io/community/issues/152 for more details on how to get involve in this project?

If you have any question, please feel free to reach out in this issue or in our Slack channel https://kubernetes.slack.com/archives/C01GE7YSUUF

yunwei37 commented 2 years ago

I have read some documents related to this project:

And I followed the Getting Started of Placement, tried a PlacementDecision practice.

I wonder if, uh, this project's goal is to implemented a spread policy just like the Pod Topology Spread Constraints mentioned above. And generate a PlacementDecision includes selection of clusters and reasons satisfy the configured spread policy. In general, it is a Topology Spread Constraints on the scale of multi-cluster/multi-cloud.

And I have a glance to the source code at placement/pkg/plugins/. If i'm not mistaken, the Topology Spread Constraints should works as a plugin.

I want to know whether I have a correct understanding and where should I start to hand on then?