记录了PVE使用中遇到的一些问题,通过命令查询关闭虚拟机的方法、单IP下虚拟机的外网访问(NAT)、域名无法解析(DNS设置)以及宿主机与虚拟机互相访问。
pvesh
命令查看、设置虚拟机
使用PVE的web界面管理系统虽然极为方便的,但当web端操作无效、或者web无法进入的时候(对于单一IP的PVE主机,如果把主机IP给了其中的虚拟机则无法从Web以及ssh访问PVE)pvesh
就是一个很有用的管理工具。使用ssh连接PVE主机(如上文遇到的问题ssh不可用,则需要使用显示器、键盘直接连接主机)进入后台,使用pvesh
进行资源、虚拟机状况查询,虚拟机开关及迁移。
- 查询集群资源
pvesh get /cluster/resources
# 返回一个含有资源的id、类型及CPU、磁盘等硬件信息表格(下表信息有省略)
# ┌──────────────────────────┬─────────┬───┬───────────┐
# │ id │ type │...│ mem │
# ╞══════════════════════════╪═════════╪═══╪═══════════╡
# │ lxc/101 │ lxc │...│ 0.00 B │
# ├──────────────────────────┼─────────┼───┼───────────┤
# │ node/tpve │ node │...│ 2.86 GiB │
# ├──────────────────────────┼─────────┼───┼───────────┤
# │ qemu/100 │ qemu │...│ 1.25 GiB │
# ├──────────────────────────┼─────────┼───┼───────────┤
# │ storage/tpve/local │ storage │...│ │
# ├──────────────────────────┼─────────┼───┼───────────┤
# │ storage/tpve/local-lvm │ storage │...│ │
# └──────────────────────────┴─────────┴───┴───────────┘
- 查看当前虚拟机状态
# pvesh get /nodes/节点名/类型/虚拟机id/status/current
# 如查看id为101的lxc容器的当前状态
pvesh get /nodes/tpve/lxc/101/status/current
- 启动停止虚拟机
# pvesh create /nodes/节点名/类型/虚拟机id/status/
# [start|stop|shutdown|reboot]
# 停止id为100的虚拟机
pvesh creat /nodes/tpve/qemu/100/status/stop
单一IP下虚拟机外网访问(NAT设置)
这里有一篇文章对此介绍非常清楚,但是经过我的测试,在PVE6.2下,两种方法都可以即时生效并不需要重启PVE系统,如我的确是如此的话,第一种方法我认为更好一些,所有配置都在一个文件内便于管理,由于第二种方案需要iptables-persistent来帮助持久保持iptables的设置才行,如仅使用iptables,用于临时转发比较合适。
无法解析域名(DNS设置)
静态IP的虚拟机可以使用IP访问其他公网设备,然而无法通过域名访问,提示域名无法解析。这种情况是由系统DNS设置 不当造成的。查询资料找到的几种方法都不能成功解决问题,在/etc/resolv.conf
中指定DNS的服务器可以暂时解决但不能保持,而且该文件中也说明了这个文件是123456自动生成的不需修改。按照静态IP设置这个思路查找解决方法,最终发现在可以修改/etc/netplan/00-installer-config.yaml
来设置IP及DNS。完美解决,此方法在Ubuntu 18之后应该都是适用的。
该文件内容如下:
# This is the network config written by 'subiquity'
network:
ethernets:
ens18: # 网卡名称
addresses:
- 192.168.200.8/24 #IP地址
gateway4: 192.168.200.1 # 网关
nameservers:
addresses:
- 8.8.8.8 # DNS服务器
version: 2
文件编辑保存后使用sudo netplan apply
即可应用改动。
4.虚拟机与宿主机互相访问
要实现宿主机与虚拟机的互相访问,应该有很多方法,我是虚拟局域网的形式实现的。
如下图,虚拟网桥vmbr0桥接到网卡enp3s0上,另外有一个IP为192.168.200.1的虚拟网桥vmbr1,虚拟机连接到这个网桥上,再创建一个vmbr0的VLAN指定一个与vmbr1在同一网段的IP(192.168.200.100),这样就可以实现宿主机与虚拟机的互相访问(需要重启PVE)。
另外在
/etc/network/interfaces
中添加以下语句实现,与上面操作效果相同(也需要重启PVE):
auto vmbr0.1
iface vmbr0.1 inet static
address 192.168.200.100/24
参考资料
1.教你在PVE下用命令行查看虚拟机运行状态、启动虚拟机和停止虚拟机 - GXNAS博客
2.单ip下安装Proxmox VE 并且设置Nat端口转发 - Sandy’Blog
3.Ubuntu 18.04 Server 设置静态IP - 简玄冰 - 博客园
4.Network Configuration - Proxmox VE