一、说明
windows 11
ubuntu22.04.5
安装5个虚拟机,3个master 2个node
二、安装 Vmware 17(没成功,但你可以成功)
我的电脑配置比较旧,直接提示处理器不支持xsave 无法打开虚拟机的电源,网上方法试过了,不行啊。准备安装vmware12, 多少年的版本啊
1、下载个人使用免费软件
Fusion and Workstation | VMwarehttps://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion自己注册一下,然后继续
搜索一下
选择最新版本
该填的都填上
后面就可以下载了,我不能科学上网,后面下载不动,那得多长时间啊,网上有个人版也可以下载
2、安装VM
这个应该没啥讲究,无脑一路向下 ,大胆的装,在启动的时候选择用于个人用途
三、规划虚拟机需求分析
0、服务器基本要求
- 每个集群节点应该有不同的主机名。
- 所有节点的时间需要同步。
- 建议使用干净的操作系统来创建集群。不要自己装 Docker!
- 支持大多数 Linux 发行版,例如:Ubuntu、Debian、CentOS、Rocky linux。
- 系统内核版本在 5.4 及以上。
- 必须使用 root 用户安装!
推荐使用 Ubuntu 22.04 LTS 操作系统,内核版本在 5.4 及以上,配置如下:
操作系统 内核版本 CPU 内存 存储 Masters Nodes Ubuntu 22.04 LTS ≥ 5.4 8C 16GB 100GB 奇数台 任意 Kubernetes 和 Sealos Cloud 的系统组件在每个 Master 节点上大约需要 2 核心 (2c) 和 2GB 内存 (2g),在每个 Node 节点上则需要大约 1 核心 (1c) 和 1GB 内存 (1g),请确保集群中每个节点都有足够的计算资源以支持系统组件的运行。
- 所有节点之间网络互通;
- 需要在 Kubernetes 集群的第一个 Master 节点上执行脚本,目前集群外的节点不支持集群安装;
- 所有节点之间可以互相通信。
- 需要一个域名用于访问 Sealos 及相关服务;
- 如果您没有域名,可以使用
nip.io
提供的免费域名服务。
Sealos 需要使用证书来保证通信安全,默认在您不提供证书的情况下我们会使用 cert-manager 来自动签发证书
如果您能提供证书,证书需要解析下列域名 (假设您提供的域名为:cloud.example.io):
*.cloud.example.io
cloud.example.io
1、Master 节点需要开放的端口
Master 节点运行控制平面组件(如 API Server、etcd、Controller Manager、Scheduler),需要开放以下端口:
端口 | 协议 | 用途 | 开放范围 |
---|---|---|---|
6443 | TCP | Kubernetes API Server | 对所有 Node 和外部客户端 |
2379-2380 | TCP | etcd 数据库通信 | 仅其他 Master 节点(HA 集群) |
10250 | TCP | Kubelet API(与 Pod/容器通信) | 集群内所有节点 |
10259 | TCP | kube-scheduler 的 HTTPS 端口 | 集群内部通信 |
10257 | TCP | kube-controller-manager 的 HTTPS 端口 | 集群内部通信 |
2、Node(Worker)节点需要开放的端口
Node 节点运行工作负载(Pod),需要开放以下端口:
端口 | 协议 | 用途 | 开放范围 |
---|---|---|---|
10250 | TCP | Kubelet API(与 Master 通信) | 集群内所有节点 |
30000-32767 | TCP | NodePort 服务的外部访问 | 对外部客户端开放 |
8472 | UDP | Flannel CNI 的 VXLAN 隧道 | 所有节点间(按 CNI 需求) |
179 | TCP | Calico CNI 的 BGP 协议 | 所有节点间(按 CNI 需求) |
3、所有节点(Master + Node)都需要开放的端口
某些端口在集群中所有节点间需要互通:
端口 | 协议 | 用途 |
---|---|---|
22 | TCP | SSH 管理访问 |
ICMP | – | 节点间网络连通性检查(ping) |
4、 操作建议
-
仅开放必要的端口,避免安全隐患。
-
例如
2379-2380
(etcd)仅在多 Master 集群中开放给其他 Master 节点。
5、分析表格
服务器名称 | ip | 开放端口 | 说明 |
---|---|---|---|
base | 192.168.1.100 | 22,ICMP,10250 | 这是一个基本虚拟机,平时不用,用来克隆其他master和node1,所以安装基本配置,开放基本端口 |
master1 | 192.168.1.101 | 6443 2379-2380 10259 10257 | 通过base克隆 |
master2 | 192.168.1.102 | 6443 2379-2380 10259 10257 | 通过master1克隆 |
master3 | 192.168.1.103 | 6443 2379-2380 10259 10257 | 通过master1克隆 |
node1 | 192.168.1.111 | 30000-32767 8472 179 | 通过base克隆 |
node2 | 192.168.1.112 | 30000-32767 8472 179 | 通过node1克隆 |
三、安装Base虚拟机
1、新建虚拟机
打开VMware Workstation,点击 “创建新的虚拟机”。
选择 “典型” 安装模式,点击下一步,
选择安装来源,点击 “安装程序光盘映像文件(iso)”,浏览并选择下载好的Ubuntu 22.04 LTS镜像(如
ubuntu-22.04.4-live-server-amd64.iso
)。
2、配置虚拟机参数
设置用户名和密码
输入虚拟机名称(如
Ubuntu-Node1
)。
指定磁盘容量:
建议分配 60GB,选择 “将虚拟磁盘拆分成多个文件”(便于迁移)。
下一步
自定义硬件配置
点击 “自定义硬件”,调整以下参数:
内存:分配3GB(根据宿主机总内存调整)。
处理器:分配处理器数量1,内核数量为6。
网络适配器:选择 桥接模式(虚拟机直接使用物理网络)或 NAT模式(虚拟机共享宿主机IP)。我们选桥接模式,
点击关闭后完成配置。
3、安装Ubuntu 22.04系统
启动安装向导
启动虚拟机,自动加载Ubuntu安装界面。
选择语言为 English(推荐,避免编码问题),回车继续
系统配置
网络配置(关键步骤):
安装程序会自动检测网络连接(需宿主机已联网)。
如果使用DHCP(动态IP),直接按回车跳过。
如需静态IP(推荐用于集群部署):
选择当前网络接口(如
ens33
),按回车进入配置。关闭IPv4的 “Automatic”,手动输入以下信息:
Subnet(子网):
192.168.1.0/24
(根据实际网络环境调整)Address(IP地址):
192.168.1.200
(依次为10~13分配给4台虚拟机)Gateway(网关):
192.168.1.1
(通常为路由器IP)Name servers(DNS):
8.8.8.8,8.8.4.4
保存配置并返回。
存储配置
选择磁盘(默认
Use an entire disk
),按回车确认。并把free 部分设置为home确认分区方案(默认即可),选择 Done 并提交更改。
用户名和密码
用户名的都为sealos,由于要克隆,所以每个都一样
服务器名为node1,node2,master1,master2.,master3,base
密码为123456
SSH配置
勾选 “Install OpenSSH server”(允许远程SSH连接)。
完成安装
- 等待系统安装完成,重启虚拟机
4、开启root用户登陆
设置root用户密码:
sudo passwd root修改profile文件
sudo apt install vimsudo vim /root/.profile
注释掉: mesg n 2> /dev/null || true
添加: tty -s && mesg n || true\修改SSH配置文件
sudo vim /etc/ssh/sshd_config找到 #PermitRootLogin prohibit-password
改为 PermitRootLogin yessudo systemctl restart ssh重启
sudo reboot启动直接root登录
5、初始化环境
# 定期检查并应用系统和应用程序的安全补丁。Ubuntu会定期发布安全更新。确保你的系统是最新的。
apt update && apt upgrade && apt dist-upgrade && apt autoremove && apt clean && reboot
# 安装一些常用的工具和库,这些工具可以帮助你更高效地工作apt install git curl wget htopapt install iputils-pingapt-get install openvswitch-switch
# 修改时区cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改linux参数vim /etc/security/limits.conf
#后面添加
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536含义如下:
soft nproc: 可打开的文件描述符的最大数(软限制)
hard nproc: 可打开的文件描述符的最大数(硬限制)
soft nofile:单个用户可用的最大进程数量(软限制)
hard nofile:单个用户可用的最大进程数量(硬限制)
6、配置网络
前面安装时已经配置了,这里是对的
node1---------192.168.1.101
要修改ip,必须
#如果没这个问题直接创建,在后面network: {config: disabled}
vim /etc/netplan/50-cloud-init.yaml
network:
ethernets:
ens33:
addresses:
- 192.168.1.101/24
nameservers:
addresses:
- 8.8.8.8
- 8.8.8.4
search: []
routes:
- to: default
via: 192.168.1.1
version: 2#如果修改了执行下面命令
netplan apply
7、验证网络
ping baidu.com
# 如果安装了其它虚拟机,也要ping
ping 192.168.1.102
8、更新etc/hosts文件
更新所有节点的/etc/hosts文件,添加IP与主机名映射:echo "192.168.1.111 node1" | tee -a /etc/hosts
echo "192.168.1.112 node2" | tee -a /etc/hosts
echo "192.168.1.101 master1" | tee -a /etc/hosts
echo "192.168.1.102 master2" | tee -a /etc/hosts
echo "192.168.1.102 master3" | tee -a /etc/hosts
9、开放端口
前面分析表格确定需要开放22,ICMP,10250三个端口
apt-get install ufw -yufw enableufw statusufw allow 22/tcp # SSH
ufw allow 10250/tcp ## 允许 Master 访问 Node 的 Kubelet
10、时间同步
apt update
apt install chronyvim /etc/chrony/chrony.conf
添加
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
server ntp4.aliyun.com iburst# 重启并查看同步状态
systemctl status chrony
systemctl start chrony
systemctl enable chrony
systemctl restart chrony
四、安装master虚拟机
1、关闭模板虚拟机:
shutdown now
2、克隆虚拟机
右键模板虚拟机,选择 “管理” > “克隆”。
选择 “创建完整克隆”,命名新虚拟机(如
Ubuntu-Master1
)。以
Ubuntu-Master1为模板
重复此步骤生成剩余Ubuntu-Master2和Ubuntu-Master3 两
台虚拟机。
3、修改mac
双击
克隆后mac地址相同,同时启动会冲突,请一定要改
4、修改克隆机的静态IP和主机名
启动克隆后的虚拟机,编辑网络配置文件(vim /etc/netplan/50-cloud-init.yaml),修改IP地址(如
192.168.1.102,192.168.1.103,192.168.1.104
)按前面规划的来。然后netplan apply修改主机名:
hostnamectl set-hostname master1 # 依次改为master2~3
5、开放master端口
6443
2379-2380
10259
10257ufw allow 6443/tcp # 允许 kubectl 和其他节点访问 API Server
ufw allow 2379:2380/tcp # 仅多 Master 高可用集群需要
# ufw allow 10250/tcp # 允许节点与 Master 的 Kubelet 通信
ufw allow 10259/tcp # 调度器通信(按需开放)
ufw allow 10257/tcp # 控制器管理器通信(按需开放)
root@master1:~# ufw status
Status: activeTo Action From
-- ------ ----
22/tcp ALLOW Anywhere
10250/tcp ALLOW Anywhere
6443/tcp ALLOW Anywhere
2379:2380/tcp ALLOW Anywhere
10259/tcp ALLOW Anywhere
10257/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
10250/tcp (v6) ALLOW Anywhere (v6)
6443/tcp (v6) ALLOW Anywhere (v6)
2379:2380/tcp (v6) ALLOW Anywhere (v6)
10259/tcp (v6) ALLOW Anywhere (v6)
10257/tcp (v6) ALLOW Anywhere (v6)
6、再安装两台master虚拟机
这次用master1克隆
- 克隆
- 修改mac ,有时候感觉变了啊,不动,反正我碰到相同的
- 启动
- 修改ip地址:102和103
- 修改主机名:master2和master3
五、安装Node虚拟机
1、关闭Base虚拟机:
shutdown now
2、克隆虚拟机
右键模板虚拟机,选择 “管理” > “克隆”。
选择 “创建完整克隆”,命名新虚拟机(如
Ubuntu-Node1
)。以
Ubuntu-Node1为模板
重复此步骤生成剩余Ubuntu-Node2
虚拟机。
3、修改mac
和前面相同
4、修改克隆机的静态IP和主机名
启动克隆后的虚拟机,编辑网络配置文件(vim /etc/netplan/50-cloud-init.yaml),修改IP地址(如
192.168.1.111,192.168.1.112
)按前面规划的来。然后netplan apply修改主机名:
hostnamectl set-hostname node1 # 依次改为node2
5、开放master端口
30000-32767
8472
179# sudo ufw allow 10250/tcp # 允许 Master 访问 Node 的 Kubelet
ufw allow 30000:32767/tcp # 允许外部访问 NodePort 服务
ufw allow 8472/udp # Flannel VXLAN(按需)
ufw allow 179/tcp # Calico BGP(按需)
6、再安装一台node虚拟机
这次用node1克隆
- 克隆
- 修改mac ,有时候感觉变了啊,不动,反正我碰到相同的
- 启动
- 修改ip地址:112
- 修改主机名:node2
六、配置SSH免密登录
全部虚拟机开机,保证虚拟机互相都能ping通,很重要,要做喔
master1,master2,master3,node1,node2
在master1执行代码
检查一下,其实每个虚拟机都一样,/root/.ssh目录下有一个空文件authorized_keys
root@master1:~# ls -a
. .. .bash_history .bashrc .cache .profile .ssh .viminfo
root@master1:~# cd .ssh
root@master1:~/.ssh# ls
authorized_keys
root@master1:~/.ssh# cat authorized_keys
root@master1:~/.ssh#
SSH免密登录#在master1虚拟机主节点生成密钥并分发到其他节点,在执行代码之前,/root/.ssh/authorized_keys里是空的ssh-keygen -t rsa #一路回车
#master1执行后,有了三个文件,其它虚拟机这时候和他无关
root@master1:~/.ssh# ls
authorized_keys id_rsa id_rsa.pubssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.102
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.103
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.111
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.112#分别执行上面4条命令,分别键入yes和root的登录密码123456,
# 我们这时候去看
# master1
root@master1:~/.ssh# ls
authorized_keys id_rsa id_rsa.pub known_hosts known_hosts.old# master2root@master2:~/.ssh# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCtnMh7FsGEdGTLqRhwbcV5GUnyy7DH3u6cGiOE4wNpvqu0tX6ZDXn/j7MaHfkigPU0a3hOoRhkxjyl/KNXDbxJgrq126al9X1dzQQg1owG3n0BewLcga7uWXNFJSCsMDp1Yl8nxt/uynvBcj0CVz7+nJLET6jojVYk04ti7iJCz6oX9yVs+g7txNrtvtYbI2erl/MLf+/rPIz84h0QmD8xrGGWVvM9AmGRe+22ppTXfhsEBXPzrifogXRkpiFQ5za0GA41SSoRWERrCYqMIBMQLz96y6OCUWWKDOT1OUvrpyCQaz72YH7sIxwIyMZtBWZKlL1Y8MWsrMRAXYiwv6JPgbo8tE1vWVGhrxRK0JeSUPNDCvk70IsKZVpUaJCzPkVxgjFMl7oeEVKjzlGHu7vUk6Js/Uc1vHMEdZtCg+bBe3pV7E9WUusaHootNihvVOjd1tjaUQQF9T20f07Mtqws75GZJEbHlHGV0Ogjcr08t0QdmijzEsx6e4m45poOsgE= root@master1#其它几个都一样,空文件有东西了,这个就是key
master1 测试
ssh root@192.168.1.102
root@master1:~/.ssh# ssh root@192.168.1.102
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-136-generic x86_64)* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/proThis system has been minimized by removing packages and content that are
not required on a system that users do not log into.To restore this content, you can run the 'unminimize' command.
New release '24.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.Last login: Sat Apr 12 20:18:47 2025 from 192.168.1.9
root@master2:~#这里进入了master2的命令行
node1测试连接master1
ssh root@192.168.1.101
不行的
node1测试连接node2
ssh root@192.168.1.112
不行的
只能master1连接其它4个虚拟机,反过来不行,其它互相也不行,这个主要为了在master1中安装集群用的
我们需要在3个master上都是做一遍,要保证3个master之间是免密互通的
所以我们继续在master2和master3上把上面的重新执行一遍