Alpha node swap support by ehashman · Pull Request #102823 · kubernetes/kubernetes (original) (raw)
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 andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Conversation57 Commits10 Checks0 Files changed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})
What type of PR is this?
/kind feature
/kind api-change
/sig node
What this PR does / why we need it:
Adds swap support per KEP-2400.
Which issue(s) this PR fixes:
Fixes #53533.
Special notes for your reviewer:
Design details in https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2400-node-swap/README.md#design-details
Does this PR introduce a user-facing change?
Alpha swap support can now be enabled on Kubernetes nodes with the NodeSwapEnabled feature flag. See <website link> for details.
Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:
https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2400-node-swap/
Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all
k8s-ci-robot added release-note
Denotes a PR that will be considered when it comes time to generate release notes.
Indicates that a PR should not merge because it is a work in progress.
Categorizes issue or PR as related to a new feature.
Denotes a PR that changes 30-99 lines, ignoring generated files.
Categorizes issue or PR as related to adding, removing, or otherwise changing an API
Categorizes an issue or PR as relevant to SIG Node.
Indicates the PR's author has signed the CNCF CLA.
Indicates an issue or PR lacks a `triage/foo` label and requires one.
Indicates a PR lacks a `priority/foo` label and requires one.
labels
@ehashman: The specified target(s) for /test
were not found.
The following commands are available to trigger jobs:
/test pull-kubernetes-conformance-image-test
/test pull-kubernetes-conformance-kind-ipv6-parallel
/test pull-kubernetes-dependencies
/test pull-kubernetes-dependencies-go-canary
/test pull-kubernetes-e2e-ipvs-azure-dualstack
/test pull-kubernetes-e2e-iptables-azure-dualstack
/test pull-kubernetes-files-remake
/test pull-kubernetes-e2e-gce
/test pull-kubernetes-e2e-gce-no-stage
/test pull-kubernetes-e2e-gce-kubetest2
/test pull-kubernetes-e2e-gce-canary
/test pull-kubernetes-e2e-gce-ubuntu
/test pull-kubernetes-e2e-gce-ubuntu-containerd
/test pull-kubernetes-e2e-gce-ubuntu-containerd-canary
/test pull-kubernetes-e2e-gce-alpha-features
/test pull-kubernetes-e2e-gce-device-plugin-gpu
/test pull-kubernetes-integration
/test pull-kubernetes-integration-go-canary
/test pull-kubernetes-cross
/test check-dependency-stats
/test pull-kubernetes-e2e-kind
/test pull-kubernetes-e2e-kind-canary
/test pull-kubernetes-e2e-kind-ipv6
/test pull-kubernetes-e2e-kind-ipv6-canary
/test pull-kubernetes-conformance-kind-ga-only
/test pull-kubernetes-conformance-kind-ga-only-parallel
/test pull-kubernetes-e2e-kops-aws
/test pull-kubernetes-bazel-build-canary
/test pull-kubernetes-bazel-test-canary
/test pull-kubernetes-bazel-test-integration-canary
/test pull-kubernetes-local-e2e
/test pull-kubernetes-unit
/test pull-kubernetes-unit-experimental
/test pull-publishing-bot-validate
/test pull-kubernetes-e2e-aks-engine-windows-dockershim
/test pull-kubernetes-e2e-aks-engine-windows-containerd
/test pull-kubernetes-e2e-aks-engine-azure-disk-windows-dockershim
/test pull-kubernetes-e2e-aks-engine-azure-file-windows-dockershim
/test pull-kubernetes-e2e-capz-windows-dockershim
/test pull-kubernetes-e2e-aks-engine-gpu-windows-dockershim
/test pull-kubernetes-e2e-aks-engine-azure-disk-windows-containerd
/test pull-kubernetes-e2e-aks-engine-azure-file-windows-containerd
/test pull-kubernetes-e2e-capz-azure-disk
/test pull-kubernetes-e2e-capz-azure-disk-vmss
/test pull-kubernetes-e2e-capz-azure-file
/test pull-kubernetes-e2e-capz-azure-file-vmss
/test pull-kubernetes-e2e-capz-conformance
/test pull-kubernetes-e2e-capz-ha-control-plane
/test pull-kubernetes-e2e-gce-network-proxy-http-connect
/test pull-kubernetes-e2e-gce-network-proxy-grpc
/test pull-kubernetes-e2e-gci-gce-autoscaling
/test pull-kubernetes-e2e-kind-dual-canary
/test pull-kubernetes-e2e-kind-ipvs-dual-canary
/test pull-kubernetes-e2e-gci-gce-ingress
/test pull-kubernetes-e2e-ubuntu-gce-network-policies
/test pull-kubernetes-e2e-gci-gce-ipvs
/test pull-kubernetes-node-e2e
/test pull-kubernetes-node-e2e-podutil
/test pull-kubernetes-e2e-containerd-gce
/test pull-kubernetes-node-e2e-containerd
/test pull-kubernetes-node-e2e-alpha
/test pull-kubernetes-node-kubelet-serial
/test pull-kubernetes-node-kubelet-eviction
/test pull-kubernetes-node-kubelet-serial-cpu-manager
/test pull-kubernetes-node-kubelet-serial-topology-manager
/test pull-kubernetes-node-kubelet-serial-hugepages
/test pull-kubernetes-node-crio-cgrpv2-e2e
/test pull-kubernetes-node-kubelet-serial-crio-cgroupv1
/test pull-kubernetes-node-kubelet-serial-crio-cgroupv2
/test pull-kubernetes-node-crio-e2e
/test pull-kubernetes-node-kubelet-serial-memory-manager
/test pull-kubernetes-e2e-gce-100-performance
/test pull-kubernetes-e2e-gce-big-performance
/test pull-kubernetes-e2e-gce-correctness
/test pull-kubernetes-e2e-gce-large-performance
/test pull-kubernetes-kubemark-e2e-gce-big
/test pull-kubernetes-kubemark-e2e-gce-scale
/test pull-kubernetes-e2e-gce-storage-slow
/test pull-kubernetes-e2e-gce-storage-snapshot
/test pull-kubernetes-e2e-gce-csi-serial
/test pull-kubernetes-e2e-gce-iscsi
/test pull-kubernetes-e2e-gce-iscsi-serial
/test pull-kubernetes-e2e-gce-storage-disruptive
/test pull-kubernetes-typecheck
/test pull-kubernetes-verify-govet-levee
/test pull-kubernetes-verify
/test pull-kubernetes-verify-go-canary
/test pull-kubernetes-e2e-windows-gce
Use /test all
to run the following jobs:
pull-kubernetes-dependencies
pull-kubernetes-e2e-gce-ubuntu-containerd
pull-kubernetes-e2e-gce-alpha-features
pull-kubernetes-integration
pull-kubernetes-e2e-kind
pull-kubernetes-e2e-kind-ipv6
pull-kubernetes-conformance-kind-ga-only-parallel
pull-kubernetes-local-e2e
pull-kubernetes-unit
pull-kubernetes-node-e2e-containerd
pull-kubernetes-node-crio-e2e
pull-kubernetes-e2e-gce-100-performance
pull-kubernetes-typecheck
pull-kubernetes-verify-govet-levee
pull-kubernetes-verify
In response to this:
/test verify
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.
/test pull-kubernetes-verify
k8s-ci-robot added size/XXL
Denotes a PR that changes 1000+ lines, ignoring generated files.
and removed size/M
Denotes a PR that changes 30-99 lines, ignoring generated files.
labels
/test pull-kubernetes-verify
ehashman marked this pull request as ready for review
/test pull-kubernetes-node-kubelet-swap-ubuntu
/test pull-kubernetes-node-kubelet-swap-fedora
@ehashman: The specified target(s) for /test
were not found.
The following commands are available to trigger jobs:
/test pull-kubernetes-conformance-image-test
/test pull-kubernetes-conformance-kind-ipv6-parallel
/test pull-kubernetes-dependencies
/test pull-kubernetes-dependencies-go-canary
/test pull-kubernetes-e2e-ipvs-azure-dualstack
/test pull-kubernetes-e2e-iptables-azure-dualstack
/test pull-kubernetes-files-remake
/test pull-kubernetes-e2e-gce
/test pull-kubernetes-e2e-gce-no-stage
/test pull-kubernetes-e2e-gce-kubetest2
/test pull-kubernetes-e2e-gce-canary
/test pull-kubernetes-e2e-gce-ubuntu
/test pull-kubernetes-e2e-gce-ubuntu-containerd
/test pull-kubernetes-e2e-gce-ubuntu-containerd-canary
/test pull-kubernetes-e2e-gce-alpha-features
/test pull-kubernetes-e2e-gce-device-plugin-gpu
/test pull-kubernetes-integration
/test pull-kubernetes-integration-go-canary
/test pull-kubernetes-cross
/test check-dependency-stats
/test pull-kubernetes-e2e-kind
/test pull-kubernetes-e2e-kind-canary
/test pull-kubernetes-e2e-kind-ipv6
/test pull-kubernetes-e2e-kind-ipv6-canary
/test pull-kubernetes-conformance-kind-ga-only
/test pull-kubernetes-conformance-kind-ga-only-parallel
/test pull-kubernetes-e2e-kops-aws
/test pull-kubernetes-bazel-build-canary
/test pull-kubernetes-bazel-test-canary
/test pull-kubernetes-bazel-test-integration-canary
/test pull-kubernetes-local-e2e
/test pull-kubernetes-unit
/test pull-kubernetes-unit-experimental
/test pull-publishing-bot-validate
/test pull-kubernetes-e2e-aks-engine-windows-dockershim
/test pull-kubernetes-e2e-aks-engine-windows-containerd
/test pull-kubernetes-e2e-aks-engine-azure-disk-windows-dockershim
/test pull-kubernetes-e2e-aks-engine-azure-file-windows-dockershim
/test pull-kubernetes-e2e-capz-windows-dockershim
/test pull-kubernetes-e2e-aks-engine-gpu-windows-dockershim
/test pull-kubernetes-e2e-aks-engine-azure-disk-windows-containerd
/test pull-kubernetes-e2e-aks-engine-azure-file-windows-containerd
/test pull-kubernetes-e2e-capz-azure-disk
/test pull-kubernetes-e2e-capz-azure-disk-vmss
/test pull-kubernetes-e2e-capz-azure-file
/test pull-kubernetes-e2e-capz-azure-file-vmss
/test pull-kubernetes-e2e-capz-conformance
/test pull-kubernetes-e2e-capz-ha-control-plane
/test pull-kubernetes-e2e-gce-network-proxy-http-connect
/test pull-kubernetes-e2e-gce-network-proxy-grpc
/test pull-kubernetes-e2e-gci-gce-autoscaling
/test pull-kubernetes-e2e-kind-dual-canary
/test pull-kubernetes-e2e-kind-ipvs-dual-canary
/test pull-kubernetes-e2e-gci-gce-ingress
/test pull-kubernetes-e2e-ubuntu-gce-network-policies
/test pull-kubernetes-e2e-gci-gce-ipvs
/test pull-kubernetes-node-e2e
/test pull-kubernetes-node-e2e-podutil
/test pull-kubernetes-e2e-containerd-gce
/test pull-kubernetes-node-e2e-containerd
/test pull-kubernetes-node-e2e-alpha
/test pull-kubernetes-node-kubelet-serial
/test pull-kubernetes-node-kubelet-eviction
/test pull-kubernetes-node-kubelet-serial-cpu-manager
/test pull-kubernetes-node-kubelet-serial-topology-manager
/test pull-kubernetes-node-kubelet-serial-hugepages
/test pull-kubernetes-node-crio-cgrpv2-e2e
/test pull-kubernetes-node-kubelet-serial-crio-cgroupv1
/test pull-kubernetes-node-kubelet-serial-crio-cgroupv2
/test pull-kubernetes-node-crio-e2e
/test pull-kubernetes-node-kubelet-serial-memory-manager
/test pull-kubernetes-e2e-gce-100-performance
/test pull-kubernetes-e2e-gce-big-performance
/test pull-kubernetes-e2e-gce-correctness
/test pull-kubernetes-e2e-gce-large-performance
/test pull-kubernetes-kubemark-e2e-gce-big
/test pull-kubernetes-kubemark-e2e-gce-scale
/test pull-kubernetes-e2e-gce-storage-slow
/test pull-kubernetes-e2e-gce-storage-snapshot
/test pull-kubernetes-e2e-gce-csi-serial
/test pull-kubernetes-e2e-gce-iscsi
/test pull-kubernetes-e2e-gce-iscsi-serial
/test pull-kubernetes-e2e-gce-storage-disruptive
/test pull-kubernetes-typecheck
/test pull-kubernetes-verify-govet-levee
/test pull-kubernetes-verify
/test pull-kubernetes-verify-go-canary
/test pull-kubernetes-e2e-windows-gce
Use /test all
to run the following jobs:
pull-kubernetes-dependencies
pull-kubernetes-e2e-gce-ubuntu-containerd
pull-kubernetes-e2e-gce-alpha-features
pull-kubernetes-integration
pull-kubernetes-e2e-kind
pull-kubernetes-e2e-kind-ipv6
pull-kubernetes-conformance-kind-ga-only-parallel
pull-kubernetes-local-e2e
pull-kubernetes-unit
pull-kubernetes-node-e2e-containerd
pull-kubernetes-node-crio-e2e
pull-kubernetes-e2e-gce-100-performance
pull-kubernetes-typecheck
pull-kubernetes-verify-govet-levee
pull-kubernetes-verify
In response to this:
/test pull-kubernetes-node-kubelet-swap-ubuntu
/test pull-kubernetes-node-kubelet-swap-fedora
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Two updates requested:
- update pod level cgroup creation to match container cgroup creation
- minor nit on the case stmt to enumerate all options for readability
Thanks!
switch m.memorySwapBehavior { |
---|
case kubelettypes.UnlimitedSwap: |
// -1 = unlimited swap |
lc.Resources.MemorySwapLimitInBytes = -1 |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just recording this as this swaps out of my own mental cache sometimes.
if a container has a defined memory limit X, it will still have MemoryLimitInBytes=X
, but it may now use unbounded additional swap by setting MemorySwapLimitInBytes
if UnlimitedSwap
is enabled. This is consistent with existing behavior where --fail-swap-on was false because no kubelet enforced limit was written.
@@ -89,6 +90,21 @@ func (m *kubeGenericRuntimeManager) generateLinuxContainerConfig(container *v1.C |
---|
lc.Resources.HugepageLimits = GetHugepageLimitsFromResources(container.Resources) |
if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.NodeSwapEnabled) { |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we need a similar change in ResourceConfigForPod
for pod level cgroup settings created by pod cgroup manager. I would expect them to match the container settings. I think memory backed volumes could ultimately use swap, but would like @sjenning to confirm. Either way, the cgroup settings for memory should match pod and container scopes.
thanks for updates.
/lgtm
/approve
k8s-ci-robot added the lgtm
"Looks good to me", indicates that a PR is ready to be merged.
label
/approve
for API/config bits
k8s-ci-robot added the approved
Indicates a PR has been approved by an approver from all required OWNERS files.
label
/retest
This bot automatically retries jobs that failed/flaked on approved PRs (send feedback to fejta).
Review the full test history for this PR.
Silence the bot with an /lgtm cancel
or /hold
comment for consistent failures.
@ehashman: The following tests failed, say /retest
to rerun all failed tests:
Test name | Commit | Details | Rerun command |
---|---|---|---|
pull-kubernetes-e2e-gce-alpha-features | 5584725 | link | /test pull-kubernetes-e2e-gce-alpha-features |
pull-kubernetes-node-swap-fedora | 5584725 | link | /test pull-kubernetes-node-swap-fedora |
pull-kubernetes-node-kubelet-swap-ubuntu | 5584725 | link | /test pull-kubernetes-node-kubelet-swap-ubuntu |
Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR.
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. I understand the commands that are listed here.
tengqm added a commit to tengqm/website that referenced this pull request
tengqm added a commit to tengqm/website that referenced this pull request
tengqm added a commit to tengqm/website that referenced this pull request
tengqm added a commit to tengqm/website that referenced this pull request
timebertt added a commit to timebertt/gardener that referenced this pull request
timebertt added a commit to gardener/gardener that referenced this pull request
Upgrade to k8s.io/*@v0.22.2 in go.mod
[automated] make revendor
[automated] make generate
[automated] make revendor
github.com/go-openapi/spec seems to be orphaned after previous make generate
- Upgrade to c-r@v0.10.2 in go.mod
Also, upgrade setup-envtest (doesn't have a tagged release yet, so use release commit instead)
[automated] make revendor
Upgrade to controller-tools@v0.7.0 in go.mod
[automated] make revendor
Add missing WarningsOn{Create,Update} to rest strategies
Replace dot imports for github.com/onsi/gomega/types
Fix linting errors: Assertion
redeclared in this block (typecheck)
- Switch to typed values for WebhookInstallOptions.*Webhooks
ref kubernetes-sigs/controller-runtime#1626
- RequestCertificate now takes an optional requestedDuration
ref kubernetes/kubernetes#99494
- Switch to matchers.DeepEqual to test semantic equality
Maps (e.g. labels, selectors, resource requirements) might be sorted differently than expected. Hence, use semantic equality instead of strict equality, as this is what matters to us. Also, DeepEqual outputs yaml and adds a nice diff indicator instead of printing some large confusing go struct representation.
- Add new memorySwap field to expected kubelet config
ref kubernetes/kubernetes#102823
- Round condition.lastUpdateTime to seconds in test
There were several changes in the fake clients that might cause the failure to happen just now.
- Correct unit tests falsely succeeding
These tests were not preparing the test objects correctly: they only updated them in memory but not on the fake client. This wasn't caught until now because the fake client mimicked the real json decoder, which didn't unset fields not present on the server. Now that the fake client zeroes fields, the tests started failing (which is correct). So fix the tests.
ref kubernetes-sigs/controller-runtime#1651
- Remove workarounds for missing zeroing in json decoder
Now that the c-r client zeroes fields before decoding into the object, we can drop our workarounds for this, so basically drop kutil.CreateResetObjectFunc and its usages.
ref kubernetes-sigs/controller-runtime#1640
- Drop setting webhook gvk explicitly in envtest
webhookConfig.SetGroupVersionKind is not needed anymore with kubernetes-sigs/controller-runtime#1665
Add some follow-up TODO comments
[automated] make generate
but with go 1.16.9
- Address review comments
krgostev pushed a commit to krgostev/gardener that referenced this pull request
Upgrade to k8s.io/*@v0.22.2 in go.mod
[automated] make revendor
[automated] make generate
[automated] make revendor
github.com/go-openapi/spec seems to be orphaned after previous make generate
- Upgrade to c-r@v0.10.2 in go.mod
Also, upgrade setup-envtest (doesn't have a tagged release yet, so use release commit instead)
[automated] make revendor
Upgrade to controller-tools@v0.7.0 in go.mod
[automated] make revendor
Add missing WarningsOn{Create,Update} to rest strategies
Replace dot imports for github.com/onsi/gomega/types
Fix linting errors: Assertion
redeclared in this block (typecheck)
- Switch to typed values for WebhookInstallOptions.*Webhooks
ref kubernetes-sigs/controller-runtime#1626
- RequestCertificate now takes an optional requestedDuration
ref kubernetes/kubernetes#99494
- Switch to matchers.DeepEqual to test semantic equality
Maps (e.g. labels, selectors, resource requirements) might be sorted differently than expected. Hence, use semantic equality instead of strict equality, as this is what matters to us. Also, DeepEqual outputs yaml and adds a nice diff indicator instead of printing some large confusing go struct representation.
- Add new memorySwap field to expected kubelet config
ref kubernetes/kubernetes#102823
- Round condition.lastUpdateTime to seconds in test
There were several changes in the fake clients that might cause the failure to happen just now.
- Correct unit tests falsely succeeding
These tests were not preparing the test objects correctly: they only updated them in memory but not on the fake client. This wasn't caught until now because the fake client mimicked the real json decoder, which didn't unset fields not present on the server. Now that the fake client zeroes fields, the tests started failing (which is correct). So fix the tests.
ref kubernetes-sigs/controller-runtime#1651
- Remove workarounds for missing zeroing in json decoder
Now that the c-r client zeroes fields before decoding into the object, we can drop our workarounds for this, so basically drop kutil.CreateResetObjectFunc and its usages.
ref kubernetes-sigs/controller-runtime#1640
- Drop setting webhook gvk explicitly in envtest
webhookConfig.SetGroupVersionKind is not needed anymore with kubernetes-sigs/controller-runtime#1665
Add some follow-up TODO comments
[automated] make generate
but with go 1.16.9
- Address review comments
krgostev pushed a commit to krgostev/gardener that referenced this pull request
Upgrade to k8s.io/*@v0.22.2 in go.mod
[automated] make revendor
[automated] make generate
[automated] make revendor
github.com/go-openapi/spec seems to be orphaned after previous make generate
- Upgrade to c-r@v0.10.2 in go.mod
Also, upgrade setup-envtest (doesn't have a tagged release yet, so use release commit instead)
[automated] make revendor
Upgrade to controller-tools@v0.7.0 in go.mod
[automated] make revendor
Add missing WarningsOn{Create,Update} to rest strategies
Replace dot imports for github.com/onsi/gomega/types
Fix linting errors: Assertion
redeclared in this block (typecheck)
- Switch to typed values for WebhookInstallOptions.*Webhooks
ref kubernetes-sigs/controller-runtime#1626
- RequestCertificate now takes an optional requestedDuration
ref kubernetes/kubernetes#99494
- Switch to matchers.DeepEqual to test semantic equality
Maps (e.g. labels, selectors, resource requirements) might be sorted differently than expected. Hence, use semantic equality instead of strict equality, as this is what matters to us. Also, DeepEqual outputs yaml and adds a nice diff indicator instead of printing some large confusing go struct representation.
- Add new memorySwap field to expected kubelet config
ref kubernetes/kubernetes#102823
- Round condition.lastUpdateTime to seconds in test
There were several changes in the fake clients that might cause the failure to happen just now.
- Correct unit tests falsely succeeding
These tests were not preparing the test objects correctly: they only updated them in memory but not on the fake client. This wasn't caught until now because the fake client mimicked the real json decoder, which didn't unset fields not present on the server. Now that the fake client zeroes fields, the tests started failing (which is correct). So fix the tests.
ref kubernetes-sigs/controller-runtime#1651
- Remove workarounds for missing zeroing in json decoder
Now that the c-r client zeroes fields before decoding into the object, we can drop our workarounds for this, so basically drop kutil.CreateResetObjectFunc and its usages.
ref kubernetes-sigs/controller-runtime#1640
- Drop setting webhook gvk explicitly in envtest
webhookConfig.SetGroupVersionKind is not needed anymore with kubernetes-sigs/controller-runtime#1665
Add some follow-up TODO comments
[automated] make generate
but with go 1.16.9
- Address review comments
Labels
Categorizes an issue or PR as actively needing an API review.
Indicates a PR has been approved by an approver from all required OWNERS files.
Indicates the PR's author has signed the CNCF CLA.
Categorizes issue or PR as related to adding, removing, or otherwise changing an API
Categorizes issue or PR as related to a new feature.
"Looks good to me", indicates that a PR is ready to be merged.
Must be staffed and worked on either currently, or very soon, ideally in time for the next release.
Denotes a PR that will be considered when it comes time to generate release notes.
Categorizes an issue or PR as relevant to SIG Node.
Denotes a PR that changes 1000+ lines, ignoring generated files.
Indicates an issue or PR is ready to be actively worked on.