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

Add filtering logic for a PriorityClass that the name is prefixed with system- #108

Merged

Conversation

196Ikuchil
Copy link
Contributor

@196Ikuchil 196Ikuchil commented Feb 13, 2022

What type of PR is this?

/kind bug

What this PR does / why we need it:

The priorityclass, system-cluster-critical and system-node-critical, are created automatically, but it can't delete and is unable to modify some fields.
The name of PriorityClass that is prefixed with system-, is reserved by the system.
So, we add filtering logic to import/export functions.

Which issue(s) this PR fixes:

Fixes #98

Special notes for your reviewer:

https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#how-to-use-priority-and-preemption

/label tide/merge-method-squash
/assign @sanposhiho

@k8s-ci-robot k8s-ci-robot added kind/bug Categorizes issue or PR as related to a bug. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Feb 13, 2022
@k8s-ci-robot
Copy link
Contributor

Hi @196Ikuchil. Thanks for your PR.

I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

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.

@k8s-ci-robot k8s-ci-robot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Feb 13, 2022
@k8s-ci-robot k8s-ci-robot added sig/scheduling Categorizes an issue or PR as relevant to SIG Scheduling. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Feb 13, 2022
export/export.go Outdated
// The name of a PriorityClass object cannot be prefixed with `system-`.
// It is reserved by the system and we cannot recreate it. No need to export.
for _, i := range pcs.Items {
if !strings.HasPrefix(i.GetObjectMeta().GetName(), "system-") {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it better to filter out the exact match of system-cluster-critical and system-node-critical? In case users create system-xxx PriorityClass by themselves.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Users cannot create system-xxx PriorityClasses. So, it looks good.

The name of a PriorityClass object must be a valid DNS subdomain name, and it cannot be prefixed with system-.
https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass

Copy link
Member

@sanposhiho sanposhiho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@196Ikuchil
Could you create a function (named like filterPriorityClass) to filter PriorityClasses and change the logic to use that?

@sanposhiho
Copy link
Member

/ok-to-test

@k8s-ci-robot k8s-ci-robot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Feb 14, 2022
@196Ikuchil
Copy link
Contributor Author

Fixed it👌

export/export.go Outdated
@@ -501,3 +515,8 @@ func (s *Service) applyPods(ctx context.Context, r *ResourcesForImport, eg *util
}
return nil
}

// The name of PriorityClass that is prefixed with `system-`, is reserved by the system.
func filterPriorityClass(name string) bool {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay. Rename it to isSystemPriorityClass. (IMO, I feel a little strange iffilterXX returns bool.)

export/export.go Outdated Show resolved Hide resolved
export/export_test.go Outdated Show resolved Hide resolved
export/export_test.go Outdated Show resolved Hide resolved
196Ikuchil and others added 4 commits February 14, 2022 22:47
Co-authored-by: Kensei Nakada <handbomusic@gmail.com>
Co-authored-by: Kensei Nakada <handbomusic@gmail.com>
Co-authored-by: Kensei Nakada <handbomusic@gmail.com>
@196Ikuchil
Copy link
Contributor Author

@sanposhiho
Thanks for reviewing. I fixed some wording as per your suggestions.

Copy link
Member

@sanposhiho sanposhiho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only wording of comments. otherwise looks good.

export/export.go Outdated
Comment on lines 344 to 345
// The name of a PriorityClass object cannot be prefixed with `system-`.
// It is reserved by the system and we cannot recreate it. No need to export.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove these lines (the doc of isSystemPriorityClass will describe it.)

export/export.go Outdated
Comment on lines 373 to 374
// The name of PriorityClass that is prefixed with `system-`, is reserved by the system and we cannot recreate it.
// Therefore, filter it.
Copy link
Member

@sanposhiho sanposhiho Feb 14, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove these lines as well

export/export.go Outdated
@@ -501,3 +515,10 @@ func (s *Service) applyPods(ctx context.Context, r *ResourcesForImport, eg *util
}
return nil
}

// isSystemPriorityClass returns whether the given name of PriorityClass is prefixed with `system-` or not.
// The prefix `system-` is reserved by Kubernetes and cannot be used in the name of PriorityClass.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my wording is not good 😓

Suggested change
// The prefix `system-` is reserved by Kubernetes and cannot be used in the name of PriorityClass.
// The prefix `system-` is reserved by Kubernetes and users cannot create PriorityClass that name is prefixed with `system-`.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sanposhiho How is this?

The `system-` prefix is reserved by Kubernetes, and users cannot create a PriorityClass with such a name.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good 👍


// isSystemPriorityClass returns whether the given name of PriorityClass is prefixed with `system-` or not.
// The prefix `system-` is reserved by Kubernetes and cannot be used in the name of PriorityClass.
// See: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// See: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass
// See: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass
//
// So, we need to exclude these PriorityClasses when import/export PriorityClasses.

@196Ikuchil
Copy link
Contributor Author

@sanposhiho
Thanks! Fixed it, again✋

Copy link
Member

@sanposhiho sanposhiho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

/lgtm
/approve

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 14, 2022
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: 196Ikuchil, sanposhiho

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-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Feb 14, 2022
@k8s-ci-robot k8s-ci-robot merged commit 7e37705 into kubernetes-sigs:master Feb 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/bug Categorizes issue or PR as related to a bug. lgtm "Looks good to me", indicates that a PR is ready to be merged. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. sig/scheduling Categorizes an issue or PR as relevant to SIG Scheduling. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

High privileged PriorityClass causes some errors on import
4 participants