当前位置: 首页 > news >正文

云计算|OpenStack|社区版OpenStack安装部署文档(十一--- 如何获取镜像---Rocky版)

前言:

前面我们使用虚拟机搭建了一个openstack集群,也就是在VM虚拟机的基础上模拟了一个简单的基于openstack社区版Rocky的私有云,但,不管任何部署安装工作,最后其实都是需要有实际的应用的,也就是常说的实务(实际业务)

那么,在前面搭建的这个私有云里,我们能做些什么?如何做?

OK,以上问题解答之前,需要先明确私有云是一个基础设施平台,通过我们安装的keystone,nova,glacier,cinder,neutron,这些关键组件虚拟化计算节点的资源(资源指的是内存,CPU这些关键资源),基于kvm等虚拟技术,按照flavor(虚拟机模板)生产虚拟机,并管理这些虚拟机,以提供给私有云内的用户各种各样的操作系统(例如,生产Windows类型的虚拟机,Debian类型的虚拟机),以及云盘(cinder这个组件生产的卷)动态的扩展虚拟机,

简单来说,计算节点的资源我们可以看做是一个资源池,然后从这个资源池内生产符合我们期望的云主机(ECS)并有云盘的挂载这些动态扩展。

这里有两个概念,第一个是镜像,第二个是实例。

一,

镜像

也就是image,这里和docker里是非常类似的,但,该镜像是具有特定的虚拟机格式的,例如,qcow2类型镜像,raw类型镜像,qcow类型镜像,vmdk类型镜像等等很多类型,而docker内的镜像体现在文件上,只是一个压缩包而已,这个压缩包内是有许多layer(层)这样的概念而已,是没有格式的说法的。

云计算的镜像是有格式的概念的,例如,我们现在查看一个可以在openstack平台内使用的虚拟机镜像(简单理解,也就是一个虚拟化的硬盘,此硬盘有很多类型,但,这个硬盘内我们安装了可引导的操作系统):

这个newwin7.img 格式是qcow2,压缩比例是1.1,实际大小是3.4G,总大小是15G

[root@k8s-node2 opt]# qemu-img info newwin7.img 
image: newwin7.img
file format: qcow2
virtual size: 15G (16106127360 bytes)
disk size: 3.4G
cluster_size: 65536
Format specific information:compat: 1.1lazy refcounts: false

而docker的镜像是虚拟化的,当然,我们可以通过docker save 命令将镜像实体化:

[root@k8s-node2 opt]# docker images
REPOSITORY                                           TAG        IMAGE ID       CREATED         SIZE
registry.aliyuncs.com/google_containers/kube-proxy   v1.23.15   9dbdbaf158f6   2 months ago    112MB
registry.aliyuncs.com/google_containers/pause        3.6        6270bb605e12   17 months ago   683kB
quay.io/coreos/flannel                               v0.13.0    e708f4bb69e3   2 years ago     57.2MB

二,

实例

镜像启动后,在openstack中,我们就叫实例,也就是server,在docker中,我们叫容器,不过通常这个是省略的叫法,其实全称是实例化容器也就是container(注意,不是containerd,containerd是容器服务,docker也是容器服务,这里不要搞混了)

例如,在docker中:

k8s_POD_kube-proxy-z4zdp_kube-system_9e12a38d-2a49-4dd7-9897-478d89ab943c_3这个就是一个容器,虽然此容器是退出状态。

[root@k8s-node2 opt]# docker ps  -a
CONTAINER ID   IMAGE                                               COMMAND                  CREATED       STATUS                     PORTS     NAMES
8caa6c8e1ad3   e708f4bb69e3                                        "/opt/bin/flanneld -…"   5 weeks ago   Exited (255) 4 weeks ago             k8s_kube-flannel_kube-flannel-ds-vlrtj_kube-system_46590cd0-ae59-414c-8b34-fa7caf727fce_2
c1d0d5d5c773   e708f4bb69e3                                        "cp -f /etc/kube-fla…"   5 weeks ago   Exited (0) 5 weeks ago               k8s_install-cni_kube-flannel-ds-vlrtj_kube-system_46590cd0-ae59-414c-8b34-fa7caf727fce_2
ce07c5e4a552   9dbdbaf158f6                                        "/usr/local/bin/kube…"   5 weeks ago   Exited (255) 4 weeks ago             k8s_kube-proxy_kube-proxy-z4zdp_kube-system_9e12a38d-2a49-4dd7-9897-478d89ab943c_3
046f138b0761   registry.aliyuncs.com/google_containers/pause:3.6   "/pause"                 5 weeks ago   Exited (255) 4 weeks ago             k8s_POD_kube-flannel-ds-vlrtj_kube-system_46590cd0-ae59-414c-8b34-fa7caf727fce_2
e8be7c942476   registry.aliyuncs.com/google_containers/pause:3.6   "/pause"                 5 weeks ago   Exited (255) 4 weeks ago             k8s_POD_kube-proxy-z4zdp_kube-system_9e12a38d-2a49-4dd7-9897-478d89ab943c_3

在openstack中的实例:

[root@openstack1 ~]# openstack server list
+--------------------------------------+------+---------+------------------------+-------+---------+
| ID                                   | Name | Status  | Networks               | Image | Flavor  |
+--------------------------------------+------+---------+------------------------+-------+---------+
| 315108a3-a375-4615-bbdd-7745d530886e | new1 | SHUTOFF | provider=192.168.123.4 | new1  | m1.tiny |
+--------------------------------------+------+---------+------------------------+-------+---------+

而这个实例,我们观察它的三维,发现有一个flavor是比较陌生的,这个是实例的规格,也就是实例的模板,可以通过一下命令查询到:

经对比可知,上面的实例new1使用的是new1这个镜像,使用的规格是第二个规格

[root@openstack1 ~]# openstack flavor list
+----+-----------+-------+------+-----------+-------+-----------+
| ID | Name      |   RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+-------+------+-----------+-------+-----------+
| 0  | m1.nano   |    64 |    1 |         0 |     1 | True      |
| 1  | m1.tiny   |  1024 |   50 |         0 |     1 | True      |
| 2  | m1.small  |  2048 |  500 |         0 |     1 | True      |
| 3  | m1.medium |  4096 |  500 |         0 |     2 | True      |
| 4  | m1.large  |  8192 |  500 |         0 |     4 | True      |
| 5  | m1.xlarge | 16384 |  500 |         0 |     8 | True      |
+----+-----------+-------+------+-----------+-------+-----------+

OK,以上是一些基础性的知识科普,下面,将回答文章开始的问题,如何获取openstack可以使用的镜像

正文:

一,

镜像的来源问题

和docker,containerd这些虚拟技术类似,openstack的官方也会提供各种各样的镜像,这些镜像通常都是标准的镜像,通常,这些镜像已经安装好了操作系统,可以直接上传到glance服务内,然后交由openstack调度生成实例,也就是开箱即用,但由于基于标准化的生产,可能很多地方是我们不可接受的,例如,root密码没有,可能需要一些加工定制,在上传到glance服务内。

官方文档内的镜像下载地址:Get images — Virtual Machine Image Guide documentation

还有一种方式,那就是自制镜像,自己创建镜像文件并把操作系统安装到镜像文件内,然后上传到glance服务内,以供openstack使用

由于镜像的内容比较多,因此,本文将官方镜像和自制镜像分开来写,这篇文章将主要就官方镜像的获取以及如何定制化来做一个简单的描述。

下一篇文章在讲述如何自制镜像并上传到openstack实例化的整个流程。

二,

官方云镜像的定制化

从官方下载下来的官方镜像需要一些定制,以centos7为例,该官方镜像并没有root密码(没有任何人告诉你密码是多少,包括普通用户),并且由于是国外制作的镜像,时区一般也不是国内时区,这些我们都需要调整,还有我们可能希望这个镜像有安装一些软件,比如wget或者开发环境,这样镜像启动为实例的时候可以做到开箱即用,以及一些自己写的脚本,能实例化的时候就直接使用,这些都是我们的定制方向。

OK,本例下载的镜像为:CentOS-7-x86_64-GenericCloud-1508.qcow2.xz和debian-10-openstack-amd64.qcow2

上传到一个只安装有纯净的kvm环境的服务器上(kvm环境部署见我的文章:https://zskjohn.blog.csdn.net/article/details/124658437

#####镜像定制化工具一般为libguestfs-tools 套件内的virt-custome命令,以上镜像是上传到服务器的/opt路径下:

#####注:重设密码和时区,此时这个镜像不能启动,如果有错误,可在命令最后加-v 参数查看详细报错

[root@k8s-node2 opt]# export LIBGUESTFS_BACKEND=direct
[root@k8s-node2 opt]# virt-customize -a /opt/CentOS-7-x86_64-GenericCloud-1508.qcow2 --root-password password:123456
[   0.0] Examining the guest ...
[   6.7] Setting a random seed
[   6.7] Setting passwords
[   9.1] Finishing off
[root@k8s-node2 opt]# virt-customize -a /opt/CentOS-7-x86_64-GenericCloud-1508.qcow2 --timezone "Asia/Shanghai" 
[   0.0] Examining the guest ...
[   6.0] Setting a random seed
[   6.0] Setting the timezone: Asia/Shanghai
[   6.1] Finishing off

假设是一个RDS类型的数据库服务器,数据库安装脚本为a.sh:

[root@k8s-node2 opt]# virt-customize -a /opt/CentOS-7-x86_64-GenericCloud-1508.qcow2 --upload ./a.sh:/opt/a.sh
[   0.0] Examining the guest ...
[   4.9] Setting a random seed
[   4.9] Uploading: ./a.sh to /opt/a.sh
[   4.9] Finishing off
[root@k8s-node2 opt]# virt-customize -a /opt/CentOS-7-x86_64-GenericCloud-1508.qcow2 --chmod 755:/opt/a.sh
[   0.0] Examining the guest ...
[   4.8] Setting a random seed
[   4.8] Changing permissions of /opt/a.sh to 755
[   4.9] Finishing off
[root@k8s-node2 opt]# virt-customize -a /opt/CentOS-7-x86_64-GenericCloud-1508.qcow2 --run '/opt/a.sh'
[   0.0] Examining the guest ...
[   5.0] Setting a random seed
[   5.0] Running: /opt/a.sh
。。。。。。。。后面的略略略

当然,像Debian的镜像以及centos8的镜像都可以这样处理,以此类推,处理完毕后,上传到openstack的服务器后,再上传到glance服务:

[root@openstack1 opt]# openstack image create "debian" --file debian-10-openstack-amd64.qcow2   --disk-format qcow2 --container-format bare --public
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field            | Value                                                                                                                                                                                      |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| checksum         | 15e64bfabf21c8bffafcc57d1c294c32                                                                                                                                                           |
| container_format | bare                                                                                                                                                                                       |
| created_at       | 2023-02-08T08:32:46Z                                                                                                                                                                       |
| disk_format      | qcow2                                                                                                                                                                                      |
| file             | /v2/images/85029b50-225b-4fd4-a5a2-70c8cdc293f2/file                                                                                                                                       |
| id               | 85029b50-225b-4fd4-a5a2-70c8cdc293f2                                                                                                                                                       |
| min_disk         | 0                                                                                                                                                                                          |
| min_ram          | 0                                                                                                                                                                                          |
| name             | debian                                                                                                                                                                                     |
| owner            | 205ce8addd9444c893bd62244bcdae78                                                                                                                                                           |
| properties       | os_hash_algo='sha512', os_hash_value='1a5ecf75d2d0ecc77708d18001378ebd81d61775eff22431aec13776e813a931012777059ac23ade34c89bd96e5be2ba5024d11a8b8b44ca86f23b28b2ed30a8', os_hidden='False' |
| protected        | False                                                                                                                                                                                      |
| schema           | /v2/schemas/image                                                                                                                                                                          |
| size             | 690814976                                                                                                                                                                                  |
| status           | active                                                                                                                                                                                     |
| tags             |                                                                                                                                                                                            |
| updated_at       | 2023-02-08T08:33:08Z                                                                                                                                                                       |
| virtual_size     | None                                                                                                                                                                                       |
| visibility       | public                                                                                                                                                                                     |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

由于openstack是搭建在虚拟机之上的,有bug问题,因此,修改镜像的属性后,在启动镜像为实例:

openstack image set  --property hw_disk_bus=ide  --property hw_vif_model=e1000 centos7
openstack server create --flavor m1.tiny --image centos7 --security-group default --key-name mykey centos7

启动完毕后,登陆控制台,可以看到root密码已经设置了:

同样的,Debian的镜像也可以使用设置的密码登陆了:

但此时的实例只可以通过控制台登陆, 

 以上是Linux的镜像问题,但Windows比较复杂,需要利用cloudinit工具自制镜像(估计是版权问题,毕竟Windows不是开源的操作系统)

三,

虚拟机的网络问题

云计算的网络是非常复杂的,主要是涉及到的地方非常多,那么,一个虚拟机能够连接互联网,至少需要明确网关和DNS(分配IP地址是肯定要分配的),如果需要网络的拓展,那么,还需要路由,这些就涉及到了ARP静态表等等知识。

OK。cirros这种袖珍镜像是专门用来在openstack这样的云计算环境做测试用的镜像,下面以在selfservice网络模型下,运行一个cirros镜像为实例:

控制节点的ip(192.168.123.130,网关是192.168.123.2):

[root@openstack1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master brq688a0356-4f state UNKNOWN qlen 1000link/ether 00:0c:29:de:be:e1 brd ff:ff:ff:ff:ff:ffinet6 fe80::20c:29ff:fede:bee1/64 scope link valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000link/ether 52:54:00:e8:93:4e brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000link/ether 52:54:00:e8:93:4e brd ff:ff:ff:ff:ff:ff
6: tap35bde514-d6@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master brq6ef09648-5c state UP qlen 1000link/ether 5e:80:7d:9f:6f:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
7: vxlan-17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master brq6ef09648-5c state UNKNOWN qlen 1000link/ether 6e:6d:45:48:8e:cd brd ff:ff:ff:ff:ff:ff
8: brq6ef09648-5c: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP qlen 1000link/ether 5e:80:7d:9f:6f:04 brd ff:ff:ff:ff:ff:ffinet6 fe80::a800:beff:fe4e:74c5/64 scope link valid_lft forever preferred_lft forever
11: brq688a0356-4f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000link/ether 00:0c:29:de:be:e1 brd ff:ff:ff:ff:ff:ffinet 192.168.123.130/24 brd 192.168.123.255 scope global brq688a0356-4fvalid_lft forever preferred_lft foreverinet6 fe80::5869:75ff:fe71:baf2/64 scope link valid_lft forever preferred_lft forever
14: tapdc2df59d-2b@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brq688a0356-4f state UP qlen 1000link/ether 16:b4:10:95:8f:99 brd ff:ff:ff:ff:ff:ff link-netnsid 3
15: tap29f235e4-7b@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master brq6ef09648-5c state UP qlen 1000link/ether e6:b6:45:46:1d:c4 brd ff:ff:ff:ff:ff:ff link-netnsid 1
16: tapf4264f35-18@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brq688a0356-4f state UP qlen 1000link/ether 76:a8:70:eb:83:8d brd ff:ff:ff:ff:ff:ff link-netnsid 1

网络概况,两张网,一个是provider,一个是selfservice,各有一个子网,分别是172.168.10/24和192.168.123.0/24 

[root@openstack1 ~]# openstack network list
+--------------------------------------+-------------+--------------------------------------+
| ID                                   | Name        | Subnets                              |
+--------------------------------------+-------------+--------------------------------------+
| 688a0356-4f2b-4029-b49e-a11bbdbedf0b | provider    | 687b56a4-0672-451e-810c-ea3b895e3030 |
| 6ef09648-5ce7-4eb6-9aa2-735cb81567d3 | selfservice | 1bdfae33-5bcb-47ff-b3f0-aee2fc5e7f68 |
+--------------------------------------+-------------+--------------------------------------+
[root@openstack1 ~]# openstack subnet list
+--------------------------------------+-------------+--------------------------------------+------------------+
| ID                                   | Name        | Network                              | Subnet           |
+--------------------------------------+-------------+--------------------------------------+------------------+
| 1bdfae33-5bcb-47ff-b3f0-aee2fc5e7f68 | selfservice | 6ef09648-5ce7-4eb6-9aa2-735cb81567d3 | 172.16.1.0/24    |
| 687b56a4-0672-451e-810c-ea3b895e3030 | provider1   | 688a0356-4f2b-4029-b49e-a11bbdbedf0b | 192.168.123.0/24 |
+--------------------------------------+-------------+--------------------------------------+------------------+
[root@openstack1 ~]# openstack keypair list
+-------+-------------------------------------------------+
| Name  | Fingerprint                                     |
+-------+-------------------------------------------------+
| mykey | 2c:54:76:72:6f:e3:84:b9:ab:c1:35:04:1e:e3:83:a4 |
+-------+-------------------------------------------------+
[root@openstack1 ~]# openstack security group  list
+--------------------------------------+---------+------------------------+----------------------------------+------+
| ID                                   | Name    | Description            | Project                          | Tags |
+--------------------------------------+---------+------------------------+----------------------------------+------+
| 2035d43a-0e81-4257-bd23-13af431b9f91 | default | Default security group | 205ce8addd9444c893bd62244bcdae78 | []   |
| 5b1b71d7-5e24-4011-82ca-0ddabfd32e8a | default | Default security group |                                  | []   |
| e5f115d2-3c65-4bc5-89db-b9f725ee81db | default | Default security group | ae2263d201c0437788c85f1178b91dbe | []   |
+--------------------------------------+---------+------------------------+----------------------------------+------+
[root@openstack1 ~]# openstack security group rule  list
+--------------------------------------+-------------+-----------+------------+--------------------------------------+--------------------------------------+
| ID                                   | IP Protocol | IP Range  | Port Range | Remote Security Group                | Security Group                       |
+--------------------------------------+-------------+-----------+------------+--------------------------------------+--------------------------------------+
| 05d39ab4-839f-48f1-909f-61e8cddb4058 | None        | None      |            | None                                 | 2035d43a-0e81-4257-bd23-13af431b9f91 |
| 0efb90a0-7593-409a-896d-ce61132be4f6 | icmp        | 0.0.0.0/0 |            | None                                 | 2035d43a-0e81-4257-bd23-13af431b9f91 |
| 16d96ee8-5851-46c1-9a1d-c640d2a419bb | None        | None      |            | e5f115d2-3c65-4bc5-89db-b9f725ee81db | e5f115d2-3c65-4bc5-89db-b9f725ee81db |
| 18abe149-6bbb-498f-beaf-5cf74699e285 | tcp         | 0.0.0.0/0 | 22:22      | None                                 | 2035d43a-0e81-4257-bd23-13af431b9f91 |
| 202c2e77-6bc7-45ce-bea4-a6598170946c | None        | None      |            | 2035d43a-0e81-4257-bd23-13af431b9f91 | 2035d43a-0e81-4257-bd23-13af431b9f91 |
| 32b61bcc-44e3-4f9e-83ef-42835e76d182 | None        | None      |            | None                                 | 2035d43a-0e81-4257-bd23-13af431b9f91 |
| 4222bf5d-c763-491c-bc0c-9ae477344d61 | None        | None      |            | None                                 | 5b1b71d7-5e24-4011-82ca-0ddabfd32e8a |
| 53639084-0628-46cb-a1db-585fc794fe26 | None        | None      |            | e5f115d2-3c65-4bc5-89db-b9f725ee81db | e5f115d2-3c65-4bc5-89db-b9f725ee81db |
| 6937aca3-96a9-4e42-b44e-cb791886c096 | None        | None      |            | 2035d43a-0e81-4257-bd23-13af431b9f91 | 2035d43a-0e81-4257-bd23-13af431b9f91 |
| 722a4bc9-d361-4879-bc6d-84ea7fb158c2 | None        | None      |            | None                                 | 5b1b71d7-5e24-4011-82ca-0ddabfd32e8a |
| a4fff3b1-3839-4998-9637-dc3bc76544e9 | None        | None      |            | None                                 | e5f115d2-3c65-4bc5-89db-b9f725ee81db |
| bbab3d30-e181-4897-9d00-0f9bf2a94eda | None        | None      |            | 5b1b71d7-5e24-4011-82ca-0ddabfd32e8a | 5b1b71d7-5e24-4011-82ca-0ddabfd32e8a |
| d54fab49-428f-4008-9d24-0fd27b77a6af | None        | None      |            | None                                 | e5f115d2-3c65-4bc5-89db-b9f725ee81db |
| ec14bdd5-93bd-42cf-a123-ac060e1144c1 | None        | None      |            | 5b1b71d7-5e24-4011-82ca-0ddabfd32e8a | 5b1b71d7-5e24-4011-82ca-0ddabfd32e8a |
+--------------------------------------+-------------+-----------+------------+--------------------------------------+--------------------------------------+

cirros镜像是这个:

[root@openstack1 ~]# openstack image list
+--------------------------------------+---------+--------+
| ID                                   | Name    | Status |
+--------------------------------------+---------+--------+
| 1452b721-66da-4780-8bc1-84a7077950f3 | Centos7 | active |
| 4737972b-31e8-4bef-9ad0-e542b271dbf7 | back    | active |
| 867784df-9090-4ae0-ad25-564b941cc350 | cirros  | active |
| 2b527304-8fe6-4582-8451-8feba9a86cfb | new1    | active |
+--------------------------------------+---------+--------+

根据以上信息,创建一个以cirros镜像为底层的实例:

openstack server create --flavor m1.nano --image cirros --nic net-id=6ef09648-5ce7-4eb6-9aa2-735cb81567d3 --security-group 2035d43a-0e81-4257-bd23-13af431b9f91  --key-name mykey cirros1

创建一个浮动IP:

openstack floating ip create provider
####输出如下:
[root@openstack1 ~]# openstack floating ip create provider
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| created_at          | 2023-02-10T05:57:56Z                 |
| description         |                                      |
| dns_domain          | None                                 |
| dns_name            | None                                 |
| fixed_ip_address    | None                                 |
| floating_ip_address | 192.168.123.179                      |
| floating_network_id | 688a0356-4f2b-4029-b49e-a11bbdbedf0b |
| id                  | b41dc5e5-991d-4458-8686-a2a2fbc55a71 |
| name                | 192.168.123.179                      |
| port_details        | None                                 |
| port_id             | None                                 |
| project_id          | 205ce8addd9444c893bd62244bcdae78     |
| qos_policy_id       | None                                 |
| revision_number     | 0                                    |
| router_id           | None                                 |
| status              | DOWN                                 |
| subnet_id           | None                                 |
| tags                | []                                   |
| updated_at          | 2023-02-10T05:57:56Z                 |
+---------------------+--------------------------------------+

绑定浮动IP到实例:

openstack server add floating ip cirros1 192.168.123.164

此时,ssh可以利用这个浮动IP登陆(使用了公钥证书登陆):

[root@openstack1 ~]# ssh cirros@192.168.123.164
$ 

 目前为止,其它的官网镜像并没有实例化组网成功,只有cirros可以,具体原因也不太清楚,主要是绑定的浮动IP找不到路由、

OK,openstack的网络感觉还是单独开一篇详细说说。

相关文章:

云计算|OpenStack|社区版OpenStack安装部署文档(十一--- 如何获取镜像---Rocky版)

前言&#xff1a; 前面我们使用虚拟机搭建了一个openstack集群&#xff0c;也就是在VM虚拟机的基础上模拟了一个简单的基于openstack社区版Rocky的私有云&#xff0c;但&#xff0c;不管任何部署安装工作&#xff0c;最后其实都是需要有实际的应用的&#xff0c;也就是常说的实…...

UmiJS学习

UmiJS4学习笔记起步官网学习&#xff1a;https://umijs.org/开发环境Umi.js 需要使用 Node.js来进行开发&#xff0c;因此请先确保电脑已经安装了 Node.js 且版本在 14 以上。安装pnpm&#xff1a;npm install pnpm -g创建项目Umi 官方提供了一个脚手架 &#xff0c;可以轻松快…...

Leetcode:322. 零钱兑换(C++)

目录 问题描述&#xff1a; 实现代码与解析&#xff1a; 动态规划&#xff08;完全背包&#xff09;&#xff1a; 原理思路&#xff1a; 问题描述&#xff1a; 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金…...

C经典小游戏之扫雷

编译环境&#xff1a;VS022 目录 1.算法思路 2.代码模块 2.1 game.h 2.2 game.cpp 2.3 test.cpp 3.重点分析 4.金句省身 1.算法思路 主要采用二维数组进行实现&#xff0c;设置两个二维数组&#xff0c;一个打印结果&#xff0c;即为游戏界面显示的效果&#xff0c;一个用…...

第十节 使用设备树插件实现RGB 灯驱动

Linux4.4 以后引入了动态设备树&#xff08;Dynamic DeviceTree&#xff09;&#xff0c;我们这里翻译为“设备树插件”。设备树插件可以理解为主设备树的“补丁”它动态的加载到系统中&#xff0c;并被内核识别。例如我们要在系统中增加RGB 驱动&#xff0c;那么我们可以针对R…...

【LeetCode】公交路线 [H](宽度优先遍历)

815. 公交路线 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给你一个数组 routes &#xff0c;表示一系列公交线路&#xff0c;其中每个 routes[i] 表示一条公交线路&#xff0c;第 i 辆公交车将会在上面循环行驶。 例如&#xff0c;路线 routes[0] [1, 5, 7] 表示第 …...

报表生成器 FastReport .Net 用户指南 2023(十):Band的属性

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案&#xff0c;使用FastReport .NET可以创建独立于应用程序的.NET报表&#xff0c;同时FastReport .Net支持中文、英语等14种语言&#xff0c;可以让你的产品保证真正的国际性。 FastReport.NET官方版…...

DAMA数据管理知识体系指南之文档和内容管理

第10章 文档和内容管理 10.1 简介 文档和内容管理是对存储在关系数据库以外的信息的采集、存储、访问以及使用的控制活动。文档和内容管理的侧重点在完整性和访问控制上。因此&#xff0c;它与关系数据库的数据操作管理大致相同。由于多数非结构化数据与存储在结构化文件中的…...

C++入门:数据结构

C/C 数组允许定义可存储相同类型数据项的变量&#xff0c;但是结构是 C 中另一种用户自定义的可用的数据类型&#xff0c;它允许您存储不同类型的数据项。结构用于表示一条记录&#xff0c;假设您想要跟踪图书馆中书本的动态&#xff0c;您可能需要跟踪每本书的下列属性&#x…...

C语言实现烟花表白,内含源码!!

虽然现在看烟花有一定难度&#xff0c;但代码式烟花可以随时随地看&#xff01; 烟花的代码很多&#xff0c;实际上是可以用 Python、HTML5 等语言写烟花&#xff0c;但今天主要想和大家分享用C语言写的烟花代码&#xff0c;非常细致和实用。 同学们一定要亲自敲一遍&#xf…...

虚拟机安装CentOS 7(带界面)

目录 一、虚拟机安装CentOS 7&#xff08;带界面&#xff09; 1、打开下好的VMware&#xff0c;点击创建虚拟机 2、下一步 3、点击下一步 4、选择Linux&#xff0c;ContOS7&#xff0c;点击下一步 5、修改虚拟机名称和路径 6、下一步 7、点击自定义硬件 8、设置虚拟机大…...

Java测试——selenium具体操作

selenium的前置准备工作可以参考我之前的博客&#xff1a;Java测试——selenium的安装与使用教程 这篇博客讲解一下selenium的常见操作 先创建driver ChromeDriver driver new ChromeDriver();输入网址 driver.get("https://www.baidu.com");常见操作 查找元素…...

电子器件系列32:逻辑与门芯片74LS11

一、编码规则 先看看这个代码的意思&#xff1a;74LS11 74是一个系列&#xff08;74 表示为工作温度范围&#xff0c;74: 0 ~ 70度。&#xff09; ls的意思就是工艺类型&#xff08;Bipolar(双极)工艺&#xff09; 11是代码 什么是74系列逻辑芯片&#xff1f; - 知乎 什么是…...

LeetCode-101. 对称二叉树

目录题目分析递归法题目来源 101. 对称二叉树 题目分析 首先想清楚&#xff0c;判断对称二叉树要比较的是哪两个节点&#xff0c;要比较的可不是左右节点&#xff01; 对于二叉树是否对称&#xff0c;要比较的是根节点的左子树与右子树是不是相互翻转的&#xff0c;理解这一…...

使用intlinprog求解指派问题MATLAB代码分享

% 输入指派矩阵C [3 8 2 10 3;8 7 2 9 7;6 4 2 7 5;8 4 2 3 5;9 10 6 9 10];f C(:); %生成一个列向量&#xff0c;作为目标函数系数&#xff0c;matlab默认以列排序[m,n] size(C);Aeq zeros(2*n,n*n); %2*n个等式约束&#xff0c;n*n个变量for i 1:n %这里先生成的是后5个…...

Spark On YARN时指定Python版本

坑很多&#xff0c;直接上兼容性最佳的命令&#xff0c;将python包上传到hdfs或者file:/home/xx/(此处无多余的/) # client 模式 $SPARK_HOME/spark-submit \ --master yarn \ --deploy-mode client \ --num-executors 2 \ --conf "spark.yarn.dist.archives<Python包…...

[数据库]库的增删改查

●&#x1f9d1;个人主页:你帅你先说. ●&#x1f4c3;欢迎点赞&#x1f44d;关注&#x1f4a1;收藏&#x1f496; ●&#x1f4d6;既选择了远方&#xff0c;便只顾风雨兼程。 ●&#x1f91f;欢迎大家有问题随时私信我&#xff01; ●&#x1f9d0;版权&#xff1a;本文由[你帅…...

Wine零知识学习1 —— 介绍

一、什么是Wine Wine是“Wine Is Not an Emulator” 的首字母缩写&#xff0c;是一个能够在多种POSIX-compliant操作系统&#xff08;诸如Linux、macOS及BSD等&#xff09;上运行 Windows 应用的兼容层。Wine不像虚拟机或者模拟器那样模仿内部的Windows逻辑&#xff0c;而是將…...

设计模式--建造者模式 builder

设计模式--建造者模式 builder&#xff09;建造者模式简介建造者模式--小例子&#xff08;电脑购买&#xff09;1.产品类2.抽象构建者3.实体构建类4.指导者类5.客户端测试类小结建造者模式简介 建造者模式有四个角色,概念划分如下&#xff1a; Product &#xff1a; 产品类&a…...

终于周末啦,继续来总结一下Python的一些知识点啦

目录 Python概念梳理 常见概念梳理 Python经典判断题 判断题 选择题 Python概念梳理 常见概念梳理 Python中&#xff0c;不仅仅变量的值是可以变化的&#xff0c;类型也是可以随时变化的 1、Python的变量必须初始化否则提示 is not defined 2、if、while中定义的变量在…...

CUDA By Example(八)——流

文章目录页锁定主机内存可分页内存函数页锁定内存函数CUDA流使用单个CUDA流使用多个CUDA流GPU的工作调度机制高效地使用多个CUDA流遇到的问题(未解决)页锁定主机内存 在之前的各个示例中&#xff0c;都是通过 cudaMalloc() 在GPU上分配内存&#xff0c;以及通过标准的C库函数 …...

02- pandas 数据库 (数据库)

pandas 数据库重点: pandas 的主要数据结构: Series (一维数据)与 DataFrame (二维数据)。 pd.DataFrame(data np.random.randint(0,151,size (5,3)), # 生成pandas数据 index [Danial,Brandon,softpo,Ella,Cindy], # 行索引 …...

less常用语法总结

CSS预处理器 CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器;没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量…...

DHCP Relay中继实验

DHCP Relay实验拓扑图设备配置结果验证拓扑图 要求PC1按照地址池自动分配&#xff0c;而PC要求分配固定的地址&#xff0c;网段信息已经在图中进行标明。 设备配置 AR1&#xff1a; AR1作为DHCP Server基本配置跟DHCP Server没区别&#xff0c;不过要加一条静态路由&#xff…...

“1+1>2”!《我要投资》与天际汽车再度“双向奔赴”!

文|螳螂观察 作者| 图霖 胡海泉老师重磅回归、创始人现场真情告白……新一季的《我要投资》&#xff0c;不仅维持了往季在专业度上的高水准&#xff0c;也贡献了不少高话题度的“出圈”时刻。 在竞争激烈的的综艺节目竞技场&#xff0c;能举办数季的节目&#xff0c;往往都是…...

【分享】订阅金蝶KIS集简云连接器同步OA付款审批数据至金蝶KIS

方案简介 集简云基于钉钉连接平台完成与钉钉的深度融合&#xff0c;实现钉钉OA审批与数百款办公应用软件&#xff08;如金蝶KIS、用友等&#xff09;的数据互通&#xff0c;让钉钉的OA审批流程与企业内部应用软件的采购、付款、报销、收款、人事管理、售后工单、立项申请等环节…...

dubbo服务消费

dubbo在服务消费时调用的方法栈比较深&#xff0c;所以得一边看一边记&#xff0c;还是比较费力的。在dubbo服务发现中&#xff0c;我们看到通过ReferenceConfig#get()返回的是要调用接口的代理对象&#xff0c;因此通过接口的代理对象调用方法时是调用InvocationHandler(Invok…...

Python调用API接口,实现人脸识别

人生苦短&#xff0c;我用Python 在开始之前&#xff0c;先问问大家&#xff1a; 什么是百度Aip模块&#xff1f; 百度AI平台提供了很多的API接口供开发者快速的调用运用在项目中 本文写的是使用百度AI的**在线接口SDK模块&#xff08;baidu-aip&#xff09;**进行实现人脸识…...

2月10日刷题总结

编辑距离题目描述设 AA 和 BB 是两个字符串。我们要用最少的字符操作次数&#xff0c;将字符串 AA 转换为字符串 BB。这里所说的字符操作共有三种&#xff1a;删除一个字符&#xff1b;插入一个字符&#xff1b;将一个字符改为另一个字符。A, BA,B 均只包含小写字母。输入格式第…...

C++学习/温习:新型源码学编程(三)

写在前面(祝各位新春大吉&#xff01;兔年如意&#xff01;) 【本文持续更新中】面向初学者撰写专栏&#xff0c;个人原创的学习C/C笔记&#xff08;干货&#xff09;所作源代码输出内容为中文&#xff0c;便于理解如有错误之处请各位读者指正请读者评论回复、参与投票&#xf…...

怎么做网站信息/全网关键词云查询

间隔了一周时间没写了&#xff0c;由于今年的股势行情貌似不错的样子&#xff0c;对于对股市完全不懂的我也在蠢蠢欲动&#xff0c;所以最近一周业余时间在“不务正业”-----学习炒股。发现学习它其实挺费神的&#xff0c;满脑子都是走势图&#xff0c;而且是神经有点受刺激的感…...

wordpress获取子菜单/企业排名优化公司

Qt creator使用clang-format优化代码风格...

网页制作一个网站八个页面咋做/如何做品牌营销

郝萌主倾心贡献&#xff0c;尊重作者的劳动成果。请勿转载。假设文章对您有所帮助&#xff0c;欢迎给作者捐赠&#xff0c;支持郝萌主&#xff0c;捐赠数额任意&#xff0c;重在心意^_^ 我要捐赠: 点击捐赠Cocos2d-X源代码下载&#xff1a;点我传送游戏官方下载&#xff1a;htt…...

个人网站建设与维护/推广一般收多少钱

简介 为了方便开发人员可视化配置gpio&#xff0c;MTK提供了DCT工具&#xff0c;全称是Driver Customization Tool&#xff0c;该工具导入dws文件来产生驱动代码&#xff0c;它是个exe可执行程序&#xff0c;目前只支持在windows下运行&#xff0c;在ubuntu下运行可借助于wine…...

旅游网站专业化建设的要点/产品网络营销策划

基于窗体的身份验证是一项 ASP.NET 身份验证服务&#xff0c;它使应用程序能够提供自己的登录用户界面并进行自己的凭据验证。ASP.NET 对用户进行身份验证&#xff0c;将未经身份验证的用户重定向到登录页&#xff0c;并执行所有必要的 Cookie 管理。这种身份验证是许多网站使用…...

微信小程序开发注册/seo排名是什么意思

/*游标的简单学习*/一.概念&#xff1a;1.游标&#xff1a;游标是用于在存储过程中迭代SELECT查询出的数据。2.什么是游标&#xff1f;①游标(cursor)是系统为用户开设的一个数据缓冲区&#xff0c;存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标…...