定制Openstack的CentOS7的镜像

# OpenStack镜像制作要考虑的地方

准备一台VMware Workstation上的centos系统虚拟机, 开启VT和CPU性能计数器

CentOS-7-x86_64-Minimal-2003.iso 镜像为最小版的centos

Minimal是官方最小的centos镜像文件,也可以使用其他镜像正常大小的iso文件

1. 安装kvm,并启动libvirtd并设置开机启动

确定计算节点是否支持虚拟机硬件加速(不为0)

egrep -c '(vmx|svm)' /proc/cpuinfo

安装kvm,并启动libvirtd并设置开机启动

yum install libvirt virt-install qemu-kvm -y 
systemctl start libvirtd && systemctl enable libvirtd

#使用ifconfig命令,可以看到多出一个virbr0的网卡

创建一个目录,用于存放镜像,并上传CentOS7的镜像到该目录下

mkdir -p /opt/image

#上传镜像,上传完成后开始创建虚拟机;使用centos最小版镜像
wget -c http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2003.iso -P /opt/image

创建一个5G的虚拟机硬盘

根据镜像大小决定,如果后续有转换raw格式的需求,可能会导致镜像占用空间为虚拟硬盘大小
raw镜像虽说性能很好,但是不具备伸缩和快照功能,虚机的创建和迁移都要花费大量时间,不适用于线上实际云环境的使用。建议采用qcow2。

qemu-img create -f qcow2 /tmp/centos7.qcow2 5G

#这里的大小不是占用你当前磁盘的大小而是将要制作的云镜像的系统盘大小

2. 创建虚拟机

virt-install --virt-type kvm \
--os-type=linux \
--os-variant centos7.0 \
--name centos7 \
--ram 1024 \
--disk /tmp/centos7.qcow2,format=qcow2 \
--cdrom /opt/image/CentOS-7-x86_64-Minimal-2003.iso \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole 

#参数含义请百度

用VNC连接
VNC Viewer远程桌面下载链接

[root@kvm image]# netstat -lntup|grep 5900
tcp    0    0 0.0.0.0:5900        0.0.0.0:*        LISTEN     25986/qemu-kvm

3. 系统安装步骤简单提示

修改网卡名称为eth

选择第一个 Install CentOS 7
敲Tab键出现字时 , 接着输入 net.ifnames=0 biosdevname=0 ,然后回车

选择上海时间

分区,将所有容量都给根分区,且只分一个根分区

完成配置,设置root密码

安装完成后点击reboot,系统会关机,并不会重启,这时候在宿主机上可以通过命令查看刚才已经建立的虚拟机

[root@kvm image]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     centos7                        shut off

#启动虚拟机
[root@kvm image]# virsh start centos7
Domain centos7 started

4. 连接虚拟机进行配置

启动后再次通过VNC工具连接上去,进行IP配置,系统优化,安装常用软件,配置yum源,做云镜像的初始化功能等工作

新建的虚拟机上操作:

通过宿主机进行连接

安装常用软件;配置yum源

yum install -y wget 
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum install -y mlocate lrzsz tree vim nc nmap bash-completion bash-completion-extras cowsay sl htop iotop iftop lsof net-tools sysstat unzip bc psmisc ntpdate wc telnet-server bind-utils

关闭防火墙,关闭selinux

setenforce 0
sed -i 's#enforcing#disabled#' /etc/sysconfig/selinux
systemctl stop firewalld && systemctl disable firewalld

sshd优化修改sshd.config文件

[root@centos7 ~]# vim /etc/ssh/sshd_config
GSSAPIAuthentication yes
UseDNS no

编辑网络后重启网卡
定制的镜像中 网卡配置文件要配置dhcp,保证openstack创建实例时分配的ip可以获取到。
此图中配置有多余的,将第三行配置DEFROUTE=yes删除掉。不然会导致使用此镜像创建 实例后获取不到IP

TYPE=Ethernet
BOOTPROTO=dhcp
NAME=eth0
DEVICE=eth0
ONBOOT=yes

此图为修改过后的镜像网卡配置文件


如果有需求安装图形化界面请看下面链接
https://www.jianshu.com/p/bdd29c1e1dd9


5. cloud-init初始化的使用与配置※

上篇文章:云服务器cloud-init初始化工具的使用与配置
cloud-init官方文档
在云平台中,创建云主机的时候希望能够对主机进行一些初始化操作,如配置ip,主机名,密码,ssh登录等。openstack上可以使用cloud-init进行初始化。

建议阅读cloud-init官方文档,读几遍,确保知道在配置些什么,以及这些配置项是如何生效的,模块频率是怎样。

要实现在云主机中的初始化配置,首先就要让云主机获取到用户输入的配置数据,在cloud-init中以cdrom方式读取,即openstack将用户数据打包成iso挂载给云主机,云主机启动后内部的cloud-init默认从cdrom里面读取数据,然后进行初始化操作。

Users and Groups模块的模块频率是每个实例执行一次,也就是说制作的镜像起了云主机之后,再修改这个模块配置重启机器是不再生效了。
与Users and Groups模块的模块频率相似的还有Write_files、Set Passwords模块。
Bootcmd模块的模块频率是每个实例可以执行多次,也就是说,起了云主机之后,再修改这个模块配置重启机器之后也会生效。
与Bootcmd模块的模块频率相似的还有Runcmd。

设置完成后关闭虚拟机,准备下一阶段

history -c
shutdown -h now

6. 上传centos镜像到openstack

如果对接ceph存储。可以把qcow2格式转换为raw格式的镜像再上传
Ceph缺点是不支持从qcow2格式的镜像引导,所以需要转换raw格式的镜像

[root@kvm image]# ll -h /tmp/centos7.qcow2 
-rw-r--r--. 1 root root 1.6G May 20 17:27 /tmp/centos7.qcow2

#将镜像从qcow2格式转换为raw格式;并下载到本地 【可选】
[root@kvm image]# qemu-img convert -f qcow2 -O raw /tmp/centos7.qcow2 CentOS-7-x86_64-Minimal-2003.raw

将镜像上传到openstack的glance节点上(在controller节点上)

openstack image create --container-format bare --disk-format raw --file /server/tools/CentOS-7-x86_64-Minimal-2003.raw --unprotected --public CentOS-7-x86_64-Minimal-2003

#从QEMU中检索块设备映像信息
[root@controller tools]# qemu-img info CentOS-7-x86_64-Minimal-2003.raw
image: CentOS-7-x86_64-Minimal-2003.raw
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 5.0G

在ceph上查看镜像和glance池的数据

[root@cephnode01 ~]# rbd ls images
2e265fb4-13a4-41c9-8bf1-cc9f5e1e8304

[root@cephnode01 ~]# rbd info images/2e265fb4-13a4-41c9-8bf1-cc9f5e1e8304
rbd image '2e265fb4-13a4-41c9-8bf1-cc9f5e1e8304':
    size 5 GiB in 640 objects
    order 23 (8 MiB objects)
    snapshot_count: 1
    id: 11a240520cfa64
    block_name_prefix: rbd_data.11a240520cfa64
    format: 2
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
    op_features: 
    flags: 
    create_timestamp: Fri May 29 10:43:23 2020
    access_timestamp: Fri May 29 10:43:23 2020
    modify_timestamp: Fri May 29 11:57:26 2020

注意: 登录后修改主机名及IP,避免生产中重复,另外可以直接在创建镜像的时候,写一个脚本,也可以在镜像中配置好cloud-init初始化服务;在新建云主机完成后,直接更改主机名和IP地址
配置租户自用网络,添加了一个浮动IP

[root@controller ~]# openstack server list
+--------------------------------------+------------+--------+----------------------------------------+-------+--------+
| ID                                   | Name       | Status | Networks                               | Image | Flavor |
+--------------------------------------+------------+--------+----------------------------------------+-------+--------+
| e5891fc5-63ca-43a8-bb92-bb512c1ec7e3 | K8s-master | ACTIVE | selfservice=172.18.1.33, 192.168.0.205 |       | CentOS |
+--------------------------------------+------------+--------+----------------------------------------+-------+--------+

#镜像中的cloud-init已经配置了controller节点的ssh免秘钥登陆
[root@controller ~]# ssh root@192.168.0.205
Last login: Fri May 21 17:17:24 2020 from 192.168.0.10
[root@k8s-master ~]#

创建自己需要的实例环境

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269