1. 环境准备与规划
作为一名长期在容器化领域摸爬滚打的老兵,我深知一个稳定的基础环境对Kubernetes集群的重要性。这次我将带大家从零开始,在VMware Workstation Pro上搭建Ubuntu 24.04服务器环境,为后续K8s集群部署打下坚实基础。
1.1 硬件资源规划
在开始前,我们需要合理规划资源分配。根据我的实践经验,一个用于学习和开发的三节点集群(1主2从)建议采用以下配置:
- Master节点:至少2核CPU、4GB内存、40GB磁盘
- Worker节点:各1核CPU、2GB内存、30GB磁盘
这样的配置可以流畅运行大多数基础组件,同时不会对宿主机造成过大负担。我的ThinkPad P15v笔记本(i7-11800H/32GB内存)实测可以同时运行三个这样的虚拟机。
注意:如果宿主机性能有限,可以考虑先只部署Master节点,Worker节点后续按需添加。磁盘一定要选择"单个文件"存储模式,能显著提升虚拟机IO性能。
1.2 软件版本选择
版本兼容性是容器化部署中最容易踩坑的地方。经过多次测试验证,我确定以下版本组合最为稳定:
- Ubuntu Server:24.04 LTS(内核6.14.0-29-generic)
- 容器运行时:containerd v2.2.1
- Kubernetes:v1.35.0
- CNI插件:Cilium v1.18.5
特别提醒:Ubuntu一定要选择服务器版(live-server),桌面版会携带大量不必要的组件,既占用资源又可能造成依赖冲突。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 虚拟机创建与系统安装
2.1 ISO镜像获取
推荐使用阿里云镜像站下载,速度稳定且校验完整:
bash复制https://mirrors.aliyun.com/ubuntu-releases/24.04/
选择文件时注意:
- 必须包含
live-server字样 - amd64架构(除非使用Apple Silicon芯片)
- 版本号选择最新的24.04.X(数字越大补丁越新)
2.2 VMware虚拟机配置
创建虚拟机时几个关键设置点:
-
磁盘配置:
- 大小40GB(实际占用约8GB)
- 务必选择"将虚拟磁盘存储为单个文件"
- 磁盘类型SCSI(兼容性最好)
-
硬件分配:
markdown复制- CPU:2核(开启虚拟化VT-x/AMD-V) - 内存:4096MB(必须≥2048MB) - 网络适配器:NAT模式(默认) -
高级设置:
- 固件类型:UEFI(新硬件兼容性好)
- 虚拟化引擎:勾选"虚拟化Intel VT-x/EPT"
实测发现:如果后续要使用KubeVirt等虚拟化方案,必须在创建虚拟机时就开启嵌套虚拟化支持,否则后期无法添加。
2.3 Ubuntu系统安装
安装过程中的几个关键步骤:
2.3.1 静态IP配置
这是最易出错的环节,需要特别注意:
markdown复制1. 选择ens33网卡进入编辑模式
2. IPv4 Method改为Manual
3. 填写参数:
- Subnet: 192.168.18.0/24
- Address: 192.168.18.110(主节点)
- Gateway: 192.168.18.2
- DNS: 114.114.114.114,8.8.8.8
验证方法:安装完成后执行ip a,应看到类似输出:
code复制2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.18.110/24 brd 192.168.18.255 scope global ens33
2.3.2 系统基础配置
- 主机名:务必按角色命名(master/node1/node2)
- 用户名:建议统一使用ubuntu(避免权限混乱)
- SSH服务:必须勾选安装
- LVM:生产环境建议启用,学习环境可禁用简化管理
2.3.3 软件源配置
选择阿里云源能显著提升安装速度:
code复制https://mirrors.aliyun.com/ubuntu/
安装完成后建议立即更新:
bash复制sudo apt update && sudo apt upgrade -y
3. 系统调优与内核升级
3.1 内核版本管理
Kubernetes对内核版本有特定要求,我们需要升级到6.14.0-29-generic:
-
检查当前内核:
bash复制uname -r -
搜索可用内核:
bash复制
apt search linux-image-6.14.0-29-generic -
安装内核及头文件:
bash复制sudo apt install linux-image-6.14.0-29-generic \ linux-headers-6.14.0-29-generic -
重启验证:
bash复制reboot uname -r # 应显示6.14.0-29-generic
如果官方源没有对应版本,可以手动下载安装:
bash复制wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.14.0/amd64/
sudo dpkg -i *.deb
3.2 系统参数调优
编辑/etc/sysctl.conf添加以下参数:
conf复制net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
fs.inotify.max_user_watches=524288
vm.swappiness=10
应用配置:
bash复制sudo sysctl --system
4. 远程连接配置
4.1 SSH最佳实践
-
禁用root登录(安全考虑):
bash复制sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config -
启用密钥认证:
bash复制mkdir -p ~/.ssh chmod 700 ~/.ssh -
重启SSH服务:
bash复制sudo systemctl restart sshd
4.2 MobaXterm配置技巧
-
会话管理:
- 按节点角色命名会话(如K8s-Master)
- 设置不同标签颜色便于区分
-
自动登录:
- 首次连接后保存密码
- 配置私钥认证更安全
-
实用功能:
- 多标签管理(同时操作多个节点)
- SFTP文件传输(右键会话即可打开)
5. 常见问题排查
5.1 网络连接问题
现象:虚拟机无法ping通外网
排查步骤:
-
检查VMware虚拟网络编辑器:
markdown复制- NAT模式子网IP是否匹配(192.168.18.0) - 网关是否为.2(192.168.18.2) -
验证DNS解析:
bash复制
nslookup mirrors.aliyun.com -
检查路由表:
bash复制
ip route show
5.2 内核版本不符
现象:安装后uname -r显示旧内核
解决方案:
-
检查GRUB启动项:
bash复制sudo grep ^menuentry /boot/grub/grub.cfg -
设置默认启动项:
bash复制sudo grub-set-default 'Ubuntu, with Linux 6.14.0-29-generic' sudo update-grub
5.3 磁盘空间不足
现象:apt报错No space left on device
快速清理:
bash复制sudo journalctl --vacuum-time=3d # 清理日志
sudo apt clean # 清理软件包缓存
6. 后续准备建议
完成基础环境搭建后,建议做好以下准备工作:
-
快照管理:
markdown复制- 在VMware中创建纯净环境快照 - 重要操作前创建增量快照 -
批量操作准备:
bash复制# 安装并行执行工具 sudo apt install pdsh -y -
配置同步脚本:
bash复制# 编写主机名-IP映射脚本 cat <<EOF | sudo tee -a /etc/hosts 192.168.18.110 master 192.168.18.111 node1 192.168.18.112 node2 EOF
经过这些年的实践,我发现环境搭建阶段投入的时间会在后续部署中获得十倍回报。特别是在教学场景中,一个标准化的基础环境能避免80%的奇怪报错。下次我们将进入containerd和Kubernetes的实战安装环节,那才是真正有趣的部分。
