Skip to content
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

Introduce priority class in the resource quota #57963

Merged
merged 1 commit into from Jun 4, 2018

Conversation

@vikaschoudhary16
Copy link
Member

vikaschoudhary16 commented Jan 8, 2018

What this PR does / why we need it:
Implements kubernetes/community#933
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #48648

Special notes for your reviewer:
Test Cases are still to be covered. Opening this PR to make discussion convenient with code references.
Will update test cases only after design PR has got merged.

Release note:

Ability to quota resources by priority

/kind feature
/priority important-soon
/sig scheduling
/sig node
/cc @resouer @derekwaynecarr @sjenning @bsalamat @timstclair @aveshagarwal @ravisantoshgudimetla

@resouer

This comment has been minimized.

Copy link
Member

resouer commented Jan 8, 2018

Thanks a lot @vikaschoudhary16 for volunteering to take this!

As we slacked, we'll pay attention to general idea first, and eventually API folks are need for the final pass.

You may also need to sync the PR with design as we may still need to update that doc slightly.

@@ -367,6 +367,50 @@ func limitedByDefault(usage api.ResourceList, limitedResources []resourcequotaap
return result
}

func matchScope(priorityClass string, limitedResources []resourcequotaapi.LimitedResource) bool {
match := false
for _, limitedResource := range limitedResources {

This comment has been minimized.

@resouer

resouer Jan 9, 2018

Member

Isn't this check only make sense for resource: pods?

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Jan 9, 2018

Author Member

Please see L431 and L437, matchScope() will get invoked only for pods.

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

there are other scopes besides these that we would need to handle.

is there a reason we cant reuse the pod scopes func so it handles BestEffort, NotBestEffort, Terminating, NotTerminating matches as well? the admin could configure this to use any valid scope.

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

thanks for catching this. Will make it generic to match all scopes.

@soltysh

This comment has been minimized.

Copy link
Contributor

soltysh commented Jan 9, 2018

/unassign

@bsalamat
Copy link
Member

bsalamat left a comment

Some early comments. I only did a quick pass for now.


func isPriorityClassIn(pod *api.Pod, scope string) bool {
if pod.Spec.PriorityClassName != "" {
return false

This comment has been minimized.

@bsalamat

bsalamat Jan 12, 2018

Member

Why does it return false when a Pod has priority class name?

return false
}
//TODO: match after creating a set of priority classes from scope
return strings.Contains(scope, pod.Spec.PriorityClassName)

This comment has been minimized.

@bsalamat

bsalamat Jan 12, 2018

Member

This looks problematic to me. For example, if scope is "system-critical" and Pod priority class name is "critical", this function returns true, but IIUC, it should return false.

@vikaschoudhary16 vikaschoudhary16 force-pushed the vikaschoudhary16:priorityclass branch from ea8020d to 77b5cd5 Jan 16, 2018

@vikaschoudhary16

This comment has been minimized.

Copy link
Member Author

vikaschoudhary16 commented Jan 16, 2018

@bsalamat addressed your comments. Thanks!

I am more interested in knowing if there are any usecases handling of which is missing or is not as intended in this PR.
Thanks!

@derekwaynecarr

This comment has been minimized.

Copy link
Member

derekwaynecarr commented Feb 24, 2018

@vikaschoudhary16 is this ready for review? can you get the tests passing and i will take a pass?

@derekwaynecarr

This comment has been minimized.

Copy link
Member

derekwaynecarr commented Feb 24, 2018

/retest

@derekwaynecarr
Copy link
Member

derekwaynecarr left a comment

i have a number of questions and requests for changes to how this is structured. it also needs to handle all possible scope types (not just the priority ones).

@@ -85,6 +85,11 @@ func (p *pvcEvaluator) Constraints(required []api.ResourceName, item runtime.Obj
return nil
}

func (p *pvcEvaluator) GetPriorityClass(item runtime.Object) (*string, error) {

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

its not clear to me yet why GetPriorityClass needs to be defined in each evaluator yet rather than just scoped to the pod evaluator.

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

replied on another comment.

@@ -116,6 +118,23 @@ func (p *podEvaluator) Constraints(required []api.ResourceName, item runtime.Obj
return fmt.Errorf("Unexpected input object %v", item)
}

// Pod level resources are often set during admission control

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

why is this section included?

we do have a validation step in admission now.

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

Thanks for pointing out. will update.

@@ -119,8 +124,8 @@ func (p *pvcEvaluator) Handles(a admission.Attributes) bool {
}

// Matches returns true if the evaluator matches the specified quota with the provided input item
func (p *pvcEvaluator) Matches(resourceQuota *api.ResourceQuota, item runtime.Object) (bool, error) {
return generic.Matches(resourceQuota, item, p.MatchingResources, generic.MatchesNoScopeFunc)
func (p *pvcEvaluator) Matches(resourceQuota *api.ResourceQuota, item runtime.Object, matchPriorityScope bool) (bool, error) {

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

also not obvious to me yet why the additional bool is needed on Matches func calls.

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

replied on another comment.

@@ -69,6 +69,9 @@ type ListFuncByNamespace func(namespace string) ([]runtime.Object, error)
// MatchesScopeFunc knows how to evaluate if an object matches a scope
type MatchesScopeFunc func(scope api.ResourceQuotaScope, object runtime.Object) (bool, error)

// MatchesPriorityClassScopeFunc knows how to evaluate if an object matches a scope

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

why do we need a new scope func type?

this is a scope like any other scope and should be handled by modifying the MatchesScopeFunc already.

func Matches(resourceQuota *api.ResourceQuota, item runtime.Object, matchFunc MatchingResourceNamesFunc, scopeFunc MatchesScopeFunc) (bool, error) {
func Matches(resourceQuota *api.ResourceQuota, item runtime.Object,
matchFunc MatchingResourceNamesFunc, scopeFunc MatchesScopeFunc,
priorityClassScopeFunc MatchesPriorityClassScopeFunc,

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

the signature for scopeFunc and priorityClassScope Func are equivalent

cant the pod Matches just pass a single scope func that knows how to evaluate all scope types? in practice, pods are the only thing that use scopes now anyway.

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

We can merge both into one but then will have to pass matchPriorityClassScopes to the combined scopeFunc. If this bool val is true, then pod object must match one of the priority class scopes. To avoid this complexity and reducing if-else, thought of keeping separate funcs. I do realize that still there is new if block being introduced in Matches.

Please suggest if you think otherwise.

@@ -50,13 +50,15 @@ type Evaluator interface {
// If true, admission control must perform quota processing for the operation, otherwise it is safe to ignore quota.
Handles(operation admission.Attributes) bool
// Matches returns true if the specified quota matches the input item
Matches(resourceQuota *api.ResourceQuota, item runtime.Object) (bool, error)
Matches(resourceQuota *api.ResourceQuota, item runtime.Object, matchPriorityClassScopes bool) (bool, error)

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

i dont understand the reason for the bool argument.

the interface shouldnt need to change.

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

Reason explained in another comment.

An alternative approach could be to introduce another interface API MatchingScopes and its implementation in podEvaluator to verify if pod's priority class matches quota scopes.
GetPriorityClass and MatchingScopes admission/resourcequota/controller.go

// MatchingResources takes quota scopes and pod object as input and returns true/false if priorityclass matches quota scope or not
func (p *podEvaluator) MatchingScopes(scopes []ResourceQuotaScope, item runtime.Object) bool { 

With alternate approach, bool field wont be needed. Would you prefer this alternate approach? I am neutral.

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 28, 2018

Member

i would like to keep all notion of priority out of the evaluator interface.

// MatchingResources takes the input specified list of resources and returns the set of resources evaluator matches.
MatchingResources(input []api.ResourceName) []api.ResourceName
// Usage returns the resource usage for the specified object
Usage(item runtime.Object) (api.ResourceList, error)
// UsageStats calculates latest observed usage stats for all objects
UsageStats(options UsageStatsOptions) (UsageStats, error)
// GetPriorityClass returns PriorityClassName, if assigned any, to the object
GetPriorityClass(item runtime.Object) (*string, error)

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

i also dont understand why this is required? this should be scoped to the pod evaluator only.

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

Explained in detail in another comment. In brief, It is needed for priorityclass just like "Usage" api is needed for normal resources(cpu, memory etc.).

@@ -367,6 +367,50 @@ func limitedByDefault(usage api.ResourceList, limitedResources []resourcequotaap
return result
}

func matchScope(priorityClass string, limitedResources []resourcequotaapi.LimitedResource) bool {
match := false
for _, limitedResource := range limitedResources {

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

there are other scopes besides these that we would need to handle.

is there a reason we cant reuse the pod scopes func so it handles BestEffort, NotBestEffort, Terminating, NotTerminating matches as well? the admin could configure this to use any valid scope.

@@ -382,6 +426,17 @@ func (e *quotaEvaluator) checkRequest(quotas []api.ResourceQuota, a admission.At

// if we have limited resources enabled for this resource, always calculate usage
inputObject := a.GetObject()
var priorityClass *string
var objectRequiresQuotaStrictly bool
priorityClass, err := evaluator.GetPriorityClass(inputObject)

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

scopes are not specific to priority per earlier comments.

we should be able to structure this by just passing the input object into a generic matches function that works for all scopes.

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

@derekwaynecarr The way scopes are matched today, while trying to find if quota matches object, needs to be changed to implement default-deny. Today, if quota is missing a scope which the object has, it is considered as a Match and no-error case.

Why bool objectRequiresQuotaStrictly is added?

If pod's priority class specification matches admission controller configuration's MatchScopes, then using bool variable, we are signalling scope matching logic in evaluator to consider absence of matching scope in quota as a Non-match. We are using bool variable because we have to maintain backward compatibility and all other priority class specification in the pod, which are not marked as limited in controller configuration, scope matching logic in evaluator still should consider absence of scope in quota as a Match
IOW, this bool is added to let evaluator's scope matching function know that whether it should consider absence of scope in quota as a Match or No-Match. Admision controller will initialize and pass this bool variable to evaluator.

Why GetPriorityClass() is being added to the interface and not keeping internal to pod evaluator?

Usage api in the interface returns api.ResourceList. This list is compared with LimitedResources.MatchContains to find missing covering quota. There is no interface API which could be used to get pod's priority class "Usage" in quota controller. And priority class information is required to match with LimitedResources.MatchScopes.
GetPriorityClass(for priorityclass) is analogous to Usage(for typical resources)

@@ -436,7 +491,11 @@ func (e *quotaEvaluator) checkRequest(quotas []api.ResourceQuota, a admission.At
}

if len(interestingQuotaIndexes) == 0 {
return quotas, nil
if objectRequiresQuotaStrictly {
return quotas, fmt.Errorf("No matching quota found with the configured MatchScopes")

This comment has been minimized.

@derekwaynecarr

derekwaynecarr Feb 24, 2018

Member

i am not sure i understand the logic here.

i would expect that this would be handled similar to the hasNoCoveringQuota section above.

the error message could be improved to say "insufficient quota to consume: that match following scopes: "

@vikaschoudhary16 vikaschoudhary16 changed the title Introduce priority class in the resource quota [WIP] Introduce priority class in the resource quota Feb 26, 2018

@vikaschoudhary16

This comment has been minimized.

Copy link
Member Author

vikaschoudhary16 commented Feb 26, 2018

@derekwaynecarr Thanks for taking a look and asking relevant questions. I will shortly reply/address your comments.

@vikaschoudhary16
Copy link
Member Author

vikaschoudhary16 left a comment

hi @derekwaynecarr
Please find my explanations inline. Looking forward for further comments.

@@ -382,6 +426,17 @@ func (e *quotaEvaluator) checkRequest(quotas []api.ResourceQuota, a admission.At

// if we have limited resources enabled for this resource, always calculate usage
inputObject := a.GetObject()
var priorityClass *string
var objectRequiresQuotaStrictly bool
priorityClass, err := evaluator.GetPriorityClass(inputObject)

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

@derekwaynecarr The way scopes are matched today, while trying to find if quota matches object, needs to be changed to implement default-deny. Today, if quota is missing a scope which the object has, it is considered as a Match and no-error case.

Why bool objectRequiresQuotaStrictly is added?

If pod's priority class specification matches admission controller configuration's MatchScopes, then using bool variable, we are signalling scope matching logic in evaluator to consider absence of matching scope in quota as a Non-match. We are using bool variable because we have to maintain backward compatibility and all other priority class specification in the pod, which are not marked as limited in controller configuration, scope matching logic in evaluator still should consider absence of scope in quota as a Match
IOW, this bool is added to let evaluator's scope matching function know that whether it should consider absence of scope in quota as a Match or No-Match. Admision controller will initialize and pass this bool variable to evaluator.

Why GetPriorityClass() is being added to the interface and not keeping internal to pod evaluator?

Usage api in the interface returns api.ResourceList. This list is compared with LimitedResources.MatchContains to find missing covering quota. There is no interface API which could be used to get pod's priority class "Usage" in quota controller. And priority class information is required to match with LimitedResources.MatchScopes.
GetPriorityClass(for priorityclass) is analogous to Usage(for typical resources)

@@ -367,6 +367,50 @@ func limitedByDefault(usage api.ResourceList, limitedResources []resourcequotaap
return result
}

func matchScope(priorityClass string, limitedResources []resourcequotaapi.LimitedResource) bool {
match := false
for _, limitedResource := range limitedResources {

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

thanks for catching this. Will make it generic to match all scopes.

// MatchingResources takes the input specified list of resources and returns the set of resources evaluator matches.
MatchingResources(input []api.ResourceName) []api.ResourceName
// Usage returns the resource usage for the specified object
Usage(item runtime.Object) (api.ResourceList, error)
// UsageStats calculates latest observed usage stats for all objects
UsageStats(options UsageStatsOptions) (UsageStats, error)
// GetPriorityClass returns PriorityClassName, if assigned any, to the object
GetPriorityClass(item runtime.Object) (*string, error)

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

Explained in detail in another comment. In brief, It is needed for priorityclass just like "Usage" api is needed for normal resources(cpu, memory etc.).

@@ -50,13 +50,15 @@ type Evaluator interface {
// If true, admission control must perform quota processing for the operation, otherwise it is safe to ignore quota.
Handles(operation admission.Attributes) bool
// Matches returns true if the specified quota matches the input item
Matches(resourceQuota *api.ResourceQuota, item runtime.Object) (bool, error)
Matches(resourceQuota *api.ResourceQuota, item runtime.Object, matchPriorityClassScopes bool) (bool, error)

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

Reason explained in another comment.

An alternative approach could be to introduce another interface API MatchingScopes and its implementation in podEvaluator to verify if pod's priority class matches quota scopes.
GetPriorityClass and MatchingScopes admission/resourcequota/controller.go

// MatchingResources takes quota scopes and pod object as input and returns true/false if priorityclass matches quota scope or not
func (p *podEvaluator) MatchingScopes(scopes []ResourceQuotaScope, item runtime.Object) bool { 

With alternate approach, bool field wont be needed. Would you prefer this alternate approach? I am neutral.

@@ -85,6 +85,11 @@ func (p *pvcEvaluator) Constraints(required []api.ResourceName, item runtime.Obj
return nil
}

func (p *pvcEvaluator) GetPriorityClass(item runtime.Object) (*string, error) {

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

replied on another comment.

@@ -119,8 +124,8 @@ func (p *pvcEvaluator) Handles(a admission.Attributes) bool {
}

// Matches returns true if the evaluator matches the specified quota with the provided input item
func (p *pvcEvaluator) Matches(resourceQuota *api.ResourceQuota, item runtime.Object) (bool, error) {
return generic.Matches(resourceQuota, item, p.MatchingResources, generic.MatchesNoScopeFunc)
func (p *pvcEvaluator) Matches(resourceQuota *api.ResourceQuota, item runtime.Object, matchPriorityScope bool) (bool, error) {

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

replied on another comment.

@@ -116,6 +118,23 @@ func (p *podEvaluator) Constraints(required []api.ResourceName, item runtime.Obj
return fmt.Errorf("Unexpected input object %v", item)
}

// Pod level resources are often set during admission control

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

Thanks for pointing out. will update.

func Matches(resourceQuota *api.ResourceQuota, item runtime.Object, matchFunc MatchingResourceNamesFunc, scopeFunc MatchesScopeFunc) (bool, error) {
func Matches(resourceQuota *api.ResourceQuota, item runtime.Object,
matchFunc MatchingResourceNamesFunc, scopeFunc MatchesScopeFunc,
priorityClassScopeFunc MatchesPriorityClassScopeFunc,

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

We can merge both into one but then will have to pass matchPriorityClassScopes to the combined scopeFunc. If this bool val is true, then pod object must match one of the priority class scopes. To avoid this complexity and reducing if-else, thought of keeping separate funcs. I do realize that still there is new if block being introduced in Matches.

Please suggest if you think otherwise.

func Matches(resourceQuota *api.ResourceQuota, item runtime.Object,
matchFunc MatchingResourceNamesFunc, scopeFunc MatchesScopeFunc,
priorityClassScopeFunc MatchesPriorityClassScopeFunc,
matchPriorityClassScopes bool) (bool, error) {

This comment has been minimized.

@vikaschoudhary16

vikaschoudhary16 Feb 26, 2018

Author Member

explained in other comments.

@vikaschoudhary16 vikaschoudhary16 force-pushed the vikaschoudhary16:priorityclass branch 3 times, most recently from 9495a5d to b08ab62 Mar 1, 2018

@k8s-ci-robot k8s-ci-robot added the lgtm label Jun 4, 2018

@k8s-github-robot

This comment has been minimized.

Copy link
Contributor

k8s-github-robot commented Jun 4, 2018

[MILESTONENOTIFIER] Milestone Pull Request: Up-to-date for process

@bsalamat @derekwaynecarr @resouer @sjenning @smarterclayton @vikaschoudhary16

Pull Request Labels
  • sig/node sig/scheduling: Pull Request will be escalated to these SIGs if needed.
  • priority/important-soon: Escalate to the pull request owners and SIG owner; move out of milestone after several unsuccessful escalation attempts.
  • kind/feature: New functionality.
Help
},
},
},
}

This comment has been minimized.

@smarterclayton

smarterclayton Jun 4, 2018

Contributor

Probably needs more validation tests but I'd be ok with those being later.

@@ -4710,8 +4712,47 @@ type ResourceQuotaSpec struct {
// If not specified, the quota matches all objects.
// +optional
Scopes []ResourceQuotaScope `json:"scopes,omitempty" protobuf:"bytes,2,rep,name=scopes,casttype=ResourceQuotaScope"`
// ScopeSelector is also a collection of filters like Scopes that must match each object tracked by a quota

This comment has been minimized.

@smarterclayton

smarterclayton Jun 4, 2018

Contributor

This should be lower cased (publicly accessible API docs should use the field names an end user would see). scopeSelector ... scopes ....

As a follow up, I'd like to see a much better godoc here that describes how a user would use this. Can be done after this merges.

This comment has been minimized.

@smarterclayton

smarterclayton Jun 4, 2018

Contributor

You need to define whether this is OR with Scopes or AND with Scopes.

@smarterclayton
Copy link
Contributor

smarterclayton left a comment

Need to update the godoc with casing.

@vikaschoudhary16 vikaschoudhary16 force-pushed the vikaschoudhary16:priorityclass branch from 72f52ef to 2c5b974 Jun 4, 2018

@k8s-ci-robot k8s-ci-robot removed the lgtm label Jun 4, 2018

@vikaschoudhary16

This comment has been minimized.

Copy link
Member Author

vikaschoudhary16 commented Jun 4, 2018

/test pull-kubernetes-e2e-gce-100-performance

@sjenning

This comment has been minimized.

Copy link
Contributor

sjenning commented Jun 4, 2018

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm label Jun 4, 2018

@smarterclayton

This comment has been minimized.

Copy link
Contributor

smarterclayton commented Jun 4, 2018

Oops. One more thing - put the API fields behind a feature flag (since I assumed this isn't going straight to GA) to prevent them being saved if the flag is off. Same as initializers. Mark the field as alpha.

@vikaschoudhary16 vikaschoudhary16 force-pushed the vikaschoudhary16:priorityclass branch from 2c5b974 to 3cfe641 Jun 4, 2018

@k8s-ci-robot k8s-ci-robot removed the lgtm label Jun 4, 2018

@smarterclayton

This comment has been minimized.

Copy link
Contributor

smarterclayton commented Jun 4, 2018

Alpha for 1.11. Feature gate looks good. API looks good. Assuming passing tests:

/approve
/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm label Jun 4, 2018

@k8s-ci-robot

This comment has been minimized.

Copy link
Contributor

k8s-ci-robot commented Jun 4, 2018

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: bsalamat, derekwaynecarr, sjenning, smarterclayton, vikaschoudhary16

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-github-robot

This comment has been minimized.

Copy link
Contributor

k8s-github-robot commented Jun 4, 2018

/test all [submit-queue is verifying that this PR is safe to merge]

@k8s-github-robot

This comment has been minimized.

Copy link
Contributor

k8s-github-robot commented Jun 4, 2018

Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions here.

@k8s-github-robot k8s-github-robot merged commit 46d2b47 into kubernetes:master Jun 4, 2018

15 of 18 checks passed

Submit Queue Required Github CI test is not green: pull-kubernetes-e2e-gce
Details
pull-kubernetes-e2e-gce-100-performance Job triggered.
Details
pull-kubernetes-kubemark-e2e-gce-big Job triggered.
Details
cla/linuxfoundation vikaschoudhary16 authorized
Details
pull-kubernetes-bazel-build Job succeeded.
Details
pull-kubernetes-bazel-test Job succeeded.
Details
pull-kubernetes-cross Skipped
pull-kubernetes-e2e-gce Job succeeded.
Details
pull-kubernetes-e2e-gce-device-plugin-gpu Job succeeded.
Details
pull-kubernetes-e2e-gke Skipped
pull-kubernetes-e2e-kops-aws Job succeeded.
Details
pull-kubernetes-integration Job succeeded.
Details
pull-kubernetes-kubemark-e2e-gce Job succeeded.
Details
pull-kubernetes-local-e2e Skipped
pull-kubernetes-local-e2e-containerized Skipped
pull-kubernetes-node-e2e Job succeeded.
Details
pull-kubernetes-typecheck Job succeeded.
Details
pull-kubernetes-verify Job succeeded.
Details

patrikerdes pushed a commit to patrikerdes/kubernetes that referenced this pull request Jun 5, 2018

Kubernetes Submit Queue
Merge pull request kubernetes#63724 from ravisantoshgudimetla/priorit…
…y-e2e-beta

Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Modify e2e tests to use priorityClass beta client version & switch priorityClass to beta

**What this PR does / why we need it**:
/cc @bsalamat @aveshagarwal @liggitt 

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Part of kubernetes#57471

**Special notes for your reviewer**:
Once kubernetes#57963 merges, this could go in.

**Release note**:

```release-note
Modify e2e tests to use priorityClass beta version & switch priorityClass feature to beta
```
@zparnold

This comment has been minimized.

Copy link
Member

zparnold commented Jun 13, 2018

Hello there! @vikaschoudhary16 I'm Zach Arnold working on Docs for the 1.11 release. This PR was identified as one needing some documentation in the https://github.com/kubernetes/website repo around your contributions (thanks by the way!) When you have some time, could you please modify/add/remove the relevant content that needs changing in our documentation repo? Thanks! Please let me or my colleague Misty know (@zparnold/@Misty on K8s Slack) if you need any assistance with the documentation.

k8s-github-robot pushed a commit that referenced this pull request Aug 2, 2018

Kubernetes Submit Queue
Merge pull request #64645 from aveshagarwal/master-quota-priority-e2e
Automatic merge from submit-queue (batch tested with PRs 64645, 66832). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

 Add e2e tests for resource quota's priority class scope.

This pr is built on top of #57963.

@vikaschoudhary16 @sjenning @derekwaynecarr @bsalamat 
@kubernetes/sig-scheduling-pr-reviews 

```release-note
None
```

@bsalamat bsalamat referenced this pull request Sep 7, 2018

Open

Quota by Priority #612

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.