CentOS 上安装 Kubernetes 的关键注意事项
一 系统与版本兼容
- 选择受支持的 CentOS 7.6+(或 8.x)作为基础系统,内核建议 ≥ 3.10;如条件允许,优先使用 CentOS Stream 8/9 或迁移至 Rocky/AlmaLinux 以获得更长期的支持与安全更新。
- 明确 Kubernetes 版本与组件(kubelet/kubeadm/kubectl)的对应关系,避免跨大版本混用;安装前用
kubeadm version 与 yum list --showduplicates kubelet 核对可用版本。
- 容器运行时建议采用 containerd(Kubernetes 1.24+ 默认已移除 dockershim,若坚持使用 Docker,需通过 cri-dockerd 适配)。
二 基础环境与安全基线
- 主机规划:设置唯一 hostname 与 /etc/hosts 解析;建议固定 静态 IP,保证节点间 互通 且可访问外网(拉取镜像)。
- 必备前置:
- 禁用 Swap:
swapoff -a 并注释 /etc/fstab 中的 swap 行;
- 内核网络参数:开启桥接流量经 iptables 规则生效;
- 时间同步:启用 NTP/chrony,避免证书校验与调度异常。
- 防火墙与 SELinux:
- 测试环境可临时关闭
firewalld 与 SELinux 以简化排障;
- 生产环境不建议直接关闭,应基于业务需要精细化放行端口并配置 SELinux 策略以允许 kubelet/容器运行。
三 网络与端口规划
- 规划 Service CIDR 与 Pod CIDR,避免与宿主机网段及现有网络冲突;常见组合如
10.96.0.0/12(Service)与 10.244.0.0/16(Pod,Flannel 常用)。
- 放行关键端口(示例):
- 控制面:6443(kube-apiserver)、2379-2380(etcd)、10250(kubelet API)、10251(kube-scheduler)、10252(kube-controller-manager);
- 节点间与 Pod 网络:依据 CNI 插件要求放行 VxLAN/Host-GW 等所需端口与转发规则。
- 选择并尽早部署 CNI 插件(如 Calico、Flannel、Weave),确保 Pod 间与跨节点通信正常。
四 初始化与高可用
- 使用 kubeadm init 初始化控制面:
- 单控制面可指定
--pod-network-cidr 与 --apiserver-advertise-address;
- 多控制面/云上环境建议使用
--control-plane-endpoint 与 --upload-certs,便于多 Master 证书分发与 API 入口统一。
- 记录生成的 join 命令(token 与 CA 证书哈希),在 Worker 节点执行加入;token 默认 24 小时有效,过期需重新生成。
- 高可用建议:至少 3 个控制平面节点 组成 etcd 集群,前置 负载均衡器(VIP/HAProxy/Nginx)对外暴露 6443。
五 镜像拉取与常见问题排查
- 国内环境优先配置 镜像加速 与 Kubernetes YUM 镜像源,加速
kubeadm init 阶段的镜像拉取;必要时使用 kubeadm config images pull 预拉取。
- 常见报错与对策:
- “节点 NotReady”多因 CNI 未部署 或 Pod CIDR 冲突;
- “ImagePullBackOff”检查镜像仓库可达性与镜像名称;
- “kubelet 启动失败”核对 cgroup 驱动(systemd)、Swap 关闭、内核参数 与 时间同步;
- “证书错误”检查 系统时间、API 地址 与 kubeconfig。