基础-T版-02-镜像制作¶
kvm环境搭建¶
安装KVM相关软件
yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install wget -y
检查kvm内核是否被加载
[root@linux-node1~]# lsmod|grep kvm #查看kvm内核是否被加载
kvm_intel 148081 0
kvm 461126 1 kvm_intel
启动相关服务
systemctl enable libvirtd.service
systemctl start libvirtd.service
检查服务是否启动
systemctl status libvirtd.service
提示:如果你的虚拟机硬盘比较小的话,会影响后面的操作,所以需要添加一块硬盘,如果你的虚拟机硬盘足够大的话,那么此步骤可以略过!进入系统将新添加的硬盘进行格式化
mkfs.xfs -f /dev/sdb
mkdir -p /data
mount /dev/sdb /data/
echo "/dev/sdb /data xfs defaults 0 0" >>/etc/fstab ; cat /etc/fstab |grep data
提示:如果是虚拟机硬盘不够的情况使用此方法,如果够请略过此方法!
centos7.9¶
镜像制作¶
CentOS image(官网文档参考资料) https://docs.openstack.org/image-guide/centos-image.html
公有镜像的获取地址:https://cloud.centos.org/centos/7/images/
创建虚拟磁盘
创建qcow2格式的虚拟磁盘(使用多少占用多少)二选一
mkdir -p /data/kvm-data/linux-node-moban/
qemu-img create -f qcow2 /data/kvm-data/linux-node-moban/linux-node-moban.qcow2 100G
创建raw格式的虚拟磁盘(会立刻占用所有空间容量)二选一
mkdir -p /data/kvm-data/linux-node-moban/
qemu-img create -f raw /data/kvm-data/linux-node-moban/linux-node-moban.raw 10G
下载centos7.9的iso镜像
cd /tmp
wget https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
备用下载:
wget https://mirrors.cloud.tencent.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
创建一台KVM虚拟机(通过iso镜像创建虚拟机)
mkdir -p /data/kvm-data/linux-node-moban/
virt-install --name linux-node-moban --virt-type kvm --vcpus 2 --ram 2048 \
--cdrom=/tmp/CentOS-7-x86_64-Minimal-2009.iso \
--disk path=/data/kvm-data/linux-node-moban/linux-node-moban.qcow2 \
--channel unix,path=/var/lib/libvirt/qemu/linux-node-moban.agent,mode=bind,target_type=virtio,name=org.qemu.guest_agent.0 \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole
配置VNC客户端连接KVM虚拟机
打开一个VNC客户端,输入192.168.56.111:5900(第一个默认5900,第二个5901,以此类推)连接虚拟机里面建立的KVM虚拟机,安装CentOS7的过程,此处不在演示如何安装
操作系统安装:
为了统一环境,保证实验的通用性,建议将网卡名称设置为 eth*,不使用 CentOS7 默
认的网卡命名规则。所以需要在安装的时候,增加内核参数。
点击 Tab,打开 kernel 启动选项,增加 net.ifnames=0 biosdevname=0 回车即可安装
安装CentOS7,在启动前修改内核让网卡为eth0,如图1-2
以下为详细的步骤:
virsh destroy linux-node-moban #强制关闭虚拟机
virsh undefine linux-node-moban #删除虚拟机 #如何制作失败重新创建虚拟机即可
上面的图是正在安装系统的过程!对于安装成功的系统我们需要重启启动一下KVM虚拟机
[root@linux-node1 ~]# virsh start linux-node-moban
Domain linux-node-moban started
[root@linux-node1 ~]# virsh list
Id Name State
----------------------------------------------------
6 linux-node-moban running
1.修改IP地址为DHCP自动获取IP
cat >/etc/sysconfig/network-scripts/ifcfg-eth0<<EOF
BOOTPROTO=dhcp
DEVICE=eth0
ONBOOT=yes
EOF
2.重启网卡使其配置生效
systemctl restart network
3.安装配置常见的YUM源安装常用的软件包。
rm -f /etc/yum.repos.d/*.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum repolist
安装Linux常用软件
yum install -y net-tools vim lrzsz tree screen lsof tcpdump bash-completion bash-completion-extras wget
4.关闭 NetworkManager 和防火墙
systemctl disable firewalld && systemctl stop firewalld
systemctl disable NetworkManager && systemctl stop NetworkManager
5.关闭并确认 SELinux 处于关闭状态
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config && grep 'SELINUX=disabled' /etc/selinux/config
setenforce 0
getenforce
6.开启虚拟机支持virsh console功能
systemctl start serial-getty@ttyS0.service
systemctl enable serial-getty@ttyS0.service
7.安装部署Kvm QGA(Qemu Guest Agent)
yum -y install qemu-guest-agent --enablerepo=C7.4*
systemctl enable qemu-guest-agent
systemctl start qemu-guest-agent
vi /etc/sysconfig/qemu-ga
# 注释如下行
#BLACKLIST_RPC=guest-file-open,guest-file-close,guest-file-read,guest-file-write,guest-file-seek,guest-file-flush,guest-exec,guest-exec-status
systemctl restart qemu-guest-agent
8.优化ssh服务
sed -i 's%#UseDNS yes%UseDNS no%g' /etc/ssh/sshd_config
systemctl restart sshd
9.关闭postfix服务
systemctl stop postfix
systemctl disable postfix
10.配置dns服务
cat >/etc/resolv.conf<<EOF
nameserver 114.114.114.114
EOF
11.配置ntp服务
yum -y install chrony ntp
vi /etc/chrony.conf
server ntp1.aliyun.com iburst
systemctl enable chronyd.service
systemctl start chronyd.service
12.安装 ACPI 服务,启动后,你可能需要手动配置你的虚拟机的网络。为了让虚拟化层能重启和关闭虚拟机,必须在虚拟机内安装并运行 acpid 服务。
在 CentOS虚拟机内运行以下命令安装 ACPI 服务并配置为系统启动时自动启动。
yum install acpid -y
systemctl enable acpid
配置获取metadata虚拟机在启动的时候需要和元数据服务交互以便完成几个任务,例如,虚拟机必须获取ssh公钥以及运行用户数据脚本。确保虚拟机能完成这些任务,使用以下几个方法之一:安装从 Ubuntu cloud-init 移植过来的cloud-init RPM包,这也是推荐的方法。
13.修改 /etc/rc.local 文件从元数据服务获取信息。使用 cloud-init 获取公钥 cloud-init 包自动从元数据服务获取公钥并保存到账户,你可以在 CentOS虚拟机添加 EPEL 安装源来安装 cloud-init 包。
yum install cloud-init -y
14.禁用zeroconf路由(要让虚拟机访问元数据服务)
echo "NOZEROCONF=yes" >>/etc/sysconfig/network
配置console,使nova console-log命令生效
15.在/etc/default/grub文件中最后添加一行:
vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"
然后执行:
grub2-mkconfig -o /boot/grub2/grub.cfg
清除MAC地址相关信息:
16.操作系统会在/etc/sysconfig/network-scripts/ifcfg-eth0和/etc/udev/rules.d/70-persistent-net.rules 这类文件记录下网卡MAC地址,但是,虚拟机的网卡MAC地址在每次虚拟机创建的时候都会不同,因此这些信息必须从配置文件删除掉。
Centos7镜像时,cloud-init安装版本为 0.7.2 , 安装配置好后,glance上传完成后使用该镜像创建虚机,通过SSH登陆该虚机就出现了问题,提示Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 就是root用户名输入回车后发现只能用public key公钥登陆,而不能用密码认证登陆。
17.进vnc控制台发现在/etc/ssh/sshd_config发现“PasswordAuthentication no” ,重新打开镜像发现在/etc/ssh/sshd_config发现“PasswordAuthentication yes” 然后后上传到OpenStack中,创建虚机,发现root还是没法用密码认证登陆,再次查看/etc/ssh/sshd_config,竟然发现“PasswordAuthentication no”
原因是cloud-init搞的鬼,在安装好cloud-init后,会生成/etc/cloud/cloud.cfg配置文件,找到该文件,就在配置文件置顶的前五行内,就赫然显示其配置限制了登陆方式:
vi /etc/cloud/cloud.cfg
users:
- defaults
disable_root:0
ssh_pwauth: 1
cloud-init默认配置是,ssh_pwauth 为 0 是关闭状态,就是禁止password认证。重新修改镜像,修改为 ssh_pwauth: 1 ,重新打镜像ssh远程登陆,root可以用密码正常登陆。 找到sshd_config配置文件,发现里面多了“PasswordAuthentication yes”,看来的确是cloud-init引起的
12.开始清理服务器日志和命令记录
> /var/log/messages
> /var/log/secure
> /var/log/lastlog
> /var/log/yum.log
> /var/log/wtmp
> /var/log/boot.log
> /var/log/maillog
> /var/log/dmesg
> /var/log/maillog
> /var/log/cron
> /var/log/grubby_prune_debug
> /root/.bash_history
history -c
可以设置虚拟机的密码,测试gqa功能是否正常
virsh set-user-password <domain> <user> <password> #kvm
virsh set-user-password linux-node-moban --user root --password 123
将模版虚拟机进行关机
virsh shutdown linux-node-moban
复制模版文件到指定位置
\cp /data/kvm-data/linux-node-moban/linux-node-moban.qcow2 /data/centos79200920220510.qcow2
将镜像复制到openstack控制节点
scp /data/centos79200920220510.qcow2 192.168.1.216:/root/
上传镜像¶
开始上传镜像到openstack集群
使用已经做好的镜像
source /root/admin-openrc
glance image-create --name "centos79200920220510" \
--file /var/lib/glance/images/centos79200920220510.qcow2 \
--disk-format qcow2 --container-format bare \
--property hw_qemu_guest_agent=yes \
--property os_type="linux" \
--visibility public \
--progress
openstack image list
使用自己制作的镜像
source /root/admin-openrc
glance image-create --name "linux-node-moban" \
--file /var/lib/glance/images/linux-node-moban.qcow2 \
--disk-format qcow2 --container-format bare \
--property hw_qemu_guest_agent=yes \
--property os_type="linux" \
--visibility public \
--progress
openstack image list
创建虚机¶
创建flavor规格
openstack flavor create --id 1 --vcpus 2 --ram 2048 --disk 100 2C2G
开始创建虚拟机进行测试
使用已经做好的镜像
source /root/demo-openrc
openstack image list
openstack network list
source /root/demo-openrc
openstack server create --flavor 2C2G --image centos79200920220510 \
--nic net-id=8547b120-8083-432f-a5f9-8ea7beeda429 --security-group default \
--key-name mykey centos79001
使用自己制作的镜像
source /root/demo-openrc
nova delete centos79001
openstack image list
openstack network list
source /root/demo-openrc
openstack server create --flavor 2C2G --image linux-node-moban \
--nic net-id=8547b120-8083-432f-a5f9-8ea7beeda429 --security-group default \
--key-name mykey centos79001
检查您的实例的状态:
openstack server list
获取实例的虚拟网络计算 (VNC) 会话 URL 并从 Web 浏览器访问它:
openstack console url show centos79001
在提供者虚拟网络上创建一个浮动 IP 地址:
openstack floating ip create provider
将浮动 IP 地址与实例关联:
openstack server add floating ip centos79001 192.168.57.167
检查您的浮动 IP 地址的状态
openstack server list
通过控制器节点或提供商物理网络上的任何主机的浮动 IP 地址验证与实例的连接:
ping -c 4 203.0.113.104
使用 SSH 从控制器节点或提供商物理网络上的任何主机访问您的实例:
ssh cirros@203.0.113.104
重设密码¶
我们可以测试修改虚拟机的密码
nova set-password centos79001
获取虚拟机密码
nova get-password centos79001 ~/.ssh/id_rsa
通过vnc验证密码是否修改成功
windows2012¶
镜像制作¶
Microsoft Windows image(官网文档参考资料) https://docs.openstack.org/image-guide/windows-image.html
创建虚拟磁盘
创建qcow2格式的虚拟磁盘(使用多少占用多少)
mkdir -p /data/kvm-data/windows-node-moban/
qemu-img create -f qcow2 /data/kvm-data/windows-node-moban/windwos-node-moban.qcow2 100G
下载windows2012的iso镜像
windows镜像下载网站:https://msdn.itellyou.cn/
创建一台windows KVM虚拟机(通过iso镜像创建虚拟机)
virt-install --name windows-node-moban --ram 2048 --vcpus 2 \
--network network=default,model=virtio \
--disk path=/data/kvm-data/windows-node-moban/windwos-node-moban.qcow2,format=qcow2,device=disk,bus=virtio \
--disk path=/tmp/cn_windows_server_2012_r2_x64_dvd_2707961.iso,device=cdrom,perms=ro \
--disk path=/tmp/2k12-virtio-0.1.215.iso,device=cdrom,perms=ro \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--channel unix,path=/var/lib/libvirt/qemu/windows-node-moban.agent,mode=bind,target_type=virtio,name=org.qemu.guest_agent.0 \
--os-type windows --os-variant win2k12
配置VNC客户端连接KVM虚拟机
virsh destroy windows-node-moban #强制关闭虚拟机
virsh undefine windows-node-moban #删除虚拟机 #如何制作失败重新创建虚拟机即可
设置nginx文件中转站
yum -y install nginx
vi /etc/nginx/nginx.conf
http {
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
server {
root /data/mirrors/;
rm -f /usr/share/nginx/html/index.html
nginx -t
systemctl restart nginx
cd /tmp
\cp CloudbaseInitSetup_1_1_2_x64.msi QEMU.zip /usr/share/nginx/html/
windows2012激活码
78NJB-CB3WX-GWPCM-VMKG7-94QWW
https://www.jiaochengzhijia.com/win10/121070.html
按下windows+x打开快捷菜单,选择命令提示符(管理员)
slmgr /ipk D2N9P-3P6X9-2R39C-7RTCD-MDVJX
slmgr /skms kms.03k.org
slmgr /ato
安装谷歌浏览器
安装好压软件
关闭windows2012防火墙
为了保证创建的新虚拟机可以自定义配置(例如修改虚拟机密码、系统盘自动扩容),建议您安装Cloudbase-init工具。
不安装Cloudbase-init工具,将无法对虚拟机进行自定义配置,只能使用镜像原有密码登录虚拟机。
接受用户协议—Next
Next
Next(注意username需要修改为Administrator)
Next
Finish
下载安装qga工具将QEMU文件夹(QGA安装包)解压,并上传至windows虚拟机C:\Program Files目录下,如下图示:
进入QEMU目录→Guest-Agent目录中,右键install安装程序-以管理员身份运行
程序会自动完成ctcm的安装
为拥有更好的镜像体验,建议您根据此章节对您的windows镜像进行一些优化配置。
gpedit.msc
在"本地组策略编辑器"对话框中打开 "计算机配置→windows设置→安全设置→本地策略→审核策略",将策略设置成下图
在"本地组策略编辑器"对话框中打开 "计算机配置→windows设置→安全设置→账户策略–>密码策略" 将密码长度最小值设为8,密码最长使用期限改为0(不过期),如下图:
打开控制面板-系统和安全,按照以下图示进行操作
选择系统和安全
点击更改计划设置
选择从不 然后保存修改
测试是否可以修改密码
virsh set-user-password windows-node-moban Administrator P@sswd123
上传镜像¶
开始上传镜像到openstack集群
使用已经做好的镜像
source /root/admin-openrc
glance image-create --name "windows201220220510" \
--file /var/lib/glance/images/windows201220220510.qcow2 \
--disk-format qcow2 --container-format bare \
--property os_type="windows" \
--property hw_qemu_guest_agent=yes \
--visibility public \
--progress
openstack image list
使用自己制作的镜像
source /root/admin-openrc
glance image-create --name "windwos-node-moban" \
--file /var/lib/glance/images/windwos-node-moban.qcow2 \
--disk-format qcow2 --container-format bare \
--property os_type="windows" \
--property hw_qemu_guest_agent=yes \
--visibility public \
--progress
openstack image list
openstack image set --property os_type=windows 19fc500b-635d-4375-ac93-e09831129d0d
openstack image show 19fc500b-635d-4375-ac93-e09831129d0d
创建虚机¶
创建flavor规格
source /root/admin-openrc
openstack flavor create --id 1 --vcpus 2 --ram 2048 --disk 100 2C2G
开始创建虚拟机进行测试
source /root/demo-openrc
openstack image list
openstack network list
使用已经做好的镜像
source /root/demo-openrc
openstack server create --flavor 2C2G --image windwos-node-moban \
--nic net-id=8547b120-8083-432f-a5f9-8ea7beeda429 --security-group default \
--key-name mykey windows2012001
使用自己制作的镜像
source /root/demo-openrc
openstack server create --flavor 2C2G --image windows201220220510 \
--nic net-id=8547b120-8083-432f-a5f9-8ea7beeda429 --security-group default \
--key-name mykey windows2012001
检查您的实例的状态:
openstack server list
获取实例的虚拟网络计算 (VNC) 会话 URL 并从 Web 浏览器访问它:
openstack console url show windows2012001
在提供者虚拟网络上创建一个浮动 IP 地址:
openstack floating ip create provider
将浮动 IP 地址与实例关联:
openstack server add floating ip windows2012001 192.168.57.167
检查您的浮动 IP 地址的状态
openstack server list
允许安全外壳 (RDP) 访问:
openstack security group rule create --proto tcp --dst-port 3389 default
重设密码¶
修改虚拟机的密码
openstack server set --root-password windows2012001
如何获取虚拟机的密码
[root@controller ~]# nova get-password windows2012001 ~/.ssh/id_rsa
bX5sUdWHTIv6uHzV21eG
https://raymii.org/s/tutorials/OpenStack_nova_get_-_password_set_-_password_and_post_encrypted_password_to_metadata_service.html
ubuntu2004¶
https://docs.openstack.org/image-guide/obtain-images.html
公有镜像的获取地址:https://cloud-images.ubuntu.com/minimal/releases/focal/release/
经验篇02-手工制作OpenStack的Ubuntu16.04镜像
镜像制作¶
创建虚拟磁盘
创建qcow2格式的虚拟磁盘(使用多少占用多少)二选一
mkdir -p /data/kvm-data/ubuntu-node-moban/
qemu-img create -f qcow2 /data/kvm-data/ubuntu-node-moban/ubuntu-node-moban.qcow2 100G
下载centos7.9的iso镜像
cd /tmp
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/ubuntu-20.04.4-live-server-amd64.iso
创建一台KVM虚拟机(通过iso镜像创建虚拟机)
virt-install --name ubuntu-node-moban --virt-type kvm --vcpus 2 --ram 2048 \
--cdrom=/tmp/ubuntu-20.04.4-live-server-amd64.iso \
--disk path=/data/kvm-data/ubuntu-node-moban/ubuntu-node-moban.qcow2 \
--channel unix,path=/var/lib/libvirt/qemu/ubuntu-node-moban.agent,mode=bind,target_type=virtio,name=org.qemu.guest_agent.0 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole
配置VNC客户端连接KVM虚拟机
打开一个VNC客户端,输入192.168.56.111:5900(第一个默认5900,第二个5901,以此类推)连接虚拟机里面建立的KVM虚拟机,安装CentOS7的过程,此处不在演示如何安装
操作系统安装:
为了统一环境,保证实验的通用性,建议将网卡名称设置为 eth*,不使用 CentOS7 默
认的网卡命名规则。所以需要在安装的时候,增加内核参数。
选择语言
设置键盘
配置动态IP地址
table 切换到 proxy address
这个可以配置阿里云(http://mirrors.aliyun.com/ubuntu/),下载加速 或者默认…
回车设置镜像源地址,
配置磁盘布 使用整个磁盘:此方法将擦除整个硬盘并自动对驱动器进行分区。推荐给新手 如果选择此选项,则可以选择设置LVM并使用LUKS加密LVM配置 自定义存储布局:手动设置他们选择的分
查看当前文件系统配置 继续,或返回 并根据需要重新配置存储。
选择“继续”,开始安装
输入服务器系统的详细信息, 设置一个用户 ,名称,服务器名称,用户名及其密码
留空,下一步; 如果你想注册这个系统,请在这里输入你的Ubuntu Advantage令牌。否则,将此留空。
选择安装openSSH服务器 习惯用第三方工具连接,所以选择。按ENTER继续
下次一定装… 选择适用于您的Ubuntu系统的可用特性软件包列表。它们将与Ubuntu服务器安装一起安装。使用SPACE选择或取消选择它们。按ENTER查看快照应用程序的更多详细信息。这是可选的,您以后也可以这样做。
安装中…
安装好了,重启
安装好系统后,需要进行配置才能作为glance镜像使用。在上面启动虚拟机后,首先通过如下指令配置root密码,
passwd
然后,切换到root用户。如果云主机需要支持root ssh远程登录,需要开启root远程ssh登录功能,修改配置文件/etc/ssh/sshd_config并修改PermitRootLogin值为yes,重启ssh服务生效:
root@ubuntu:~# vi /etc/ssh/sshd_config
PermitRootLogin yes
/etc/init.d/ssh restart
需要注意:
- 生产环境不建议开启密码登录功能,使用密钥登录更安全。
- 生产环境不建议开启root远程登录。
更新国内源(阿里源)
cp /etc/apt/sources.list /etc/apt/sources.list_bak
cat >/etc/apt/sources.list<<EOF
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
EOF
更新源
apt-get update
安装acpid软件包,并设置开机启动服务 acpid是一个用户空间的服务进程, 用来处理电源相关事件,比如将kernel中的电源事件转发给应用程序,告诉应用程序安全的退出,防止应用程序异常退出导致数据损坏。libvirt可以通过向guest虚拟机发送acpid事件触发电源操作,使虚拟机安全关机、重启等操作,相对于强制执行关闭电源操作更安全。通过acpid事件发送开关机信号即我们经常所说的软重启或者软关机。用户执行重启或者关机操作时,OpenStack会首先尝试调用libvirt的shutdown方法,即软关机。当软关机执行失败或者超时(默认120秒),则会调动libvirt的destroy方法,即强制关机,因此如果虚拟机关机或者重启很慢,很可能是acpid没有正常运行。为了使虚拟机进程安全退出,减少数据损坏风险,尽量使用软操作,硬操作可能导致程序崩溃或者数据丢失。
apt install -y acpid
service acpid start
配置nova console log功能(作用详见制作CentOS镜像文章) 当操作系统内核崩溃时会报出内核系统crash出错信息,通常启动的时候一闪而过, 而此时系统还没有起来,不能通过远程工具(比如ssh)进入系统查看,我们可以通过配置grub,把这些日志重定向到Serial Console中,这样我们就可以通过Serial console来访问错误信息,以供分析和排错使用。修改配置文件/etc/default/grub,设置GRUB_CMDLINE_LINUX如下:
GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8"
通过以下命令,重新引导Grub启动文件
grub-mkconfig -o /boot/grub/grub.cfg
安装cloud-init
cloud-init是虚拟机第一次启动时执行的脚本,主要负责从metadata服务中拉取配置信息,完成虚拟机的初始化工作,比如设置主机名、初始化密码以及注入密钥等。手动安装cloud-init并设置开机启动如下:
apt install -y cloud-init
service cloud-init start
注意:cloud-init的配置文件默认不允许通过root用户登录,且不允许通过用户名/密码的方式登录,只允许通过秘钥方式。因此,可以通过修改配置文件/etc/cloud-init/cloud.cfg如下选项改变上述情况:
20.04版本 配置文件路径: /etc/cloud/cloud.cfg
disable_root: false
ssh_pwauth: true
同时,在modules下添加:- resolv-conf选项
- resolv-conf
注意,与CentOS镜像制作不同的是,需要在/etc/cloud/cloud.cfg.d/90_dpkg.cfg配置只支持OpenStack镜像,如下:
root@ubuntu:~# vi /etc/cloud/cloud.cfg.d/90_dpkg.cfg
datasource_list: [ openstack ]
安装qga工具
apt-get install qemu-guest-agent
/etc/init.d/qemu-guest-agent start
验证ubuntu镜像修改密码的功能
[root@linux-bkce-node014 ~]# virsh set-user-password ubuntu-node-moban --user ubuntu --password 123456
Password set successfully for chris in ubuntu-node-moban
[root@linux-bkce-node014 ~]# virsh set-user-password ubuntu-node-moban --user root --password 123456
Password set successfully for root in ubuntu-node-moban
关闭虚拟机
virsh shutdown ubuntu-node-moban
上传镜像¶
开始上传镜像到openstack集群
使用已经做好的镜像
source /root/admin-openrc
glance image-create --name "ubuntu200420220510" \
--file /var/lib/glance/images/ubuntu200420220510.qcow2 \
--disk-format qcow2 --container-format bare \
--property os_type="linux" \
--property hw_qemu_guest_agent=yes \
--visibility public \
--progress
openstack image list
使用自己制作的镜像
source /root/admin-openrc
glance image-create --name "ubuntu-node-moban" \
--file /var/lib/glance/images/ubuntu-node-moban.qcow2 \
--disk-format qcow2 --container-format bare \
--property os_type="linux" \
--property hw_qemu_guest_agent=yes \
--visibility public \
--progress
openstack image list
openstack image set --property os_type=windows 19fc500b-635d-4375-ac93-e09831129d0d
openstack image show 19fc500b-635d-4375-ac93-e09831129d0d
创建虚机¶
开始创建虚拟机进行测试
source /root/demo-openrc
openstack image list
openstack network list
使用已经做好的镜像
source /root/demo-openrc
openstack server create --flavor 2C2G --image ubuntu200420220510 \
--nic net-id=8547b120-8083-432f-a5f9-8ea7beeda429 --security-group default \
--key-name mykey ubuntu2004001
使用自己制作的镜像
source /root/demo-openrc
openstack server create --flavor 2C2G --image ubuntu-node-moban \
--nic net-id=8547b120-8083-432f-a5f9-8ea7beeda429 --security-group default \
--key-name mykey ubuntu2004001
检查您的实例的状态:
openstack server list
获取实例的虚拟网络计算 (VNC) 会话 URL 并从 Web 浏览器访问它:
openstack console url show ubuntu2004001
在提供者虚拟网络上创建一个浮动 IP 地址:
openstack floating ip create provider
将浮动 IP 地址与实例关联:
openstack server add floating ip ubuntu2004001 203.0.113.109
检查您的浮动 IP 地址的状态
openstack server list
重设密码¶
修改虚拟机的密码
openstack server set --root-password ubuntu2004001
如何获取虚拟机的密码
[root@controller ~]# nova get-password ubuntu2004001 ~/.ssh/id_rsa
bX5sUdWHTIv6uHzV21eG
其他系统¶
上传镜像¶
清理内存
echo "3">/proc/sys/vm/drop_caches
开始上传镜像到openstack集群
qemu-img convert -f raw -O qcow2 CS76-DOCKER-20220216.raw CS76-DOCKER-20220216.qcow2
tmux new -s test01
unzip CS76-DOCKER-20220216.raw.zip
source /root/admin-openrc
glance image-create --name "k8s-centos76v1" \
--file /var/lib/glance/images/CS76-DOCKER-20220216.raw \
--disk-format qcow2 --container-format bare \
--property hw_qemu_guest_agent=yes \
--property os_type="linux" \
--visibility public \
--progress
source /root/admin-openrc
ctyunos-public-image.qcow2
glance image-create --name "k8s-ctyunos20v1" \
--file /var/lib/glance/images/ctyunos-public-image.qcow2 \
--disk-format qcow2 --container-format bare \
--property hw_qemu_guest_agent=yes \
--property os_type="linux" \
--visibility public \
--progress
openstack image list
创建虚机¶
创建flavor规格
openstack flavor create --id 10 --vcpus 4 --ram 8192 --disk 150 4C8G
开始创建虚拟机进行测试
使用自己制作的镜像
openstack image list
openstack network list
source /root/demo-openrc
openstack server create --flavor 4C8G --image k8s-centos76v1 \
--nic net-id=667c3eb8-3162-4794-966d-0b9d591df566 --security-group 342104a8-b7a9-47a9-910e-11cf4d1d0e26 \
--key-name mykey k8s-centos76-001
source /root/demo-openrc
openstack server create --flavor 4C8G --image k8s-ctyunos20v1 \
--nic net-id=667c3eb8-3162-4794-966d-0b9d591df566 --security-group 342104a8-b7a9-47a9-910e-11cf4d1d0e26 \
--key-name mykey k8s-ctyunos20-001
检查您的实例的状态:
openstack server list
获取实例的虚拟网络计算 (VNC) 会话 URL 并从 Web 浏览器访问它:
openstack console url show centos79001
在提供者虚拟网络上创建一个浮动 IP 地址:
openstack floating ip create provider
将浮动 IP 地址与实例关联:
openstack server add floating ip centos79001 192.168.57.167
检查您的浮动 IP 地址的状态
openstack server list
通过控制器节点或提供商物理网络上的任何主机的浮动 IP 地址验证与实例的连接:
ping -c 4 203.0.113.104
使用 SSH 从控制器节点或提供商物理网络上的任何主机访问您的实例:
ssh cirros@203.0.113.104