添加kubeadm init 的troubleshooting部分
This commit is contained in:
@@ -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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user