win11 hyper-v 搭建集群虚拟机(用于k8s)
ubuntu22.04 下载地址
1. window11
2. 配置3台ubuntu22.04虚拟机
效果如下:
一、开启hyper-v虚拟化
百度即可,可以参考文档前两节
二、第一种:使用hyper-v安装虚拟机
-
win11 搜索按钮搜索
hyper-v
打开 hyper-v管理器
-
设置虚拟机存储地址(选做)
-
开始创建虚拟机
3.1 选择快速创建,使用win11自带的源安装即可,安装的是桌面版的Ubuntu22.04
先点击本地安装源
,关闭此虚拟机将运行Windows
3.2 然后按下图安装即可
3.3 等待下载安装即可(搭建多个节点时,同个系统win11仅会下载一次)
3.4 点击 连接
3.5 点击 启动
3.6 等待创建
3.7 等待创建设置一些简单设置(一路 回车
即可)
3.8 设置账户密码
3.9 连接进入虚拟机
全部skip即可
不要升级系统
3.10 安装完成
- 安装一些必要的包
4.1 安装 net-tools 工具
sudo apt install net-tools
4.2 安装 openssh-server,为了后续可以使用ssh连接该机器
# 安装 OpenSSH 服务器
sudo apt update
sudo apt install openssh-server -y# 启动 SSH 服务
sudo systemctl start ssh# 设置开机自启
sudo systemctl enable ssh# 检查服务状态
sudo systemctl status ssh# 确认 22 端口正在监听
sudo ss -tlnp | grep :22
- 查看一下ip与是否可以连接外网
ifconfig
ping www.baidu.com
- 关闭自动升级
sudo systemctl disable --now unattended-upgrades apt-daily.timer apt-daily-upgrade.timer
# 注意:需要等待一段时间
如果命令卡住
,令启一个终端输入 ps -ef | grep unattended
,杀死下图的进程,上述命令自动完成退出
- 关闭防火墙
sudo systemctl stop ufw
sudo systemctl stop firewalld
三、配置网卡(集群内部网卡固定ip + 外部联网网卡)
参考:hyper-v ubuntu22.04指定静态ip地址
虚拟机每次重新启动,都会动态分配IP,这导致我们无法使用一个固定的ip连接到虚拟机内部。解决该问题的最直接有效的办法就是给虚拟机绑定2张网卡,一张用于连接外网、一张用于连接内网。
-
win11
powershell
ping一下虚拟机是否ping通
powershell
使用 ipconfig 查看一下网络设备
-
将虚拟机全部关机
-
需要在 hyper-v 中创建
内部网络虚拟交换机
用于k8s集群内部网络(以下图使用的是网图)
点击hyper-v 管理器右侧虚拟交换机管理器
新建一个内部 虚拟交换机
注意,选内部
将内部虚拟交换机其命名为static
(什么名都行,能找到就成啊),点应用,然后确定
win11 搜索按钮搜索查看网络状态和任务
在static网卡上边,右键
,点属性
在箭头位置点属性(TCP/IPv4)
点击使用下面的IP地址,设置IP地址为:192.168.xxx.xxx
,点一下子网掩码,会自动计算。DNS按图分配即可。点击确定。首选DNS服务器设置成114.114.114.114
进入hyper-v管理器,在目标虚拟机上,点击设置,添加硬件,网络适配器,添加
虚拟交换机这里选static
(刚刚创建的),然后点应用、确定,该交换机是k8s集群内部通信使用,且后续会使用它为每一台节点配置固定ip
此时硬件这里有了两块网卡,Default Switch
和 static
,Default 用于连接外网
,static用于虚拟机之间通信,或SSH远程连接
等。别急,还需要配置一下才能生效
- 重新启动虚拟机配置固定ip
在虚拟机中使用ifconfig
查看一下虚拟机当前网卡的信息
配置固定ip
# 1. 进入 /etc/netplan/
cd /etc/netplan/
ll
该文件原来的内容
将里面的内容注释后,加入以下内容
dhcp4 设置为 false
addresses 设置为192.168.66.xxx/24,这个xxx只要在[1,255)之间,且跟您在控制面板中,对static网卡设置的ip不一样即可;控制面板中对static网卡设置的ip会作为路由;至于为什么后边有/24,大家自行科普一下计算机网络内容,如网段的定义等。
eth0
就是第一块网卡
,我们追加的网卡命名为eth1
(0的基础上加1),代表第二块网卡
nameservers这一组对应的是dns的地址,可以不设置
# This is the network config written by 'subiquity'
network:ethernets:eth0:dhcp4: trueeth1:dhcp4: false # 关闭自动回去ipaddresses:- 192.168.66.100/24 # 你需要设置的固定ipnameservers:addresses: [114.114.114.114]version: 2
启动 systemd-networkd
服务,然后运行 sudo netplan apply
使配置生效
# 1. 启动 systemd-networkd
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
# 运行 `sudo netplan apply` 使配置生效
sudo netplan apply
使用 ifconfig 查看网卡信息如下
使 DNS 生效,cat /etc/resolv.conf
查看现在的 DNS
使用 ll /etc/resolv.conf
查看一下文件详情
删除旧 /etc/resolv.conf 文件,新建新的 /etc/resolv.conf 文件超链接,使得上文DNS生效
sudo rm -rf /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
再次 cat /etc/resolv.conf 文件,下面便是配置成功的效果,以后使用上文的方式更改ip,都需要执行这个过程
- win11 使用
powershell
使用ssh连接虚拟机,外部网卡ip与内部虚拟机固定ip均可以连接虚拟机
需要注意:外部网卡ip每次重启可能会变动,所以建议使用内部虚拟机固定ip链接ssh
自此,单个节点配置完成,重复上述步骤,三台机器 ip依次配置为 192.168.66.100、192.168.66.101、192.168.66.102 (内部通信固定ip)
四、参考文章
hyper-v ubuntu 3节点 k8s集群搭建
hyper-v ubuntu2204指定静态ip地址