centos虚拟机上用KVM安装coreos虚拟机(V1.0)

1 准备
1.1 节点规划
192.168.0.71  localhost.localdomain  作为coreos虚拟机的宿主机
192.168.0.80  k8s-master0    访问coreos用
192.168.0.91  k8s-node1  安装coreos时作为http服务器用
192.168.0.66  tsung6    coreos节点1
192.168.0.67  tsung7    coreos节点2
192.168.0.68  tsung8    coreos节点3

2 安装kvm(在宿主机上)
2.1 设置VT 
2.1.1 检查Intel VT设置
在vmware设置中将作为宿主机的centos虚拟机的Intel VT或AMD-V功能打勾选中 
检查cpu是否支持vt
用下列指令检查cpu是否支持vt:
cat /proc/cpuinfo|egrep 'vmx|svm'
2.1.2 关闭SElinux
# 将 /etc/sysconfig/selinux 中的SELinux=enforcing修改为 SELinux=disabled  
vi /etc/sysconfig/selinux 
2.2 安装
yum -y install kvm  
#安装kvm核心包——虚拟操作系统模拟器加速模块
yum -y install qemu-kvm qemu-kvm-tools  
#安装kvm管理工具  
yum -y install libvirt python-virtinst libvirt-python virt-manager libguestfs-tools bridge-utils virt-install  
#启动服务
systemctl start libvirtd 
systemctl enable libvirtd 
2.3 检查
lsmod | grep kvm 
brctl show

3 为KVM虚拟机配置桥接网络(在宿主机上)
原网卡为enp7s0
3.1 添加作为桥接的新网卡br0
cd /etc/sysconfig/network-scripts/
vi ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=static
IPADDR="192.168.0.71"
NETMASK=255.255.255.0
GATEWAY="192.168.0.1"
DNS1="218.2.135.1"
DNS2="221.228.225.1"
DEFROUTE=yes
3.2 修改原网卡
vi ifcfg-enp7s0
将原网卡的ip地址屏蔽并增加一个桥接网卡br0
#IPADDR="192.168.0.71"
BRIDGE="br0"
3.3 重启网络服务并查看是否正常
systemctl restart network
ifconfig

4 VNC环境搭建(在宿主机上)
4.1 安装vnc服务
yum -y install tigervnc tigervnc-server  
4.2 vnc服务配置——宿主机远程控制
# 配置vnc  
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service  
# 编辑刚刚复制得到的文件,将文件中的<USER>修改为VNC Client(或者VNC Viewer)连接的账号,我只设置一个用户root,多用户再增加对应的vncserver@:2.service文件即可  
vi /etc/systemd/system/vncserver@:1.service  
# 修改以后的文件部分内容(只修改文件下半部分)  
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=root
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/bin/vncserver -kill :1 > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l root -c "/bin/vncserver :1 "
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/bin/vncserver -kill :1 > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
4.3 启动服务
#设置vnc连接密码
vncpasswd  
# 启动vncserver@:1.service并设置开机启动  
systemctl start vncserver@:1.service  
systemctl enable vncserver@:1.service  
# 设置防火墙(VNC默认是被防火墙阻止的)  
firewall-cmd --permanent --add-service="vnc-server" --zone="public"  
firewall-cmd --reload  
# 启动VNC服务  
vncserver  
4.4 故障排查
# 启动vncserver@:1.service的时候会出现错误  
# 解决办法:删除/tmp/.X11-unix/ 目录,并重新设置一次密码,然后再次启动这个服务即可  
rm -R /tmp/.X11-unix/  
vncpasswd  
systemctl start vncserver@:1.service  
#或者检查配置文件
vi /etc/systemd/system/vncserver@:1.service  
检查里面的/usr/、/home等目录、root、User等设置是否正确
4.5 vnc服务配置——虚拟机远程控制相关的一些说明
上面是VNC连接主机的VNC服务时设置的情况,如果是要远程连接主机安装虚拟机,可以不进行上面的设置,安装虚拟机的时候用主机ip,端口号5900(默认,可以进行设置,后面会说到),有权限的账号密码都可以连接。
这里也有一个坑:5900是VNC里面远程连接虚拟机用的端口(安装和安装好以后都用这个端口),能远程操作安装过程;5901,5902等端口是VNC中设置的远程连接主机的端口号,这里要做好区分。
还有一种用virt-manager虚拟机图形管理的方式安装虚拟机,这里有个前提,主机必须安装好GNOME等桌面环境,CentOS中安装有点复杂,很难安装成功(踩过的第一个坑),个人觉得还是用VNC的方式安装比较好,服务器安装桌面环境多少有点累赘。

5 创建虚拟机配置文件(在宿主机上)
这一步操作需要注意的几个点:a、局域网内与主机传输文件用scp或ftp命令,要保证ISO镜像文件在主机上有操作权限的目录下,比如 /home等;b、不管安装什么系统的虚拟机,创建的磁盘类型,分配的虚拟内存等参数可能有所不同,但有几个参数必须要正确对应,否则安装不成功。需要注意的几个参数:–disk,–cdrom或者–location,–cpu(这个必须和主机的cpu型号一直),–network(首先要确定需要安装虚拟机网络的类型,是Bridge模式还是NAT模式),–graphics和–os-type
5.1 创建新的存储池
mkdir -p /var/kvm/images 
虚拟机的映像默认放置在/var/lib/libvirt/images作为存储池
或者:
qemu-img create -f raw /opt/kvm.raw 30G  
# 检查磁盘是否创建成功  
qemu-img info /opt/kvm.raw  
5.2 创建两个xml文件
coreos-install.xml    安装期间用,cdrom启动
coreos-run.xml        安装后用,硬盘启动
vi coreos-install.xml
<domain type='kvm'>
        <name>coreos</name>
        <memory>2048576</memory>
        <currentMemory>2048576</currentMemory>
        <vcpu>1</vcpu>
        <os>
          <type arch='x86_64' machine='pc'>hvm</type>
          <boot dev='cdrom'/>
       </os>
       <features>
         <acpi/>
         <apic/>
         <pae/>
       </features>
       <clock offset='localtime'/>
       <on_poweroff>destroy</on_poweroff>
       <on_reboot>restart</on_reboot>
       <on_crash>destroy</on_crash>
       <devices>
         <emulator>/usr/libexec/qemu-kvm</emulator>
         <disk type='file' device='disk'>
          <driver name='qemu' type='raw'/>
           <source file='/opt/kvm.raw'/>
           <target dev='hda' bus='ide'/>
         </disk>
         <disk type='file' device='cdrom'>
           <source file='/home/iso/coreos_production_iso_image.iso'/>
           <target dev='hdb' bus='ide'/>
         </disk>
        <interface type='bridge'>
          <source bridge='br0'/>
          <mac address="00:16:3e:5d:aa:a8"/>
        </interface>
        <input type='mouse' bus='ps2'/>
         <graphics type='vnc' port='5901' autoport='no' listen = '0.0.0.0' keymap='en-us'/>
       </devices>
     </domain>           
coreos-run.xml和coreos-install.xml的差别就在于第8行:
          <boot dev='hd'/>
          
6 下载coreos安装文件
6.1 在宿主机上(192.168.0.71)
mkdir /home/iso && cd /home/iso
wget https://stable.release.core-os.net/amd64-usr/current/coreos_production_iso_image.iso
6.2 访问coreos的主机上(192.168.0.80  k8s-master0)
mkdir /root/coreos && cd /root/coreos/
ssh-keygen -t rsa -f coreos -N ""
cat coreos.pub
将文件中的公钥密码复制粘贴进下一节提到的配置文件
6.3 http服务器上(192.168.0.91  k8s-node1)
yum install -y httpd
systemctl start httpd
cd /var/www/html    
查看当前coreos稳定版本号:
https://stable.release.core-os.net/amd64-usr/current/version.txt
可以看到当前稳定版为 2079.3.0
mkdir 2079.3.0
cd 2079.3.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
yum install git make
cd ~
git clone https://github.com/coreos/container-linux-config-transpiler.git
cd container-linux-config-transpiler
make
cd bin
6.4 编辑coreos虚拟机配置文件(在http服务器上192.168.0.91  k8s-node1)
编写Container Linux Configs文件(参考https://coreos.com/os/docs/2079.3.0/clc-examples.html)
vi tsung6.yaml
编辑配置tsung6.yaml文件时,要将上一节中的ssh公钥粘贴进去,设置好基本参数。
将tsung6.yaml复制为tsung7.yaml和tsung8.yaml,每个文件修改其中的主机名和IP,共2处。注意若网卡名称需要参考后面的步骤检查修改,否则会出错。
将yaml格式转换成json格式:
./ct < tsung6.yaml --files-dir /etc > /var/www/html/tsung6.json
–files-dir /root是告诉脚本到/root下查找hosts文件
6.5 启动虚拟机(在宿主机上192.168.0.71)
virsh define coreos-install.xml
virsh start coreos
6.6 打开VNC连接
Windows上RealVNC或TigerVNC连接
192.168.0.71:5901
6.7 在VNC窗口中进入coreos系统
ip a 
先查看网卡名称,然后检查修改http服务器192.168.0.91上tsung6.yaml中的涉及网卡名称的部分。
sudo su - root
wget http://192.168.0.91/tsung6.json
coreos-install -d /dev/sda -i tsung6.json -b http://192.168.0.91
当出现Success!。。。界面时,不要在coreos中reboot,切换到宿主机。
6.8 在宿主机中关闭并重新配置coreos虚拟机
virsh destroy coreos
virsh undefine coreos
virsh define coreos-run.xml
virsh start coreos
6.9 登录coreos(在访问coreos的主机上192.168.0.80  k8s-master0)
cd /root/coreos/
ssh -i coreos core@192.168.0.66

7 安装下一个coreos虚拟机
从6.4节开始顺序执行至6.9
过程中要注意修改以下文件:
tsung6.yaml-->tsung7.yaml,其中的ip地址、主机名称、网卡名称
./ct < tsung7.yaml --files-dir /etc > /var/www/html/tsung7.json
coreos-install.xml-->coreos-install2.xml,其中的镜像磁盘文件名/opt/kvm.raw-->/opt/kvm2.raw
其中vnc的设置'5901'-->'5902'
复制镜像磁盘  cp /opt/kvm.raw /opt/kvm2.raw
coreos-run.xml-->coreos-run2.xml,其中的镜像磁盘文件名/opt/kvm.raw-->/opt/kvm2.raw
ssh -i coreos core@192.168.0.67
 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐