Skip to content

docs(operations): pin the OOM defaults to their source and narrow the admission warning - #783

Open
myasnikovdaniil wants to merge 1 commit into
mainfrom
docs/system-memory-limits-fixes
Open

myasnikovdaniil wants to merge 1 commit into
mainfrom
docs/system-memory-limits-fixes

Conversation

@myasnikovdaniil

Copy link
Copy Markdown
Contributor

Same fixes as cozystack/cozystack#3829, which edits docs/operations/system-memory-limits.md. That file is deleted by cozystack/cozystack#5034 and this page is where it lives now, so the fixes go here and cozystack/cozystack#3829 gets closed.

Both v1.7 and next get the patch. Page text is identical in the two and release-1.7 has the same kube-ovn chart and the same linstor test, so the claims hold for both.

  • Page now names DefaultOOMCgroupRankingExpression and DefaultOOMTriggerExpression in pkg/machinery/constants/constants.go (Talos v1.14.2) as the source of both CEL defaults. Rendered OOMConfig reference builds from the same constants but shows one example document, with sampleInterval: 100ms against default 500ms, so it is a bad place to check defaults.
  • Admission warning was too general. LimitRanger runs before every mutating webhook, so a request raised later hits a container that already has the defaulted limit. VPA with RequestsAndLimits (default, no VPA in the cozystack repo overrides it) rescales the limit together with the request, RequestsOnly or any webhook raising the request alone does not. What can be listed in advance is a request declared on the workload, and the check command now does it for templates and live pods and skips containers with their own limit. It reads namespaces with while read because zsh does not split an unquoted variable.
  • kube-ovn chart sets limits on its own containers, but hostpath-init has no memory limit (six workloads in default render, seventh ovn-ic-controller with func.ENABLE_IC) and install-cni has none either. Page said the chart sets both.
  • linstor-controller has requests and no chart-level limit on purpose, pinned with notExists in packages/system/linstor/tests/cluster_test.yaml in cozystack. Page did not say it.
  • Verifying snippet used burstable/ for every pod, now the directory comes from .status.qosClass, and it stops on an empty pod UID or node address.

Checked against Talos v1.14.2 sources, API server plugin order on release-1.35 and 1.36, a render of the kube-ovn package from main and from release-1.7, and both snippets under bash and zsh with stubbed kubectl and talosctl. The scan ran on a test cluster too and matched a single -A query. talosctl read was not run against a real node, and the site was not built locally (no node_modules, hugo 0.154.5 here against 0.164.0 in CI), so the deploy preview is the first render.

… admission warning

The page named the Talos defaults without saying where to check them,
and Talos's rendered OOMConfig reference differs from them: it shows
one example document with a sampleInterval of 100ms against a 500ms
default.

The admission warning read as a general property. LimitRanger runs
ahead of every mutating webhook and VPA keeps the request-to-limit
ratio under RequestsAndLimits, so only a request declared on the
workload can be listed in advance. The check counted containers that
carry their own limit and missed workload templates, so a workload
with no pods yet never showed up. Namespaces are read line by line
because zsh does not split an unquoted variable, and a reader on zsh
would get an empty result and take it for a clean one.

kube-ovn's chart sets limits on its own containers but not on
hostpath-init, which runs on six workloads, or on install-cni, yet the
page said it sets both. linstor-controller carries requests and no
chart-level limit on purpose, and the page did not say so.

The Verifying snippet used the burstable cgroup directory for every
pod and read an empty node address without complaint.

The text is identical in v1.7 and next, and release-1.7 ships the same
kube-ovn chart and linstor test, so both get the same change.

Assisted-by: LLM
Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
@netlify

netlify Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for cozystack ready!

Name Link
🔨 Latest commit f7db2dd
🔍 Latest deploy log https://app.netlify.com/projects/cozystack/deploys/6ae9c9187faa04b16b17db8c
😎 Deploy Preview https://deploy-preview-783--cozystack.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5bce4f18-7d9a-4e11-acc7-3cdd1e1ad004
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant