From b148d9efa96f952e9cc01baae8c51e850aa62ce5 Mon Sep 17 00:00:00 2001 From: yeasy Date: Sat, 2 May 2026 18:18:48 +0000 Subject: [PATCH] Update nginx to 1.30 stable, add IPVS deprecation note --- 02_basic_concept/2.3_repository.md | 6 +++--- 04_image/4.1_pull.md | 2 +- 04_image/4.4_commit.md | 6 +++--- 04_image/4.5_build.md | 2 +- 05_container/README.md | 2 +- 07_dockerfile/7.6_env.md | 6 +++--- 07_dockerfile/7.7_arg.md | 4 ++-- 14_kubernetes_setup/14.1_kubeadm.md | 6 ++++-- 14_kubernetes_setup/14.2_kubeadm-docker.md | 6 ++++-- 15_etcd/15.2_install.md | 2 +- 10 files changed, 23 insertions(+), 19 deletions(-) diff --git a/02_basic_concept/2.3_repository.md b/02_basic_concept/2.3_repository.md index d33062a..de8cae2 100644 --- a/02_basic_concept/2.3_repository.md +++ b/02_basic_concept/2.3_repository.md @@ -261,9 +261,9 @@ someuser/myapp # ⚠️ 需要评估 ```bash ## 准备一个你有写权限的镜像地址 -$ export IMAGE=<你的仓库名>/nginx:1.27 -$ docker pull nginx:1.27 -$ docker tag nginx:1.27 $IMAGE +$ export IMAGE=<你的仓库名>/nginx:1.30 +$ docker pull nginx:1.30 +$ docker tag nginx:1.30 $IMAGE $ docker push $IMAGE ## 生成签名密钥(会生成 cosign.key / cosign.pub) diff --git a/04_image/4.1_pull.md b/04_image/4.1_pull.md index 166dcec..65a9b79 100644 --- a/04_image/4.1_pull.md +++ b/04_image/4.1_pull.md @@ -4,7 +4,7 @@ > **版本号最佳实践** > -> - **永远指定版本号**:避免使用 `latest` 标签,应指定具体的版本(如 `ubuntu:24.04`、`nginx:1.27`),以确保镜像内容稳定一致。 +> - **永远指定版本号**:避免使用 `latest` 标签,应指定具体的版本(如 `ubuntu:24.04`、`nginx:1.30`),以确保镜像内容稳定一致。 > - **在生产环境使用摘要**:优先使用镜像摘要(SHA256)而非标签,如 `nginx@sha256:abc123...`,因为摘要不可变。 > - **定期评估依赖**:即使指定了版本号,仍应定期检查依赖的基础镜像是否有安全更新。 diff --git a/04_image/4.4_commit.md b/04_image/4.4_commit.md index 421895e..d2df330 100644 --- a/04_image/4.4_commit.md +++ b/04_image/4.4_commit.md @@ -10,7 +10,7 @@ 现在让我们以定制一个 Web 服务器为例子,来讲解镜像是如何构建的。 -> **版本提示**:以下示例中 `nginx` 镜像使用默认 `latest` 标签。生产环境建议指定具体版本号(如 `nginx:1.27`),以避免镜像更新带来的不兼容性。 +> **版本提示**:以下示例中 `nginx` 镜像使用默认 `latest` 标签。生产环境建议指定具体版本号(如 `nginx:1.30`),以避免镜像更新带来的不兼容性。 ```bash $ docker run --name webserver -d -p 8080:80 nginx @@ -89,11 +89,11 @@ sha256:07e33465974800ce65751acc279adc6ed2dc5ed4e0838f8b86f0c87aa1795214 $ docker image ls nginx REPOSITORY TAG IMAGE ID CREATED SIZE nginx v2 07e334659748 9 seconds ago 181.5 MB -nginx 1.27 05a60462f8ba 12 days ago 181.5 MB +nginx 1.30 05a60462f8ba 12 days ago 181.5 MB nginx latest e43d811ce2f4 4 weeks ago 181.5 MB ``` -> **版本说明**:上面示例中 `nginx:1.27` 代表 1.27 系列的最新 patch 版本。在实际应用中应根据需求选择确切的版本号,而不是盲目使用 `latest`。 +> **版本说明**:上面示例中 `nginx:1.30` 代表 1.30 系列的最新 patch 版本。在���际应用中应根据需求选择确切的版本号,而不是盲目使用 `latest`。 我们还可以用 `docker history` 具体查看镜像内的历史记录。例如先执行 `docker history nginx:v2`,再对比 `docker history nginx:latest`,就能看到我们刚刚提交出来的新层。 diff --git a/04_image/4.5_build.md b/04_image/4.5_build.md index 32af734..6ec71db 100644 --- a/04_image/4.5_build.md +++ b/04_image/4.5_build.md @@ -26,7 +26,7 @@ $ touch Dockerfile ``` 其内容为: -> **版本提示**:下面示例中 `FROM nginx` 使用的是 `latest` 标签。在实际应用中应使用明确的版本号(如 `FROM nginx:1.27`),以确保 Dockerfile 的可重现性和稳定性。 +> **版本提示**:下面示例中 `FROM nginx` 使用的是 `latest` 标签。在实际应用中应使用明确的版本号(如 `FROM nginx:1.30`),以确保 Dockerfile 的可重现性和稳定性。 ```docker FROM nginx diff --git a/05_container/README.md b/05_container/README.md index 9abaf53..84c6011 100644 --- a/05_container/README.md +++ b/05_container/README.md @@ -14,7 +14,7 @@ - **镜像标签约定**: - `latest` 或 `v1.0.0` 等:带标签的自定义镜像,示例中指定具体版本 - `24.04`、`8.4`:官方镜像的稳定版本分支 - - 生产环境建议:指定精确版本号(如 `nginx:1.24.0`、`mysql:8.4.4`)而非仅大版本号 + - 生产环境建议:指定���确版本号(如 `nginx:1.30.0`、`mysql:8.4.4`)而非仅大版本号 * [启动容器](5.1_run.md) * [守护态运行](5.2_daemon.md) diff --git a/07_dockerfile/7.6_env.md b/07_dockerfile/7.6_env.md index 51c9472..b129d3c 100644 --- a/07_dockerfile/7.6_env.md +++ b/07_dockerfile/7.6_env.md @@ -158,15 +158,15 @@ $ docker build --build-arg NODE_VERSION=18 -t myapp . ```docker ## ✅ 好:版本集中管理 -ENV NGINX_VERSION=1.25 \ - NODE_VERSION=20 \ +ENV NGINX_VERSION=1.30 \ + NODE_VERSION=22 \ PYTHON_VERSION=3.12 RUN apt-get install nginx=${NGINX_VERSION} ## ❌ 差:版本分散在各处 -RUN apt-get install nginx=1.25 +RUN apt-get install nginx=1.30 ``` #### 2. 不要存储敏感信息 diff --git a/07_dockerfile/7.7_arg.md b/07_dockerfile/7.7_arg.md index 65e7c56..6bd4b26 100644 --- a/07_dockerfile/7.7_arg.md +++ b/07_dockerfile/7.7_arg.md @@ -125,8 +125,8 @@ $ docker build --build-arg ALPINE_VERSION=3.19 . #### 2. 设置软件版本 ```docker -# 使用次版本号 (1.25) 而非完整版本号 (1.25.0),以便自动更新到最新补丁版本 -ARG NGINX_VERSION=1.25 +# 使用次版本号 (1.30) 而非完整版本号 (1.30.0),以便自动更新到最新补丁版本 +ARG NGINX_VERSION=1.30 RUN curl -fsSL https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz | tar -xz ``` diff --git a/14_kubernetes_setup/14.1_kubeadm.md b/14_kubernetes_setup/14.1_kubeadm.md index 45e1b6c..4bf3168 100644 --- a/14_kubernetes_setup/14.1_kubeadm.md +++ b/14_kubernetes_setup/14.1_kubeadm.md @@ -138,12 +138,14 @@ $ sysctl --system 为了让 kubelet 正确运行,我们需要对其进行一些必要的配置。 -#### 修改 `kubelet.service` +#### 修改 `kubelet.service`(可选:IPVS 模式) + +> **注意**:kube-proxy 的 IPVS 模式已在 Kubernetes 1.35 中被标记为弃用,并计划在后续版本中移除。新部署建议使用默认的 iptables 模式或 nftables 模式(Kubernetes 1.31+ 可用)。以下 IPVS 配置仅供需要兼容旧环境的场景参考。 `/etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf` 写入以下内容 ```bash -# 启用 ipvs 相关内核模块 +# 启用 ipvs 相关内核模块(已弃用,建议迁移至 nftables) [Service] ExecStartPre=-/sbin/modprobe ip_vs diff --git a/14_kubernetes_setup/14.2_kubeadm-docker.md b/14_kubernetes_setup/14.2_kubeadm-docker.md index 1aa7490..745a2fa 100644 --- a/14_kubernetes_setup/14.2_kubeadm-docker.md +++ b/14_kubernetes_setup/14.2_kubeadm-docker.md @@ -169,12 +169,14 @@ $ sysctl --system 为了让 kubelet 正确运行,我们需要对其进行一些必要的配置。 -#### 修改 `kubelet.service` +#### 修改 `kubelet.service`(可选:IPVS 模式) + +> **注意**:kube-proxy 的 IPVS 模式已在 Kubernetes 1.35 中被标记为弃用,并计划在后续版本中移除。新部署建议使用默认的 iptables 模式或 nftables 模式(Kubernetes 1.31+ 可用)。以下 IPVS 配置仅供需要兼容旧环境的场景参考。 `/etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf` 写入以下内容 ```bash -# 启用 ipvs 相关内核模块 +# 启用 ipvs 相关内核模块(已弃用,建议迁移至 nftables) [Service] ExecStartPre=-/sbin/modprobe ip_vs diff --git a/15_etcd/15.2_install.md b/15_etcd/15.2_install.md index a0411cb..6bc78fa 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.5.x` 版本编写。etcd 3.6.x 可用于新部署。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本。 +> 注意: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) 获取最新版本。 ### 15.2.1 二进制文件方式下载