内网esxi主机上安装CoreOS虚拟机

本文详细介绍如何在ESXi主机上安装和配置CoreOS虚拟机,包括下载镜像、网络配置、使用cloud-config进行初始化设置及通过HTTP服务器安装等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CoreOS是一个为专门运行容器而设计的轻量级linux发行版,旨在通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。它没有包管理工具,运行容器化应用以提供服务;默认双系统分区,可自动升级内核;用systemd管理系统和服务。包含最强组件etcd,提供统一的全局数据集并实现服务发现功能.
RedHat收购CoreOS后,将其改名为Container Linux by CoreOS,融合其Tectonic(企业级kubernets),提供大规模容器编排管理方案。

下面尝试内网esxi主机上安装CoreOS虚拟机:CoreOS installed on disk
它的硬盘安装同其它linux发行版完全不同,详叙如下:

#下载镜像
https://stable.release.core-os.net/amd64-usr/current/coreos_production_iso_image.iso

#新建vm(至少2G内存,10G硬盘)从cdrom启动
默认以core用户自动登录

#切换到root账号
sudo su - root

网络配置
cd /etc/systemd/network/
vi static.network
[Match]
Name=ens192

[Network]
Address=172.16.7.58/24
Gateway=172.16.7.254
DNS=172.16.7.10

systemctl restart systemd-networkd

passwd core
#修改完密码后即可用xshell登录了

#查看各版本
rkt version
docker -v
uname -r 
cat /etc/motd

#切换到另一台VM上,同网段172.16.7.70搭建http服务centos7:yum install -y httpd && sytemctl start httpd
cd /var/www/html
mkdir 1855.4.0
cd 1855.4.0
wget https://stable.release.core-os.net/amd64-usr/current/coreos_production_image.bin.bz2
wget https://stable.release.core-os.net/amd64-usr/current/coreos_production_image.bin.bz2.sig
wget https://stable.release.core-os.net/amd64-usr/current/version.txt

#回到CoreOS的vm上开始安装,直接在根目录编辑初始化文件
vi init.ymal

#cloud-config
hostname: coreos01
coreos:
  units:
    - name: static.network
      content: |
        [Match]
        Name=ens192

        [Network]
        Address=172.16.7.58/24
        Gateway=172.16.7.254
        DNS=172.16.7.10
        
users:
  - name: core
    passwd: 7mKFO.0Lp2JTI(在另一台linux上生成openssl passwd回车,输入你要设置的密码,再次输入后回车即生成)
  - groups:
    - sudo
    - docker

coreos-install -d /dev/sda -c init.ymal -b http://172.16.7.70

提示localhost ~ # coreos-install -d /dev/sda -c init.ymal -b http://172.16.7.70
2018/10/18 08:02:03 Checking availability of "local-file"
2018/10/18 08:02:03 Fetching user-data from datasource of type "local-file"
/usr/bin/coreos-install: Image URL unavailable: http://172.16.7.70/1855.4.0/coreos_production_image.bin.bz2
Error: return code 1 from exit 1
#所以http服务器的网站根目录需要建目录1855.4.0,并将之前下载的三个文件都移动到该目录

localhost ~ # coreos-install -d /dev/sda -c init.ymal -b http://172.16.7.70
2018/10/18 08:03:07 Checking availability of "local-file"
2018/10/18 08:03:07 Fetching user-data from datasource of type "local-file"
Downloading the signature for http://172.16.7.70/1855.4.0/coreos_production_image.bin.bz2...
2018-10-18 08:03:08 URL:http://172.16.7.70/1855.4.0/coreos_production_image.bin.bz2.sig [566/566] -> "/tmp/coreos-install.xk2czEpzzX/coreos_production_image.bin.bz2.sig" [1]
Downloading, writing and verifying coreos_production_image.bin.bz2...
2018-10-18 08:05:46 URL:http://172.16.7.70/1855.4.0/coreos_production_image.bin.bz2 [389058368/389058368] -> "-" [1]
gpg: Signature made Tue Sep 11 00:12:07 2018 UTC
gpg:                using RSA key 4D7241B14AA47290515D6A8D7FB32ABC0638EB2F
gpg: key 50E0885593D2DCB4 marked as ultimately trusted
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Good signature from "CoreOS Buildbot (Offical Builds) <buildbot@coreos.com>" [ultimate]
Installing cloud-config...
Success! CoreOS Container Linux stable 1855.4.0 is installed on /dev/sda
#看到提示成功安装即OK了,enjoy it!

重启系统后,输入core和你设置的密码即可登录,当然建议还是用key比较安全,init.ymal设置如下

users:
  - name: core
    ssh-authorized-keys:
      - ssh-rsa #你的ssh-rsa秘钥
  - groups:
      - sudo
      - docker

当然也可以直接下载官方的OVA模板(推荐,以上适合裸机安装,在esxi上需要集成vmtools,而ova上集成好了,方便快捷)
https://stable.release.core-os.net/amd64-usr/current/coreos_production_vmware_ova.ova
然后再vmware导入OVF模板即可
只是不知道默认账号core的密码,所以在启动的时候BootLoader界面按e
在最后一行 添加coreos.autologin,按F10启动即可
随后sudo su root,设置ip,修改core的密码,之后就可用xshell登录了

转载于:https://my.oschina.net/u/2404183/blog/2249149

<think>嗯,用户问的是在ESXi安装KVM后,虚拟机的网络无法连接到宿主机之外。这个问题看起来有点复杂,因为ESXi本身是一个裸机虚拟机监控器,而KVM通常是在Linux内核中运行的虚拟化技术。可能用户是在ESXi虚拟机安装了一个Linux系统,然后在这个Linux系统里使用KVM来创建嵌套虚拟机,但遇到了网络问题。 首先,我需要确认用户的具体环境。ESXi作为宿主机,上面运行了一个Linux虚拟机,这个Linux系统里启用了KVM,然后在KVM里又运行了另一个虚拟机。这时候,内层的虚拟机网络可能无法访问外部网络,或者无法与宿主机通信。常见的原因可能包括网络配置错误、ESXi的虚拟交换机设置、防火墙规则,或者嵌套虚拟化的支持问题。 接下来,我应该考虑可能的解决步骤。首先检查ESXi的网络配置是否正确,确保虚拟交换机或端口组允许混杂模式,因为嵌套虚拟化可能需要这个。然后检查Linux虚拟机中的网络设置,比如桥接模式还是NAT模式,确保KVM虚拟机的网络配置正确。另外,ESXi的防火墙设置可能会阻止某些流量,需要检查是否允许相关端口。还有,可能需要确认ESXi主机的CPU是否支持虚拟化,并且在BIOS中启用了相关选项,同时在ESXi虚拟机设置中启用了硬件虚拟化支持。 另外,用户可能需要检查Linux系统内的网络桥接是否正确配置,比如使用virbr0或者自定义的桥接设备。如果使用的是NAT模式,可能需要检查iptables规则是否有问题。还有,SELinux或AppArmor的安全策略是否阻止了网络访问。另外,查看KVM虚拟机的XML配置文件,确认网络接口是否正确指向了宿主机的桥接接口。 可能还需要考虑路由问题,比如内层虚拟机的默认网关是否正确,子网掩码是否正确,以及ESXi主机本身的路由表是否有问题。此外,检查虚拟机的MAC地址是否冲突,或者是否有防火墙规则在Linux主机ESXi层阻止了流量。 总结一下,可能的解决步骤包括: 1. 检查ESXi的虚拟交换机设置,启用混杂模式。 2. 确保在ESXi虚拟机设置中启用了CPU的虚拟化支持(VT-x/AMD-V)。 3. 检查Linux虚拟机的网络配置,确保桥接模式正确,或者NAT配置正确。 4. 检查Linux系统的防火墙(如iptables、nftables、firewalld)是否有规则阻止流量。 5. 查看KVM虚拟机的网络接口配置是否正确,比如使用正确的桥接设备。 6. 检查路由表和网关设置是否正确。 7. 查看日志文件,如/var/log/libvirt/*.log或dmesg输出,寻找错误信息。 用户可能还需要确认嵌套虚拟化是否正确配置,比如在ESXi中是否启用了EPT优化或其他相关设置。此外,确保所有相关的软件包(如qemu-kvm、libvirt)已正确安装并配置。 最后,可能需要提醒用户测试不同的网络模式,比如将KVM虚拟机设置为桥接模式,直接连接到物理网络,或者使用NAT模式,确保端口转发正确。同时,考虑ESXi主机的防火墙是否允许内部流量通过,可能需要临时关闭防火墙进行测试。</think>在ESXi安装KVM并遇到虚拟机网络无法出宿主机的问题,通常涉及以下原因及解决方法: --- ### 1. **嵌套虚拟化配置问题** - **检查ESXi的CPU虚拟化支持**: 确保ESXi主机的BIOS/UEFI中启用了虚拟化技术(Intel VT-x或AMD-V),并在ESXi虚拟机设置中勾选了 **"启用虚拟化引擎"**(如启用EPT优化、暴露硬件辅助虚拟化等)。 - **验证Linux虚拟机内的KVM支持**: 在Linux虚拟机中运行 `kvm-ok` 命令,确认KVM是否可用。若提示 `KVM acceleration can be used` 则正常。 --- ### 2. **网络模式配置错误** - **桥接模式(Bridged)**: 确保KVM虚拟机的网络接口绑定到Linux主机的物理网卡(如 `eth0`)或桥接设备(如 `br0`)。可通过修改KVM虚拟机的XML配置文件实现: ```xml <interface type='bridge'> <source bridge='br0'/> </interface> ``` - **NAT模式**: 检查Linux主机的 `virbr0`(默认NAT桥)是否正常运行,使用 `systemctl restart libvirtd` 重启服务。确保iptables规则允许流量: ```bash iptables -L -n -v | grep :53 ``` --- ### 3. **ESXi虚拟交换机限制** - **启用混杂模式(Promiscuous Mode)**: 登录ESXi Web界面,进入 **网络 -> 虚拟交换机**,编辑对应端口组的策略,将 **混杂模式** 设置为 **接受**。 - **检查VLAN配置**: 若ESXi虚拟交换机配置了VLAN ID,需确保Linux虚拟机和KVM虚拟机的VLAN设置一致。 --- ### 4. **防火墙或路由问题** - **Linux主机防火墙**: 临时关闭防火墙测试(如 `systemctl stop firewalld` 或 `ufw disable`),确认是否因规则拦截导致网络不通。 - **路由表检查**: 在KVM虚拟机内运行 `ip route`,确保默认网关指向正确的子网(如 `192.168.1.1`)。 --- ### 5. **日志排查** - 查看KVM日志: Linux主机中运行 `journalctl -u libvirtd` 或检查 `/var/log/libvirt/libvirtd.log`。 - 检查ESXi日志: 通过ESXi Shell运行 `esxcli system syslog config get`,定位日志路径并分析。 --- ### 示例命令 ```bash # 查看KVM虚拟机网络接口状态 virsh domiflist <虚拟机名称> # 检查Linux主机的桥接设备 brctl show # 重启网络服务 systemctl restart NetworkManager ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值