Merge pull request #35167 from windsonsea/clusadm

[zh-cn] resync kubelet-in-userns.md
pull/35183/head
Kubernetes Prow Robot 2022-07-19 18:16:37 -07:00 committed by GitHub
commit d734bf96b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 22 deletions

View File

@ -1,15 +1,13 @@
---
title: 以非root用户身份运行 Kubernetes 节点组件
title: 以非 root 用户身份运行 Kubernetes 节点组件
content_type: task
min-kubernetes-server-version: 1.22
---
<!--
---
title: Running Kubernetes Node Components as a Non-root User
content_type: task
min-kubernetes-server-version: 1.22
---
-->
<!-- overview -->
@ -32,7 +30,7 @@ If you are just looking for how to run a pod as a non-root user, see [SecurityCo
这个文档描述了怎样不使用 root 特权,而是通过使用 {{< glossary_tooltip text="用户命名空间" term_id="userns" >}}
去运行 Kubernetes 节点组件(例如 kubelet、CRI、OCI、CNI
这种技术也叫做 _rootless 模式Rootless mode_
这种技术也叫做 **rootless 模式Rootless mode**
{{< note >}}
这个文档描述了怎么以非 root 用户身份运行 Kubernetes 节点组件以及 Pod。
@ -55,7 +53,7 @@ If you are just looking for how to run a pod as a non-root user, see [SecurityCo
{{% version-check %}}
* [启用 Cgroup v2](https://rootlesscontaine.rs/getting-started/common/cgroup2/)
* [启用 cgroup v2](https://rootlesscontaine.rs/getting-started/common/cgroup2/)
* [在 systemd 中启用 user session](https://rootlesscontaine.rs/getting-started/common/login/)
* [根据不同的 Linux 发行版,配置 sysctl 的值](https://rootlesscontaine.rs/getting-started/common/sysctl/)
* [确保你的非特权用户被列在 `/etc/subuid` 和 `/etc/subgid` 文件中](https://rootlesscontaine.rs/getting-started/common/subuid/)
@ -74,11 +72,12 @@ See [Running kind with Rootless Docker](https://kind.sigs.k8s.io/docs/user/rootl
### minikube
[minikube](https://minikube.sigs.k8s.io/) also supports running Kubernetes inside Rootless Docker.
[minikube](https://minikube.sigs.k8s.io/) also supports running Kubernetes inside Rootless Docker or Rootless Podman.
See the page about the [docker](https://minikube.sigs.k8s.io/docs/drivers/docker/) driver in the Minikube documentation.
See the Minikube documentation:
Rootless Podman is not supported.
* [Rootless Docker](https://minikube.sigs.k8s.io/docs/drivers/docker/)
* [Rootless Podman](https://minikube.sigs.k8s.io/docs/drivers/podman/)
-->
## 使用 Rootless 模式的 Docker/Podman 运行 Kubernetes
@ -91,13 +90,12 @@ Rootless Podman is not supported.
### minikube
[minikube](https://minikube.sigs.k8s.io/) 也支持使用 Rootless 模式的 Docker 运行 Kubernetes。
[minikube](https://minikube.sigs.k8s.io/) 也支持使用 Rootless 模式的 Docker 或 Podman 运行 Kubernetes。
请参阅 Minikube 文档中的 [docker](https://minikube.sigs.k8s.io/docs/drivers/docker/) 驱动页面。
请参阅 Minikube 文档
它不支持 Rootless 模式的 Podman。
<!-- Supporting rootless podman is discussed in https://github.com/kubernetes/minikube/issues/8719 -->
* [Rootless Docker](https://minikube.sigs.k8s.io/docs/drivers/docker/)
* [Rootless Podman](https://minikube.sigs.k8s.io/docs/drivers/podman/)
<!--
## Running Kubernetes inside Unprivileged Containers
@ -140,7 +138,7 @@ the container plus several other advanced OS virtualization techniques.
-->
Sysbox 支持在非特权容器内运行 Kubernetes
而不需要 Cgroup v2 和 “KubeletInUserNamespace” 特性门控。
而不需要 cgroup v2 和 “KubeletInUserNamespace” 特性门控。
Sysbox 通过在容器内暴露特定的 `/proc``/sys` 文件系统,
以及其它一些先进的操作系统虚拟化技术来实现。
@ -251,18 +249,18 @@ At least, the following directories need to be writable *in* the namespace (not
在取消命名空间的共享之后,你也必须对其它的命名空间例如 mount 命名空间取消共享。
在取消 mount 命名空间的共享之后,你*不*需要调用 `chroot()` 或者 `pivot_root()`
但是你必须*在这个命名空间内*挂载可写的文件系统到几个目录上。
在取消 mount 命名空间的共享之后,你****需要调用 `chroot()` 或者 `pivot_root()`
但是你必须**在这个命名空间内**挂载可写的文件系统到几个目录上。
请确保*这个命名空间内*(不是这个命名空间外部)至少以下几个目录是可写的:
请确保**这个命名空间内**(不是这个命名空间外部)至少以下几个目录是可写的:
- `/etc`
- `/run`
- `/var/logs`
- `/var/lib/kubelet`
- `/var/lib/cni`
- `/var/lib/containerd` (参照 containerd )
- `/var/lib/containers` (参照 CRI-O )
- `/var/lib/containerd` (参照 containerd)
- `/var/lib/containers` (参照 CRI-O)
<!--
### Creating a delegated cgroup tree
@ -340,7 +338,7 @@ containerd or CRI-O and ensure that it is running within the user namespace befo
Pod 的网络命名空间可以使用常规的 CNI 插件配置。对于多节点的网络,已知 Flannel (VXLAN、8472/UDP) 可以正常工作。
诸如 kubelet 端口10250/TCP`NodePort` 服务端口之类的端口必须通过外部端口转发器
(例如 RootlessKit、 slirp4netns 或
(例如 RootlessKit、slirp4netns 或
[socat(1)](https://linux.die.net/man/1/socat)) 从节点网络命名空间暴露给主机。
你可以使用 K3s 的端口转发器。更多细节请参阅
@ -577,8 +575,8 @@ on the rootlesscontaine.rs website.
## 注意事项 {#caveats}
- 大部分“非本地”的卷驱动(例如 `nfs``iscsi`)不能正常工作。
已知诸如 `local`、`hostPath`、`emptyDir`、`configMap`、`secret` 和 `downwardAPI`
这些本地卷是能正常工作的。
已知诸如 `local`、`hostPath`、`emptyDir`、`configMap`、`secret` 和 `downwardAPI`
这些本地卷是能正常工作的。
- 一些 CNI 插件可能不正常工作。已知 Flannel (VXLAN) 是能正常工作的。