diff --git a/03_install/3.9_mirror.md b/03_install/3.9_mirror.md index b569009..60b9442 100644 --- a/03_install/3.9_mirror.md +++ b/03_install/3.9_mirror.md @@ -80,9 +80,7 @@ Registry Mirrors: ### 3.9.6 Kubernetes 官方镜像地址迁移 -可以登录 [阿里云容器镜像服务](https://www.aliyun.com/product/acr),在 **镜像中心** -> **镜像搜索** 中查找。 - -Kubernetes 社区已将官方镜像地址从 `k8s.gcr.io` 迁移到 `registry.k8s.io`。建议优先使用新地址。 +Kubernetes 社区已将官方镜像地址从 `k8s.gcr.io` 迁移到 `registry.k8s.io`。建议优先使用新地址。若需查找国内可用的替代镜像,可以登录 [阿里云容器镜像服务](https://www.aliyun.com/product/acr),在 **镜像中心** -> **镜像搜索** 中查找对应镜像。 一般情况下有如下对应关系: diff --git a/12_implementation/12.2_namespace.md b/12_implementation/12.2_namespace.md index f2c2373..954bf24 100644 --- a/12_implementation/12.2_namespace.md +++ b/12_implementation/12.2_namespace.md @@ -28,7 +28,7 @@ flowchart LR ### 12.2.2 Namespace 的类型 -Linux 内核(5.6+)共提供 8 种 Namespace。Docker 容器默认使用其中 7 种(不含 Time): +Linux 内核(5.6+)共提供 8 种 Namespace。Docker 容器默认启用其中的 PID、NET、MNT、UTS、IPC(在 cgroup v2 主机上还包括 Cgroup);USER Namespace 默认**不**启用,需要通过 `daemon.json` 的 `userns-remap` 显式开启(详见第 18.1 节),Time Namespace 则未被使用: | Namespace | 隔离内容 | 容器中的效果 | |-----------|---------|-------------| @@ -37,7 +37,7 @@ Linux 内核(5.6+)共提供 8 种 Namespace。Docker 容器默认使用其 | **MNT** | 挂载点 | 独立的文件系统视图,自己的根目录 | | **UTS** | 主机名 | 独立的主机名和域名 | | **IPC** | 进程间通信 | 独立的信号量、消息队列、共享内存 | -| **USER** | 用户/组 ID | 容器内的 root 可以映射为宿主机的普通用户 | +| **USER** | 用户/组 ID | 容器内的 root 可以映射为宿主机的普通用户(默认不启用,需 `userns-remap` 显式开启)| | **Cgroup** | Cgroup 根目录 | 隔离 cgroup 层级视图 (Linux 4.6+)| | **Time** | 系统时钟 | 隔离 CLOCK_MONOTONIC 和 CLOCK_BOOTTIME (Linux 5.6+)| diff --git a/12_implementation/12.3_cgroups.md b/12_implementation/12.3_cgroups.md index a6c5d9d..79cb81c 100644 --- a/12_implementation/12.3_cgroups.md +++ b/12_implementation/12.3_cgroups.md @@ -198,14 +198,15 @@ $ docker run --rm --cpus=1 stress --cpu 4 #### 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 { - "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 守护进程后生效。 #### 检查系统使用的版本 diff --git a/14_kubernetes_setup/14.1_kubeadm.md b/14_kubernetes_setup/14.1_kubeadm.md index a4657db..4128137 100644 --- a/14_kubernetes_setup/14.1_kubeadm.md +++ b/14_kubernetes_setup/14.1_kubeadm.md @@ -105,7 +105,7 @@ $ sudo modprobe br_netfilter #### cgroup v2 要求:必须 -Kubernetes v1.36 默认要求节点使用 cgroup v2。kubelet 在 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 $ mount | grep cgroup2 diff --git a/15_etcd/15.1_intro.md b/15_etcd/15.1_intro.md index 148377a..f416e94 100644 --- a/15_etcd/15.1_intro.md +++ b/15_etcd/15.1_intro.md @@ -1,6 +1,6 @@ ## 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.7,3.5 已退出维护窗口)。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。 如图 15-1 所示,etcd 项目使用该标识。 diff --git a/15_etcd/15.2_install.md b/15_etcd/15.2_install.md index 5772130..d01463e 100644 --- a/15_etcd/15.2_install.md +++ b/15_etcd/15.2_install.md @@ -4,7 +4,7 @@ `etcd` 基于 `Go` 语言实现,因此,用户可以从[项目主页](https://github.com/etcd-io/etcd)下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 `Docker` 镜像文件来体验。 -> 注意:etcd 官方仅维护最新两个次版本(当前为 3.5 和 3.6)。etcd 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.7)。etcd 3.4 已于 2026 年 5 月结束支持(EOL),3.5 也已退出维护窗口,仍在使用的用户应尽快升级。本章示例基于 etcd `3.5.x` 版本编写,etcd 3.6.x/3.7.x 可用于新部署。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本。 ### 15.2.1 二进制文件方式下载 diff --git a/15_etcd/README.md b/15_etcd/README.md index 47aacc0..97beb6c 100644 --- a/15_etcd/README.md +++ b/15_etcd/README.md @@ -2,7 +2,7 @@ `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.7,3.5 已退出维护窗口)。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。 ## 本章内容 diff --git a/tools/prepare_pdf_sources.py b/tools/prepare_pdf_sources.py index 9c31ac7..9661d25 100644 --- a/tools/prepare_pdf_sources.py +++ b/tools/prepare_pdf_sources.py @@ -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. """ +from __future__ import annotations + import argparse import base64 import mimetypes