Merge pull request #35167 from windsonsea/clusadm
[zh-cn] resync kubelet-in-userns.mdpull/35183/head
commit
d734bf96b6
|
@ -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) 是能正常工作的。
|
||||
|
||||
|
|
Loading…
Reference in New Issue