-
Notifications
You must be signed in to change notification settings - Fork 300
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
Support disabling automatic "rslave" fallback #161
Comments
@AkihiroSuda is there actually a request for this upstream? If not, there are plenty of capabilities for containerd/CRI-O which aren't exposed either. If Moby is taking an interest (which is great!), a sane way to pass headers to |
Sorry, I'm not sure how your comment is relevant to my OP. |
I believe @AkihiroSuda is referring to simply explicitly setting the propagation instead of using the noop in the case statement when a magic label is set. Re: other improvements in Moby itself, please file tickets in the ENGINE project. There are multiple Moby maintainers on the MCR team now, and we can prioritize improvements MKE would like to see if they are surfaced. |
The suggest improvements are not in Moby itself. They are improvements for The question is: "has anyone requested this functionality"? If not, then there is not a clear reason to include it. No matter how technically doable "if this label is set, explicitly set the propagation" is, it's adding a moving piece which must now be tested, may require upkeep/maintenance if k8s and/or Moby change this behavior, and closing this as |
I for one have no idea why you would want to allow the daemon root to propagate into itself/what the use cases might be.
This seems to be contradicted by:
I think the two got mixed together -- I was suggesting that if some of these require design work and/or changes in Moby, we can put those in the backlog. |
I request, because recursively read-only (RRO) mounts have to be used with |
That is not the question. It's basically the same argument as thockin on the actual KEP. The question for When or why users would want to allow this sort of propagation is not at issue, and while I also think there are better ways to do it, What we do not want to do is be even more of a "mostly compliant CRI but slightly off from the standard" (since log streaming/etc are not supported).
This is not a contradiction, and none of these require design work and/or changes in Moby. The comment is more or less "if Moby maintainers/engineers are contributing here, the header issue, passing credentials as part of a CRI-level daemon config for bootstrapping, and implementing 'pure' CRI stat collection over the Docker API/module are places where deep knowledge of the Docker API/client can meaningfully improve this project right now". If that's a non-starter, then we'll set that conversation aside, but the top of this post (implementing non-standard annotations/labels to support an unaccepted KEP which the k8s maintainers feel is a breaking change) will not happen or be prioritized right now. |
The current revision kubernetes/enhancements@761883a isn't considered to be a breaking change AFAICS, but I'm ok to defer this discussion until the KEP settles. If the KEP settles probably cri-dockerd should just return an error when |
It depends on exactly what it settles down to, because this chain is a bit back and forth. Either way, the question still is not about when the KEP settles, but when is actually graduates (even to Alpha), at which point it becomes suitable for inclusion. When it does, what cri-dockerd does (as far as returning errors, etc) will be whatever the specified behavior from the graduated feature says it should be. |
While containerd and CRI-O consistently maps
PROPAGATION_PRIVATE
(CRI) torprivate
(OCI),cri-dockerd (dockerd) conditionally maps it to either
rprivate
orrslave
:cri-dockerd/libdocker/helpers.go
Lines 234 to 253 in 6daf9ac
cri-dockerd should have an option to disable falling back to
rslave
, without sacrificing backward compatibility.Plan A: Introduce a custom Pod annotation like
cri-dockerd.mirantis.com/deterministic-propagation=true
.Plan B: Add a new constant like
PROPAGATION_LITERALLY_PRIVATE
to the CRI API.In the YAML it would look like
mountPropagation: LiterallyNone
.Plan C: Just return an error when
recursivelyReadOnly == Required && propagation == None aka private && sourceContainsDaemonRoot
.recursiveReadOnly
is proposed in KEP-3857: Recursive Read-only (RRO) mounts kubernetes/enhancements#3858Plan B probably needs going through the full KEP process, which may take several years.
So, my preference is Plan A or C.
The text was updated successfully, but these errors were encountered: