1
1
---
2
- title : 以非root用户身份运行 Kubernetes 节点组件
2
+ title : 以非 root 用户身份运行 Kubernetes 节点组件
3
3
content_type : task
4
4
min-kubernetes-server-version : 1.22
5
5
---
6
6
7
7
<!--
8
- ---
9
8
title: Running Kubernetes Node Components as a Non-root User
10
9
content_type: task
11
10
min-kubernetes-server-version: 1.22
12
- ---
13
11
-->
14
12
15
13
<!-- overview -->
@@ -32,7 +30,7 @@ If you are just looking for how to run a pod as a non-root user, see [SecurityCo
32
30
这个文档描述了怎样不使用 root 特权,而是通过使用 {{< glossary_tooltip text="用户命名空间" term_id="userns" >}}
33
31
去运行 Kubernetes 节点组件(例如 kubelet、CRI、OCI、CNI)。
34
32
35
- 这种技术也叫做 _ rootless 模式(Rootless mode)_ 。
33
+ 这种技术也叫做 ** rootless 模式(Rootless mode)** 。
36
34
37
35
{{< note >}}
38
36
这个文档描述了怎么以非 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
55
53
56
54
{{% version-check %}}
57
55
58
- * [ 启用 Cgroup v2] ( https://rootlesscontaine.rs/getting-started/common/cgroup2/ )
56
+ * [ 启用 cgroup v2] ( https://rootlesscontaine.rs/getting-started/common/cgroup2/ )
59
57
* [ 在 systemd 中启用 user session] ( https://rootlesscontaine.rs/getting-started/common/login/ )
60
58
* [ 根据不同的 Linux 发行版,配置 sysctl 的值] ( https://rootlesscontaine.rs/getting-started/common/sysctl/ )
61
59
* [ 确保你的非特权用户被列在 ` /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
74
72
75
73
### minikube
76
74
77
- [minikube](https://minikube.sigs.k8s.io/) also supports running Kubernetes inside Rootless Docker.
75
+ [minikube](https://minikube.sigs.k8s.io/) also supports running Kubernetes inside Rootless Docker or Rootless Podman .
78
76
79
- See the page about the [docker](https://minikube.sigs.k8s.io/docs/drivers/docker/) driver in the Minikube documentation.
77
+ See the Minikube documentation:
80
78
81
- Rootless Podman is not supported.
79
+ * [Rootless Docker](https://minikube.sigs.k8s.io/docs/drivers/docker/)
80
+ * [Rootless Podman](https://minikube.sigs.k8s.io/docs/drivers/podman/)
82
81
-->
83
82
84
83
## 使用 Rootless 模式的 Docker/Podman 运行 Kubernetes
@@ -91,13 +90,12 @@ Rootless Podman is not supported.
91
90
92
91
### minikube
93
92
94
- [ minikube] ( https://minikube.sigs.k8s.io/ ) 也支持使用 Rootless 模式的 Docker 运行 Kubernetes。
95
-
96
- 请参阅 Minikube 文档中的 [ docker] ( https://minikube.sigs.k8s.io/docs/drivers/docker/ ) 驱动页面。
93
+ [ minikube] ( https://minikube.sigs.k8s.io/ ) 也支持使用 Rootless 模式的 Docker 或 Podman 运行 Kubernetes。
97
94
98
- 它不支持 Rootless 模式的 Podman。
95
+ 请参阅 Minikube 文档:
99
96
100
- <!-- Supporting rootless podman is discussed in https://github.com/kubernetes/minikube/issues/8719 -->
97
+ * [ Rootless Docker] ( https://minikube.sigs.k8s.io/docs/drivers/docker/ )
98
+ * [ Rootless Podman] ( https://minikube.sigs.k8s.io/docs/drivers/podman/ )
101
99
102
100
<!--
103
101
## Running Kubernetes inside Unprivileged Containers
@@ -140,7 +138,7 @@ the container plus several other advanced OS virtualization techniques.
140
138
-->
141
139
142
140
Sysbox 支持在非特权容器内运行 Kubernetes,
143
- 而不需要 Cgroup v2 和 “KubeletInUserNamespace” 特性门控。
141
+ 而不需要 cgroup v2 和 “KubeletInUserNamespace” 特性门控。
144
142
Sysbox 通过在容器内暴露特定的 ` /proc ` 和 ` /sys ` 文件系统,
145
143
以及其它一些先进的操作系统虚拟化技术来实现。
146
144
@@ -251,18 +249,18 @@ At least, the following directories need to be writable *in* the namespace (not
251
249
252
250
在取消命名空间的共享之后,你也必须对其它的命名空间例如 mount 命名空间取消共享。
253
251
254
- 在取消 mount 命名空间的共享之后,你* 不 * 需要调用 ` chroot() ` 或者 ` pivot_root() ` ,
255
- 但是你必须* 在这个命名空间内* 挂载可写的文件系统到几个目录上。
252
+ 在取消 mount 命名空间的共享之后,你** 不 * * 需要调用 ` chroot() ` 或者 ` pivot_root() ` ,
253
+ 但是你必须** 在这个命名空间内* * 挂载可写的文件系统到几个目录上。
256
254
257
- 请确保* 这个命名空间内* (不是这个命名空间外部)至少以下几个目录是可写的:
255
+ 请确保** 这个命名空间内* * (不是这个命名空间外部)至少以下几个目录是可写的:
258
256
259
257
- ` /etc `
260
258
- ` /run `
261
259
- ` /var/logs `
262
260
- ` /var/lib/kubelet `
263
261
- ` /var/lib/cni `
264
- - ` /var/lib/containerd ` (参照 containerd )
265
- - ` /var/lib/containers ` (参照 CRI-O )
262
+ - ` /var/lib/containerd ` (参照 containerd)
263
+ - ` /var/lib/containers ` (参照 CRI-O)
266
264
267
265
<!--
268
266
### Creating a delegated cgroup tree
@@ -340,7 +338,7 @@ containerd or CRI-O and ensure that it is running within the user namespace befo
340
338
Pod 的网络命名空间可以使用常规的 CNI 插件配置。对于多节点的网络,已知 Flannel (VXLAN、8472/UDP) 可以正常工作。
341
339
342
340
诸如 kubelet 端口(10250/TCP)和 ` NodePort ` 服务端口之类的端口必须通过外部端口转发器
343
- (例如 RootlessKit、 slirp4netns 或
341
+ (例如 RootlessKit、slirp4netns 或
344
342
[ socat(1)] ( https://linux.die.net/man/1/socat ) ) 从节点网络命名空间暴露给主机。
345
343
346
344
你可以使用 K3s 的端口转发器。更多细节请参阅
@@ -577,8 +575,8 @@ on the rootlesscontaine.rs website.
577
575
# # 注意事项 {#caveats}
578
576
579
577
- 大部分“非本地”的卷驱动(例如 `nfs` 和 `iscsi`)不能正常工作。
580
- 已知诸如 `local`、`hostPath`、`emptyDir`、`configMap`、`secret` 和 `downwardAPI`
581
- 这些本地卷是能正常工作的。
578
+ 已知诸如 `local`、`hostPath`、`emptyDir`、`configMap`、`secret` 和 `downwardAPI`
579
+ 这些本地卷是能正常工作的。
582
580
583
581
- 一些 CNI 插件可能不正常工作。已知 Flannel (VXLAN) 是能正常工作的。
584
582
0 commit comments