v0.4.1
This major release of the NRI Reference Plugins brings new features to a few plugins, numerous smaller other improvements, and several bug fixes.
Highlights
- balloons policy: add
groupBy
balloon type option
Group containers into same balloon instances if theirgroupBy
expressions evaluate to the same group. For example, the following expression prefers assigning all containers in the pod to a balloon that already contains containers from the same namespace and have the samensballoon
pod label value
...
balloonTypes:
- name: my-pods
groupBy: ${pod/namespace}-${pod/labels/nsballoon}
...
If there is no such a balloon, or if such instances do not have enough CPUs, then finding a suitable balloon continues as before: assign to some other existing balloon or create a new balloon if that is preferred.
- balloons policy: add balloon
matchExpressions
option
Assign containers to balloon instances by balloon match expressions, similar to affinity expression of the topology-aware policy. Expressions are evaluated for containers which are not explicitly assigned to any balloon by an annotation. If an expression matches a container, the container is assigned to an instance of the corresponding balloon. For instance, the following matchExpression will grab all containers with matching pod names to the associated balloon:
...
balloonTypes:
- name: my-pods
matchExpressions:
- key: pod/name
operator: MatchesAny
values: [ myPod*, nginx* ]
...
- balloons & topology-aware policies: allow preserving existing resource assignments
Containers and pods can now be annotated to prevent the policy from touching their existing CPU or memory pinning.
What's New
- balloons: implement groupBy option by @askervin in #278
- balloons: allow assigning containers to balloons by runtime-evaluated expressions by @klihub in #260
- balloons policy: more regular built-in balloons, treat them much like user-defined ones
Built-inreserved
anddefault
balloon types are no longer special cases. They can be configured with the same parameters as user-defined balloons. - balloons: support preserving CPU and memory pinning by @askervin in #257
- topology-aware: support preserving CPU and memory pinning by @askervin in #258
- feat(helm): Introduce priorityClassName system-node-critical by @ffuerste in #220
- helm: allow setting NRI plugin index via values by @klihub in #227
Updates, Fixes And Other Improvements
- balloons: fix the order of assigning containers into balloons by @askervin in #273
- balloons: fix logged balloon name by @klihub in #259
- balloons & topology-aware policies: better handling of
UpdateContainer[Resources]
requests
Fill in missing bits in partial container resource updates from the current resource assignment. Filter out redundant resource updates without invoking the policy. - memtierd: update the nri-memtierd plugin to use memtierd v0.1.1 by @askervin in #287
- operator: ensure to kustomize operator manifests before local deployment by @fmuyassarov in #240
- resmgr: better expression validation, cleaner key resolution by @klihub in #256
- resmgr: inject mount before container state update by @klihub in #223
- resmgr: log containers by pretty name during startup by @klihub in #245
- instrumentation: fix resource creation, use parent-based sampler by @klihub in #233
- instrumentation: allow proper reconfiguration of tracing by @klihub in #234
- cache: support annotations to preserve CPU and memory pinning by @askervin in #249
- cache, resmgr: expose key evaluation, implement key substitution by @klihub in #277
- cache: fix generated pod scope and simple affinity expressions by @klihub in #285
- cache: store creation time of pod and containers cache objects by @askervin in #272
- topology-aware: log resource operations at info level by @klihub in #252
- doc: clarify selecting balloon type by @askervin in #281
- doc: more consistent terminology in balloons documentation by @askervin in #269
- fixes: rename default config group label, support/fall back to deprecated labels. by @klihub in #231
New Contributors
Full List of Merged PRs
For a full list of changes see v0.3.2...v0.4.1