kubelet: RuntimeHandler: add SupportsRecursiveReadOnlyMounts

For KEP-3857: Recursive Read-only (RRO) mounts

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
This commit is contained in:
Akihiro Suda 2024-03-09 09:48:09 +09:00
parent 27f24a62e3
commit 76081a10c2
No known key found for this signature in database
GPG Key ID: 49524C6F9F638F1A
2 changed files with 10 additions and 3 deletions

View File

@ -562,6 +562,9 @@ func (r *RuntimeStatus) String() string {
type RuntimeHandler struct {
// Name is the handler name.
Name string
// SupportsRecursiveReadOnlyMounts is true if the handler has support for
// recursive read-only mounts.
SupportsRecursiveReadOnlyMounts bool
// SupportsUserNamespaces is true if the handler has support for
// user namespaces.
SupportsUserNamespaces bool
@ -569,7 +572,8 @@ type RuntimeHandler struct {
// String formats the runtime handler into human readable string.
func (h *RuntimeHandler) String() string {
return fmt.Sprintf("Name=%s SupportsUserNamespaces: %v", h.Name, h.SupportsUserNamespaces)
return fmt.Sprintf("Name=%s SupportsRecursiveReadOnlyMounts: %v SupportsUserNamespaces: %v",
h.Name, h.SupportsRecursiveReadOnlyMounts, h.SupportsUserNamespaces)
}
// RuntimeCondition contains condition information for the runtime.

View File

@ -221,13 +221,16 @@ func toKubeRuntimeStatus(status *runtimeapi.RuntimeStatus, handlers []*runtimeap
}
retHandlers := make([]kubecontainer.RuntimeHandler, len(handlers))
for i, h := range handlers {
supportsRRO := false
supportsUserns := false
if h.Features != nil {
supportsRRO = h.Features.RecursiveReadOnlyMounts
supportsUserns = h.Features.UserNamespaces
}
retHandlers[i] = kubecontainer.RuntimeHandler{
Name: h.Name,
SupportsUserNamespaces: supportsUserns,
Name: h.Name,
SupportsRecursiveReadOnlyMounts: supportsRRO,
SupportsUserNamespaces: supportsUserns,
}
}
return &kubecontainer.RuntimeStatus{Conditions: conditions, Handlers: retHandlers}