The kubelet used cadvisor's lib/utils/oomparser to watch the kernel log for
OOM kills and to produce the container_oom_events_total metric. That made the
kubelet depend on the cadvisor lib module for OOM handling.
This moves OOM handling in-tree:
- The OOM kill parser is forked from cadvisor into
third_party/forked/cadvisor/oomparser. It reads /dev/kmsg and extracts OOM
events, adapted to take a context.Context and log through klog.
- The kmsg reader is forked from github.com/euank/go-kmsg-parser into
third_party/forked/go-kmsg-parser/kmsgparser.
- The kubelet OOM watcher reads OOM events through the forked parser and
records the container_oom_events_total metric in-tree.
- cadvisor/lib is bumped to v0.60.3, which no longer ships the OOM parser.
This removes the transitive github.com/euank/go-kmsg-parser
v2.0.0+incompatible dependency and the vendored cadvisor lib/utils/oomparser
package.
Behavior is unchanged. OOM events are still emitted and the metric still
reports the same counts.