mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 08:27:25 +00:00
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:
@@ -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),在 **镜像中心** -> **镜像搜索** 中查找对应镜像。
|
||||
|
||||
一般情况下有如下对应关系:
|
||||
|
||||
|
||||
@@ -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+)|
|
||||
|
||||
|
||||
@@ -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 守护进程后生效。
|
||||
|
||||
#### 检查系统使用的版本
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 项目使用该标识。
|
||||
|
||||
|
||||
@@ -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 二进制文件方式下载
|
||||
|
||||
|
||||
+1
-1
@@ -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) 获取最新版本信息。
|
||||
|
||||
## 本章内容
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user