Giter VIP home page Giter VIP logo

Comments (5)

bassam avatar bassam commented on May 14, 2024

There are two models we could consider here that are not mutually exclusive.

developers uses classes to select known configurations

In this model, a developer selects a class by name to choose among different "configurations". This model is similar to Persistent Volumes in K8S today. It also is similar in how users select virtual machine classes in most cloud providers, i.e. m4.xlarge in AWS to select a well defines configuration of cpu, memory and local storage.

A downside to this approach is that the developer has to discover the class name, likely through documentation. If the classes change the app would need to change too, or the provisioner would need to map between older and newer compatible classes.

developers use granular abstract configuration and requirements

In this model, the developer specifies their requirements in a granular fashion. This is similar to Pods and their resources today in K8S. For example, in a pod spec you can specify:

      resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 99m
            memory: 100Mi

which could get matched to multiple kinds of nodes, or even along partial nodes without having to specify a class or machine type. Thereโ€™s a mapping between these abstract cpu units 1m to a cloud provider: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu (edited)
and this abstraction of units enables more portability

In this model there would still be classes that are set by the admin, but they are not used by the developers directly. Instead they are used when creating/provisioning concrete resources. In other words, the admin specifies classes to define how physical resources are created. developers deal with abstract resources, units, configuration.

this model arguable has more portability, but might be more opaque.

from crossplane.

ichekrygin avatar ichekrygin commented on May 14, 2024

The issue as stated is a little confusing. It appears that the issue is confounded to the Dynamic Provisioning since this is the only time when a user would need to operate on ResourceClass construct. The way I understand the thrust of this issue, it would be great to "omit" the notion of the "ResourceClass" altogether (including the default classes).

While the issue provides "matching" example, the spirit of the example but using "resource" matching is very much in the realm of the Static provisioned resources, i.e. resources already exist and the Abstract resource simply needs to be matched against one or many existing resources. This is the confusing part.

I guess the thrust is, there are many ResourceClasses and "Scheduler" should pick one which matches closely the "AbstractResource" based on the resources defined in the "AbstractResource". If this is correct understanding, I think we can tag this issue as a "Scheduler" topic.

from crossplane.

negz avatar negz commented on May 14, 2024

Relates closely to #870.

from crossplane.

negz avatar negz commented on May 14, 2024

Cross linking relevant discussion from crossplane-contrib/provider-gcp#46 (comment).

from crossplane.

negz avatar negz commented on May 14, 2024

I think this is no longer relevant given that we're deprecating resource classes. I suppose we could do something like this for selecting a composition based on the composite resource's configuration, though I'm not sure whether we still see that as a direction we want to go. I'm going to close this - let me know if you want it to stay open and we can instead reframe it around composition.

from crossplane.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.