fix(content): correct verified technical facts across cgroups, namespaces, etcd and k8s sections

- 12.3: daemon.json has no top-level cgroup-driver key; use exec-opts
  native.cgroupdriver (values cgroupfs/systemd) per official dockerd reference
- 12.2: USER namespace is not enabled by default; requires userns-remap
  (aligns with 18.1)
- 14.1: cgroup v1 deprecation and kubelet default-fail happen in v1.35, not
  v1.36 (per kubernetes.io cgroups doc)
- 15_etcd: maintenance window updated after etcd v3.7.0 release (2026-07-08)
  to 3.6/3.7
- 3.9.6: fix dangling sentence order in registry migration note
- tools: add 'from __future__ import annotations' so PEP 604 annotations run
  on Python 3.9 (fixes npm test)
This commit is contained in:
yeasy
2026-07-10 06:13:27 -07:00
parent bd944a2383
commit 8eabe30dc2
8 changed files with 13 additions and 12 deletions
+1 -3
View File
@@ -80,9 +80,7 @@ Registry Mirrors:
### 3.9.6 Kubernetes 官方镜像地址迁移 ### 3.9.6 Kubernetes 官方镜像地址迁移
可以登录 [阿里云容器镜像服务](https://www.aliyun.com/product/acr),在 **镜像中心** -> **镜像搜索** 中查找。 Kubernetes 社区已将官方镜像地址从 `k8s.gcr.io` 迁移到 `registry.k8s.io`建议优先使用新地址若需查找国内可用的替代镜像可以登录 [阿里云容器镜像服务](https://www.aliyun.com/product/acr),在 **镜像中心** -> **镜像搜索** 中查找对应镜像
Kubernetes 社区已将官方镜像地址从 `k8s.gcr.io` 迁移到 `registry.k8s.io`建议优先使用新地址
一般情况下有如下对应关系 一般情况下有如下对应关系
+2 -2
View File
@@ -28,7 +28,7 @@ flowchart LR
### 12.2.2 Namespace 的类型 ### 12.2.2 Namespace 的类型
Linux 内核5.6+共提供 8 NamespaceDocker 容器默认使用其中 7 不含 Time Linux 内核5.6+共提供 8 NamespaceDocker 容器默认用其中 PIDNETMNTUTSIPC cgroup v2 主机上还包括 CgroupUSER Namespace 默认****启用需要通过 `daemon.json` `userns-remap` 显式开启详见第 18.1 Time Namespace 则未被使用
| Namespace | 隔离内容 | 容器中的效果 | | Namespace | 隔离内容 | 容器中的效果 |
|-----------|---------|-------------| |-----------|---------|-------------|
@@ -37,7 +37,7 @@ Linux 内核(5.6+)共提供 8 种 Namespace。Docker 容器默认使用其
| **MNT** | 挂载点 | 独立的文件系统视图自己的根目录 | | **MNT** | 挂载点 | 独立的文件系统视图自己的根目录 |
| **UTS** | 主机名 | 独立的主机名和域名 | | **UTS** | 主机名 | 独立的主机名和域名 |
| **IPC** | 进程间通信 | 独立的信号量消息队列共享内存 | | **IPC** | 进程间通信 | 独立的信号量消息队列共享内存 |
| **USER** | 用户/ ID | 容器内的 root 可以映射为宿主机的普通用户 | | **USER** | 用户/ ID | 容器内的 root 可以映射为宿主机的普通用户默认不启用 `userns-remap` 显式开启|
| **Cgroup** | Cgroup 根目录 | 隔离 cgroup 层级视图 (Linux 4.6+)| | **Cgroup** | Cgroup 根目录 | 隔离 cgroup 层级视图 (Linux 4.6+)|
| **Time** | 系统时钟 | 隔离 CLOCK_MONOTONIC CLOCK_BOOTTIME (Linux 5.6+)| | **Time** | 系统时钟 | 隔离 CLOCK_MONOTONIC CLOCK_BOOTTIME (Linux 5.6+)|
+4 -3
View File
@@ -198,14 +198,15 @@ $ docker run --rm --cpus=1 stress --cpu 4
#### Docker cgroups v2 的支持 #### Docker cgroups v2 的支持
Docker 20.10+ 开始支持 cgroups v2如果系统支持提供更好的性能和资源隔离如果需要明确控制或回退到 v1可以通过 Docker 守护进程配置文件 `/etc/docker/daemon.json` 修改 `cgroup-driver` 参数 Docker 20.10+ 开始支持 cgroups v2如果系统支持提供更好的性能和资源隔离cgroup 驱动可以通过 Docker 守护进程配置文件 `/etc/docker/daemon.json` `exec-opts` 配置项指定
```json ```json
{ {
"cgroup-driver": "systemd" "exec-opts": ["native.cgroupdriver=systemd"]
} }
``` ```
常见的 `cgroup-driver` 值包括 `systemd` (推荐) `cgroupfs`重启 Docker 守护进程后生效
`native.cgroupdriver` 仅支持 `systemd` `cgroupfs` 两个取值若不指定cgroup v1 主机默认使用 `cgroupfs` systemd cgroup v2 主机默认使用 `systemd`重启 Docker 守护进程后生效
#### 检查系统使用的版本 #### 检查系统使用的版本
+1 -1
View File
@@ -105,7 +105,7 @@ $ sudo modprobe br_netfilter
#### cgroup v2 要求必须 #### cgroup v2 要求必须
Kubernetes v1.36 默认要求节点使用 cgroup v2kubelet cgroup v1 节点上默认会拒绝启动但管理员可以在 kubelet 配置中设置 `failCgroupV1: false` 来兼容 cgroup v1仅建议用于遗留系统过渡期验证节点是否支持 cgroup v2 Kubernetes v1.35 起弃用 cgroup v1默认要求节点使用 cgroup v2 v1.35 开始kubelet cgroup v1 节点上默认会拒绝启动但管理员可以在 kubelet 配置中设置 `failCgroupV1: false` 来兼容 cgroup v1仅建议用于遗留系统过渡期验证节点是否支持 cgroup v2
```bash ```bash
$ mount | grep cgroup2 $ mount | grep cgroup2
+1 -1
View File
@@ -1,6 +1,6 @@
## 15.1 简介 ## 15.1 简介
> **版本说明** 本章内容基于 etcd 3.5 系列版本编写官方维护最新两个次版本当前 3.5 3.6请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。 > **版本说明** 本章内容基于 etcd 3.5 系列版本编写官方维护最新两个次版本2026 7 etcd 3.7.0 发布后 3.6 3.73.5 已退出维护窗口请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。
如图 15-1 所示etcd 项目使用该标识 如图 15-1 所示etcd 项目使用该标识
+1 -1
View File
@@ -4,7 +4,7 @@
`etcd` 基于 `Go` 语言实现因此用户可以从[项目主页](https://github.com/etcd-io/etcd)下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 `Docker` 镜像文件来体验。 `etcd` 基于 `Go` 语言实现因此用户可以从[项目主页](https://github.com/etcd-io/etcd)下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 `Docker` 镜像文件来体验。
> 注意etcd 官方仅维护最新两个次版本当前 3.5 3.6etcd 3.4 已于 2026 5 月结束支持EOL仍在使用 3.4 的用户应尽快升级本章示例基于 etcd `3.5.x` 版本编写etcd 3.6.x 可用于新部署请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本。 > 注意etcd 官方仅维护最新两个次版本2026 7 etcd 3.7.0 发布后 3.6 3.7etcd 3.4 已于 2026 5 月结束支持EOL3.5 也已退出维护窗口仍在使用的用户应尽快升级本章示例基于 etcd `3.5.x` 版本编写etcd 3.6.x/3.7.x 可用于新部署请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本。
### 15.2.1 二进制文件方式下载 ### 15.2.1 二进制文件方式下载
+1 -1
View File
@@ -2,7 +2,7 @@
`etcd` `CoreOS` 团队发起的一个管理配置信息和服务发现 (`Service Discovery`) 的项目在这一章里面我们将基于 `etcd 3.5 系列`版本介绍该项目的目标安装和使用以及实现的技术 `etcd` `CoreOS` 团队发起的一个管理配置信息和服务发现 (`Service Discovery`) 的项目在这一章里面我们将基于 `etcd 3.5 系列`版本介绍该项目的目标安装和使用以及实现的技术
> **版本说明** 本章示例基于 etcd 3.5 系列版本编写etcd 官方维护最新两个次版本当前 3.5 3.6请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。 > **版本说明** 本章示例基于 etcd 3.5 系列版本编写etcd 官方维护最新两个次版本2026 7 etcd 3.7.0 发布后 3.6 3.73.5 已退出维护窗口请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。
## 本章内容 ## 本章内容
+2
View File
@@ -8,6 +8,8 @@ and HTML image paths in a temporary copy so PDF builds can embed local assets
without changing source Markdown used by GitHub or HTML readers. without changing source Markdown used by GitHub or HTML readers.
""" """
from __future__ import annotations
import argparse import argparse
import base64 import base64
import mimetypes import mimetypes