定製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池的數據

rbd ls images
e7439786-1143-43fe-a509-f84d666c3fbf

rbd info images/e7439786-1143-43fe-a509-f84d666c3fbf

注意: 登錄後修改主機名及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 [email protected]
Last login: Fri May 21 17:17:24 2020 from 192.168.0.10
[root@k8s-master ~]#

創建自己需要的實例環境

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章