添加kubeadm init 的troubleshooting部分

This commit is contained in:
2026-09-15 21:43:07 +08:00
parent 01a06fae2c
commit 8211652214

View File

@@ -4,7 +4,7 @@
--- ---
一、 `kubeadm init` 的内部执行流程 ## 一、 `kubeadm init` 的内部执行流程
当你在控制平面节点运行 `kubeadm init` 时,它会在后台自动完成以下一系列初始化步骤: 当你在控制平面节点运行 `kubeadm init` 时,它会在后台自动完成以下一系列初始化步骤:
@@ -18,12 +18,12 @@
--- ---
二、 关键参数详解(常用与高频考点) ## 二、 关键参数详解(常用与高频考点)
在命令行执行 `kubeadm init` 时,可以通过传入关键参数来自定义集群的架构与网络配置: 在命令行执行 `kubeadm init` 时,可以通过传入关键参数来自定义集群的架构与网络配置:
| 参数名称 | 说明与使用场景 | 示例 / 默认值 | | 参数名称 | 说明与使用场景 | 示例 / 默认值 |
|---|---|---| | --------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| **--apiserver-advertise-address** | 指定 API Server 通告和监听的网卡 IP 地址。多网卡环境下**必须显式指定**为内网/公网主网卡 IP。 | `--apiserver-advertise-address=192.168.1.10` | | **--apiserver-advertise-address** | 指定 API Server 通告和监听的网卡 IP 地址。多网卡环境下**必须显式指定**为内网/公网主网卡 IP。 | `--apiserver-advertise-address=192.168.1.10` |
| **--pod-network-cidr** | 指定 Pod 网络的虚拟 IP 地址段(Cluster CIDR)。使用 Flannel 或 Calico 等 CNI 插件时必须配置,且需与 CNI 的默认 CIDR 匹配。 | `--pod-network-cidr=10.244.0.0/16` _(Flannel)_<br>`--pod-network-cidr=192.168.0.0/16` _(Calico)_ | | **--pod-network-cidr** | 指定 Pod 网络的虚拟 IP 地址段(Cluster CIDR)。使用 Flannel 或 Calico 等 CNI 插件时必须配置,且需与 CNI 的默认 CIDR 匹配。 | `--pod-network-cidr=10.244.0.0/16` _(Flannel)_<br>`--pod-network-cidr=192.168.0.0/16` _(Calico)_ |
| **--service-cidr** | 指定 Service 虚拟 IP 的地址段(ClusterIP 范围)。默认网段为 `10.96.0.0/12` 或 `10.96.0.0/16`。 | `--service-cidr=10.96.0.0/16` | | **--service-cidr** | 指定 Service 虚拟 IP 的地址段(ClusterIP 范围)。默认网段为 `10.96.0.0/12` 或 `10.96.0.0/16`。 | `--service-cidr=10.96.0.0/16` |
@@ -36,7 +36,7 @@
--- ---
三、 典型初始化命令示例 ## 三、 典型初始化命令示例
单控制平面集群初始化示例: 单控制平面集群初始化示例:
@@ -60,7 +60,7 @@ sudo chown $(id -u):$(id -g) $HOME/.kube/config
--- ---
四、 如何产生 Worker 节点的 Join 命令 ## 四、 如何产生 Worker 节点的 Join 命令
节点加入集群依赖于 **Bootstrap Token 机制**。Token 建立节点与控制平面之间的双向信任。 节点加入集群依赖于 **Bootstrap Token 机制**。Token 建立节点与控制平面之间的双向信任。
@@ -81,6 +81,11 @@ kubeadm join 192.168.1.10:6443 --token l5kotg.hiivo73eu000bbfu \
kubeadm token create --print-join-command kubeadm token create --print-join-command
``` ```
```
shenwei@shenwei-ubuntu-2:~$ sudo kubeadm token create --print-join-command
kubeadm join 192.168.3.45:6443 --token r5aix1.dqoljbanm0rbyvn5 --discovery-token-ca-cert-hash sha256:d590fc92d4353ff628f89e02ab9e1a19d1e28d0c42f7d695378b257d71e3b386
```
运行后终端会直接输出一条**全新的、可立即粘贴在 Worker 节点上执行**的 `kubeadm join` 命令。 运行后终端会直接输出一条**全新的、可立即粘贴在 Worker 节点上执行**的 `kubeadm join` 命令。
3. 方式三:分步手动获取与拼接(理解原理) 3. 方式三:分步手动获取与拼接(理解原理)
@@ -116,3 +121,32 @@ kubeadm join <CONTROL_PLANE_IP>:6443 \
--- ---
💡 **提示**:如果在 Worker 节点执行 `kubeadm join` 失败或需要重新引导节点,可以在该 Worker 节点上先运行 `kubeadm reset` 清理历史状态,然后再重新运行 `kubeadm join`。 💡 **提示**:如果在 Worker 节点执行 `kubeadm join` 失败或需要重新引导节点,可以在该 Worker 节点上先运行 `kubeadm reset` 清理历史状态,然后再重新运行 `kubeadm join`。
## 五、 Troubleshooting
### 1. 启动`sudo kubeadm init`,发现无法拉取镜像
解决方案:
Use Host IP for Containerd Proxy
If your local proxy (e.g., Clash, V2Ray, Shadowsocks) is running on `127.0.0.1:10808`, use the host's actual LAN IP address or `172.17.0.1` instead of `127.0.0.1` in the containerd config.
1. **Find your host IP address:**
```
ip route show | grep default
```
_(e.g., `192.168.1.100`)_
2. **Update `/etc/systemd/system/containerd.service.d/http-proxy.conf`:**
```
[Service]
Environment="HTTP_PROXY=http://192.168.1.100:7890"
Environment="HTTPS_PROXY=http://192.168.1.100:7890"
Environment="NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.0.0/16"
```
> **Important:** Ensure your local proxy client is set to **"Allow LAN connections"** (listen on `0.0.0.0` rather than `127.0.0.1`).
3. **Reload and restart:**
```
sudo systemctl daemon-reload
sudo systemctl restart containerd
```