From 102116eb6bf01c6df611e15a41520f6e89000ee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=AD=A3=E6=B5=A9=2CZhu=20Zhenghao?= Date: Tue, 4 Apr 2023 21:56:53 +0800 Subject: [PATCH] sync page user-namespaces, sysctl-cluster --- .../workloads/pods/user-namespaces.md | 62 ++++++++++--------- .../administer-cluster/sysctl-cluster.md | 21 +++++-- .../user-namespaces.md | 19 ++++-- 3 files changed, 62 insertions(+), 40 deletions(-) diff --git a/content/zh-cn/docs/concepts/workloads/pods/user-namespaces.md b/content/zh-cn/docs/concepts/workloads/pods/user-namespaces.md index a376529b5871d..f201a0887484b 100644 --- a/content/zh-cn/docs/concepts/workloads/pods/user-namespaces.md +++ b/content/zh-cn/docs/concepts/workloads/pods/user-namespaces.md @@ -48,18 +48,21 @@ mitigate some future vulnerabilities too. ## {{% heading "prerequisites" %}} -{{% thirdparty-content single="true" %}} - +{{% thirdparty-content %}} + @@ -67,16 +70,17 @@ Support for this in [cri-dockerd is not planned][CRI-dockerd-issue] yet. 这是一个只对 Linux 有效的功能特性。此外,需要在{{< glossary_tooltip text="容器运行时" term_id="container-runtime" >}}提供支持, 才能在 Kubernetes 无状态 Pod 中使用这一功能: -* CRI-O:v1.25 版已经支持用户命名空间。 -* containerd:计划在 1.7 版本中支持。更多细节请参见 containerd 问题 [#7063][containerd-userns-issue]。 +* CRI-O:1.25(及更高)版本支持配置容器的用户命名空间。 +* containerd:1.7 版本支持配置容器的用户命名空间,兼容 Kubernetes v1.25 和 v1.26,但不兼容更高版本。 + 如果你运行的是不同版本的 Kubernetes,请查看该 Kubernetes 版本的文档。 目前 [cri-dockerd 没有计划][CRI-dockerd-issue]支持此功能。 [CRI-dockerd-issue]: https://github.com/Mirantis/cri-dockerd/issues/74 [containerd-userns-issue]: https://github.com/containerd/containerd/issues/7063 - ## 介绍 {#introduction} @@ -126,8 +130,8 @@ if user namespaces is activated. 大多数需要以 root 身份运行但不访问其他主机命名空间或资源的应用程序, 在用户命名空间被启用时,应该可以继续正常运行,不需要做任何改变。 - ## 了解无状态 Pod 的用户命名空间 {#understanding-user-namespaces-for-stateless-pods} @@ -190,8 +194,8 @@ of it. 授予一个 Pod 的权能也被限制在 Pod 的用户命名空间内, 并且在这一命名空间之外大多无效,有些甚至完全无效。这里有两个例子: - - `CAP_SYS_MODULE` 若被授予一个使用用户命名空间的 Pod 则没有任何效果,这个 Pod 不能加载内核模块。 - - `CAP_SYS_ADMIN` 只限于 Pod 所在的用户命名空间,在该命名空间之外无效。 +- `CAP_SYS_MODULE` 若被授予一个使用用户命名空间的 Pod 则没有任何效果,这个 Pod 不能加载内核模块。 +- `CAP_SYS_ADMIN` 只限于 Pod 所在的用户命名空间,在该命名空间之外无效。 ## 限制 {#limitations} + + Pod 完全不使用卷是被允许的;如果使用卷,只允许使用以下卷类型: - * configmap - * secret - * projected - * downwardAPI - * emptyDir +* configmap +* secret +* projected +* downwardAPI +* emptyDir - 为了保证 Pod 可以读取这些卷中的文件,卷的创建操作就像你为 Pod 指定了 `.spec.securityContext.fsGroup` 为 `0` 一样。 如果该属性被设定为不同值,那么这个不同值当然也会被使用。 作为一个副产品,这些卷的文件夹和文件将具有所给组的权限, 即使 `defaultMode` 或 volumes 的特定项目的 `mode` 被指定为没有组的权限。 -例如,不可以在挂载这些卷时使其文件只允许所有者访问。 \ No newline at end of file +例如,不可以在挂载这些卷时使其文件只允许所有者访问。 diff --git a/content/zh-cn/docs/tasks/administer-cluster/sysctl-cluster.md b/content/zh-cn/docs/tasks/administer-cluster/sysctl-cluster.md index 22ddf715f6a50..5442dd3f149ed 100644 --- a/content/zh-cn/docs/tasks/administer-cluster/sysctl-cluster.md +++ b/content/zh-cn/docs/tasks/administer-cluster/sysctl-cluster.md @@ -44,6 +44,15 @@ the Linux man-pages project. ## {{% heading "prerequisites" %}} +{{< note >}} + +`sysctl` 是一个 Linux 特有的命令行工具,用于配置各种内核参数, +它在非 Linux 操作系统上无法使用。 +{{< /note >}} + {{< include "task-tutorial-prereqs.md" >}} -示例中的 `net.ipv4.tcp_syncookies` 在Linux 内核 4.4 或更低的版本中是无命名空间的。 +示例中的 `net.ipv4.tcp_syncookies` 在 Linux 内核 4.4 或更低的版本中是无命名空间的。 {{< /note >}} 此示例中,使用 Pod SecurityContext 来对一个安全的 sysctl 参数 diff --git a/content/zh-cn/docs/tasks/configure-pod-container/user-namespaces.md b/content/zh-cn/docs/tasks/configure-pod-container/user-namespaces.md index 6e19c74a64f21..8b225ef86183a 100644 --- a/content/zh-cn/docs/tasks/configure-pod-container/user-namespaces.md +++ b/content/zh-cn/docs/tasks/configure-pod-container/user-namespaces.md @@ -75,16 +75,23 @@ this is true when user namespaces are used. * 特性 `UserNamespacesStatelessPodsSupport` 需要被启用。 -此外, 需要{{< glossary_tooltip text="容器运行时" term_id="container-runtime" >}}提供相应的支持, -才能将此特性与 Kubernetes 无状态 Pod 一起使用: +你所使用的集群**必须**包括至少一个符合 +[要求](/zh-cn/docs/concepts/workloads/pods/user-namespaces/#before-you-begin) +的节点,以便为 Pod 配置用户名字空间。 +如果你有混合节点,并且只有部分节点支持为 Pod 配置用户名字空间, +你还需要确保配置了用户名字空间的 Pod +被[调度](/zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/)到合适的节点。 + * CRI-O: v1.25 支持用户名字空间。