Ubuntu 上搭建与配置 Kubernetes 集群
一 环境准备与前置条件
- 系统要求:64 位 Ubuntu,建议至少 2 核 CPU、4GB 内存、20GB 磁盘;所有节点(Master 与 Node)保持 时间同步(如安装并启用 chrony)。
- 主机名与解析:为各节点设置唯一 hostname,并在 /etc/hosts 中写入集群内解析,便于组件通信。
- 关闭 Swap:执行 swapoff -a,并在 /etc/fstab 中注释 swap 行,避免 kubelet 启动失败。
- 内核与网络:加载 overlay、br_netfilter 模块;开启桥接流量进入 iptables 与 IPv4 转发,确保容器网络连通。
- 容器运行时:Kubernetes 支持 containerd、CRI-O、Docker Engine(通过 cri-dockerd 适配) 等;如使用 Docker,建议将 cgroup 驱动设为 systemd 以与 kubelet 一致。
- 防火墙与安全组:放通 6443(API Server)、10250(kubelet)、10251/10252(kube-scheduler/controller-manager) 等端口,或在内网环境按需关闭防火墙以便排障。
二 安装容器运行时与 Kubernetes 组件
三 初始化控制平面与网络插件
四 加入工作节点与验证
-
加入 Node
在 Master 初始化成功后,使用输出的 kubeadm join 命令在各 Node 上执行,例如:
sudo kubeadm join <MASTER_IP>:6443 --token --discovery-token-ca-cert-hash <SHA256_HASH>
如令牌过期,可在 Master 上执行:
kubeadm token create --print-join-command
-
基础验证
kubectl get nodes
kubectl get pods -A
看到节点状态为 Ready、核心系统 Pod 为 Running 即表示集群可用。
五 常见问题与优化建议
- 镜像拉取慢或失败:使用国内镜像仓库(如 registry.aliyuncs.com/google_containers)预拉取镜像,或在 containerd 配置镜像加速。
- cgroup 驱动不一致:容器运行时与 kubelet 必须一致(推荐 systemd);修改后重启容器运行时与 kubelet。
- 初始化失败排查:先执行 kubeadm reset 清理状态;检查 /var/log/syslog、kubelet 日志与端口占用。
- 控制平面高可用:生产环境建议部署 多 Master + 负载均衡,并使用 kubeadm init --control-plane-endpoint 方式引导。
- 安全加固:启用 RBAC、Pod Security、网络策略(如 Calico NetworkPolicy)、镜像签名与镜像仓库鉴权。