k8s 二进制安装过程中有哪些常见问题需要注意?

文章导读
二进制安装 Kubernetes 适合需要深度定制集群环境或离线场景,但相比自动化脚本,它要求手动处理证书、网络插件和系统参数,容易在组件兼容性和配置细节上出错。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 参考来源
A A

二进制安装 Kubernetes 适合需要深度定制集群环境或离线场景,但相比自动化脚本,它要求手动处理证书、网络插件和系统参数,容易在组件兼容性和配置细节上出错。

先说结论:二进制安装适合学习原理或特殊环境,生产环境建议先准备好内核版本、证书 SAN 列表和网络插件方案。

  • 适合:需要定制组件参数、离线环境或学习 K8s 架构的场景
  • 先准备:检查内核版本是否支持 cgroup v2,规划好证书 SAN 包含所有访问地址
  • 验收:确保所有节点状态为 Ready 且核心组件 Pod 运行正常

命令速用版

遇到节点无法加入或组件启动失败,优先执行以下检查:

systemctl status kubelet -l
journalctl -u kubelet -xe
kubectl get csr
kubectl certificate approve <csr-name>
uname -r

为什么会这样

二进制安装缺乏自动化脚本的容错检查,每个组件(如 kubelet、apiserver)都需要手动配置 systemd 服务和证书。常见问题多源于系统环境不匹配(如内核版本过低)、证书签名遗漏(SAN 字段缺失)或网络插件未正确初始化,导致组件间通信失败。

分步处理

1. 环境准备:关闭防火墙、禁用 SELinux 和 Swap,确保内核版本满足要求(CentOS 7 默认内核可能需升级)。

2. 证书配置:生成证书时,SAN 字段需包含所有 Master 节点 IP、域名及 Kubernetes 默认域名(如 kubernetes.default)。

3. 组件启动:配置 kubelet 时使用 `--cgroup-driver`=systemd,并确保 containerd 或 Docker 配置一致。

k8s 二进制安装过程中有哪些常见问题需要注意?

4. 网络插件:安装 Calico 或 Flannel 前,确保 etcd 连通性,并配置正确的 Pod 网段。

怎么验证是否生效

执行 kubectl get nodes 查看所有节点状态是否为 Ready,同时检查 kube-system 命名空间下的核心组件(如 coredns、network-plugin)是否处于 Running 状态。

kubectl get nodes
kubectl get pod -n kube-system

常见坑

1. 内核版本不兼容:CentOS 7 默认内核 3.10 可能导致 kubelet 崩溃,建议升级至 5.4.x 以上长期支持内核。

2. 证书过期或遗漏:证书 SAN 未包含 VIP 或域名会导致 APIServer 认证失败,日志出现 x509 错误。

3. 节点无法加入:CSR 请求 Pending 状态未批准,或 token.csv 文件格式错误导致 TLS 引导认证失败。

4. 网络插件缺失:未安装 CNI 插件前,Pod 无法启动,节点状态可能一直为 NotReady。

参考来源

  • 避坑指南:在 CentOS 7/8/9 上二进制安装 K8s v1.35.0 最容易踩的 10 个坑及解决方案
  • 99% 的人都会遇到!二进制安装 K8s 节点无法加入集群排查思路详解
  • 二进制安装 Kubernetes(k8s) v1.23.5 ---(上)
  • 以二进制文件安装 K8S 之环境准备
  • 二进制安装 k8s 集群 (5)-安装 flannel