前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转企业云计算平台系列(十):Openstack 基础组件使用介绍

玩转企业云计算平台系列(十):Openstack 基础组件使用介绍

作者头像
民工哥
发布2024-01-18 15:53:24
2220
发布2024-01-18 15:53:24
举报

Glance服务的基本使用

创建镜像

CirrOS是一个极小的云操作系统,可以使用这个小的操作系统来进行Glance服务组件的操作练习。将提供的cirros-0.3.4-x86_64-disk.img镜像上传到controller节点的root目录下面。

将镜像上传至controller节点后,通过file命令查看镜像文件信息。

代码语言:javascript
复制
[root@controller ~]# file cirros-0.3.4-x86_64-disk.img 
cirros-0.3.4-x86_64-disk.img: QEMU QCOW Image (v2), 41126400 bytes
查看创建镜像的命令格式

参数说明

代码语言:javascript
复制
–disk-format  #镜像格式  
–container-format  #镜像在其他项目中的可见性 
–progress  #显示上传镜像的进度  
–file  #选择本地镜像文件 
–name  #上传后镜像的名称

使用镜像cirros-0.3.4-x86_64-disk.img通过命令上传镜像至OpenStack中。

代码语言:javascript
复制
[root@controller ~]# glance image-create --name cirrosA --disk-format qcow2 --container-format bare --progress --file cirros-0.3.4-x86_64-disk.img 
管理镜像

通过命令可以在OpenStack平台中查看当前Glance中所上传的镜像名称。

查看镜像的详细信息

修改镜像

可以使用 glance image-update 更新镜像信息。

命令格式如下

参数说明

代码语言:javascript
复制
–min-disk  #镜像启动最小硬盘大小
–name  #镜像名称
–disk-format  #镜像格式
–min-ram  #镜像启动最小内存大小
–container-format  #镜像在项目中可见性

如果需要改变镜像启动硬盘最低要求值(min-disk)1G,(min-ram)1024M,min-disk默认单位为G,min-ram默认单位为M。

使用glance image-update 更新镜像信息。

删除镜像

使用glance image-delete 删除上传至openstack平台中的镜像。

命令格式如下

只需要在命令后跟上镜像ID即可

更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

Nova服务的基本使用

创建flavor类型

flavor类型为Openstack在创建云主机时需要提供的云主机大小类型,云主机的资源大小可使用不同的flavor来定义。

命令格式如下

使用命令创建一个flavor,10G的硬盘大小,512内存,1颗vCPU,ID为10,名称为flavor1。

查看flavor类型

使用 openstack flavor list 命令查看flavor类型列表。

使用 openstack flavor show 命令查看flavor类型的详细信息。

命令格式如下

查看刚刚创建的flavor1的详细信息

访问安全组

访问安全组为是OpenStack提供给云主机的一个访问策略控制组,通过安全组中的策略可以控制云主机的出入访问规则。

查看访问安全组

使用命令 openstack security group list 可以查看当前所创建的访问安全组列表。

default 为Openstack平台自带的安全组,通过命令可以查看安全组中的安全规则。

在安全组规则列表中,不能看出每条规则的具体策略,通过使用命令 openstack security group rule show 查看任意规则的详细信息。

创建访问安全组

创建一个新的安全组,命令格式如下。

使用命令创建新的安全组规则,命令如下:

删除访问安全组

可以使用命令删除不使用的访问安全组

添加安全组规则

在默认安全组中添加三条需要使用的访问规则,使用 openstack security group rule create 命令,命令格式如下:

在“defualt”安全组中添加一条策略,从入口方向放行所有ICMP规则。

查看“default”安全组中所有的规则列表信息。

启动虚拟机
查询可用镜像

上传镜像,使用 openstack image list 命令来查询当前可用镜像列表。

代码语言:javascript
复制
[root@controller ~]# glance image-create --name cirrosB --disk-format qcow2 --container-format bare --file cirros-0.3.4-x86_64-disk.img 

使用 openstack flavor list 命令查看可用的类型。

创建网络和子网

使用 openstack network create 命令创建网络信息。

代码语言:javascript
复制
–provider-physical-network #将提供者网络“provider”绑定在物理网卡上
–provider-network-type  #提供者网络“provider”的网络类型
代码语言:javascript
复制
[root@controller ~]# openstack network create --provider-network-type vlan --provider-physical-network provider --provider-segment 200 network-vlan

使用 openstack subnet create 创建子网

代码语言:javascript
复制
[root@controller ~]# openstack subnet create --network network-vlan --allocation-pool start=192.168.200.100,end=192.168.200.200 --gateway 192.168.200.1 --subnet-range 192.168.200.0/24 subnet-vlan
管理虚拟机
查看虚拟机

使用 openstack server list 命令查看虚拟机列表信息。

代码语言:javascript
复制
[root@controller ~]# openstack server list
+--------------------------------------+-------------+--------+------------------------------+---------+---------+
| ID                                   | Name        | Status | Networks                     | Image   | Flavor  |
+--------------------------------------+-------------+--------+------------------------------+---------+---------+
| 5cfcde24-b785-45ac-9f07-9390d827a6cc | cirros-test | ACTIVE | network-vlan=192.168.200.164 | cirrosB | flavor1 |
+--------------------------------------+-------------+--------+------------------------------+---------+---------+

使用命令可以查看虚拟机的具体信息,包括使用的安全组、flavor以及网络信息,通过命令“openstack server show”进行查看。

操作虚拟机

可以通过命令操作虚拟机,对虚拟机进行关机、开机、重启等操作。关闭虚拟机操作。

代码语言:javascript
复制
[root@controller ~]# openstack server stop cirros-test
[root@controller ~]# openstack server start cirros-test
[root@controller ~]# openstack server reboot cirros-test

更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

Cinder服务基本使用

块存储服务
创建镜像和网络
代码语言:javascript
复制
[root@controller ~]# source /etc/keystone/admin-openrc.sh 
[root@controller ~]# glance image-create --name cirros11 --disk-format qcow2 --container-format bare --file cirros-0.3.4-x86_64-disk.img 
代码语言:javascript
复制
[root@controller ~]# openstack network create --provider-network-type vlan --provider-physical-network provider --provider-segment 230 net-vlan1
代码语言:javascript
复制
[root@controller ~]# openstack subnet create --network net-vlan1 --allocation-pool start=192.168.200.20,end=192.168.200.30  --gateway 192.168.200.1 --subnet-range 192.168.200.0/24 subnet-vlan1
修改OpenStack平台

修改Nova服务配置文件,设置参数 virt_type=qemu。

创建云主机
代码语言:javascript
复制
[root@controller ~]# openstack server create --image cirros11 --flavor 2 --network net-vlan1 cirros-test2
查看Cinder服务状态

使用 openstack volume service list 查询块存储服务状态。

创建块存储

使用 openstack volume create 创建块存储。命令格式如下:

通过命令创建块存储,大小为2G,名称为 volume。

查看块存储

使用 openstack volume list 命令查看块存储列表信息。

通过openstack volume show 命令查看某一块存储的详细信息。

挂载云硬盘

块存储设备创建成功后,可以在openstack 上将该设备挂载至云主机上,可以作为一块云硬盘来使用。给云主机添加一块磁盘。

将块存储挂载至云主机的命令为 openstack server add volume。命令格斯如下:

使用命令将刚刚创建的 volume 块存储添加至云主机 cirros-test2 上。

代码语言:javascript
复制
[root@controller ~]# openstack server add volume cirros-test2 volume

使用命令查看块存储列表信息

扩展卷
扩展卷大小

创建完卷后可能因为需求变更,需要对已有的卷进行扩容操作,这时需要用到 openstack volume set 抿了修改卷的信息。命令格式如下:

分离卷,通过命令将 volume 卷大小从2G扩容至3G,使用–size 参数可修改已创建好的卷大小。

验证卷大小

将扩容后的卷 volume 挂载至云主机 cirros-test2 上。

可以看到卷 volume 挂载至云主机 cirros-test2 上盘符的名称为 /dev/vdb 使用 virsh 工具登录云主机 输入命令 lsblk。查看云硬盘大小是否 3G

可以看到显示盘符 vdb 大小为 3G 此时云硬盘已经扩展完成。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

Swift服务的基本使用

对象存储服务
查看服务状态

在openstack平台中使用 swift stat 查看对象存储服务的状态。

代码语言:javascript
复制
[root@controller ~]# swift stat
               Account: AUTH_2dd8f147022949548b9bdf2f2eb17790
            Containers: 0
               Objects: 0
                 Bytes: 0
       X-Put-Timestamp: 1675591940.80565
           X-Timestamp: 1675591940.80565
            X-Trans-Id: tx3587d8646d084f19b8d26-0063df8104
          Content-Type: text/plain; charset=utf-8
X-Openstack-Request-Id: tx3587d8646d084f19b8d26-0063df8104
创建容器

通过 openstack container create 命令创建容器,命令格式如下:

代码语言:javascript
复制
[root@controller ~]# openstack container create --help
usage: openstack container create [-h] [-f {csv,json,table,value,yaml}]
                                  [-c COLUMN] [--max-width <integer>]
                                  [--fit-width] [--print-empty] [--noindent]
                                  [--quote {all,minimal,none,nonnumeric}]
                                  [--sort-column SORT_COLUMN]
                                  <container-name> [<container-name> ...]

使用命令创建容器 名称为 swift-test

代码语言:javascript
复制
[root@controller ~]# openstack container create container1
+---------------------------------------+------------+------------------------------------+
| account                               | container  | x-trans-id                         |
+---------------------------------------+------------+------------------------------------+
| AUTH_2dd8f147022949548b9bdf2f2eb17790 | container1 | tx0b85327a7c22408383b82-0063df821a |
+---------------------------------------+------------+------------------------------------+
查看容器

使用命令查询容器列表信息

代码语言:javascript
复制
[root@controller ~]# openstack container list
+------------+
| Name       |
+------------+
| container1 |
+------------+

使用命令查询容器详细信息

代码语言:javascript
复制
[root@controller ~]# openstack container show container1
+--------------+---------------------------------------+
| Field        | Value                                 |
+--------------+---------------------------------------+
| account      | AUTH_2dd8f147022949548b9bdf2f2eb17790 |
| bytes_used   | 0                                     |
| container    | container1                            |
| object_count | 0                                     |
+--------------+---------------------------------------+
创建对象

创建完容器后,可以创建对象,通过使用命令 openstack object create 在对象中创建对象,命令格式如下。

代码语言:javascript
复制
[root@controller ~]# openstack object create --help
usage: openstack object create [-h] [-f {csv,json,table,value,yaml}]
                               [-c COLUMN] [--max-width <integer>]
                               [--fit-width] [--print-empty] [--noindent]
                               [--quote {all,minimal,none,nonnumeric}]
                               [--sort-column SORT_COLUMN] [--name <name>]
                               <container> <filename> [<filename> ...]

在使用命令创建对象前,需要将上传后的目录结构在本地创建,在本地创建名为 test 的目录/root/test,将/root/anaconda-ks.cfg 文件复制至 /root/test 目录中。

代码语言:javascript
复制
[root@controller ~]# mkdir test
[root@controller ~]# cp -rvf anaconda-ks.cfg test/
"anaconda-ks.cfg" -> "test/anaconda-ks.cfg"
[root@controller ~]# ls test/
anaconda-ks.cfg

创建对象的过程也是向容器中上传文件,使用命令创建 test/anaconda-ks.cfg 和 anaconda-ks.cfg 对象。

代码语言:javascript
复制
[root@controller ~]# openstack object create container1 test/anaconda-ks.cfg 
+----------------------+------------+----------------------------------+
| object               | container  | etag                             |
+----------------------+------------+----------------------------------+
| test/anaconda-ks.cfg | container1 | d36057f078895b4ce261e5a2abddf671 |
+----------------------+------------+----------------------------------+
查看对象

创建完对象后,通过命令查看容器中对象信息,使用命令“openstack object list” 查看对象信息,命令格式如下:

代码语言:javascript
复制
[root@controller ~]# openstack object list --help
usage: openstack object list [-h] [-f {csv,json,table,value,yaml}] [-c COLUMN]
                             [--max-width <integer>] [--fit-width]
                             [--print-empty] [--noindent]
                             [--quote {all,minimal,none,nonnumeric}]
                             [--sort-column SORT_COLUMN] [--prefix <prefix>]
                             [--delimiter <delimiter>] [--marker <marker>]
                             [--end-marker <end-marker>]
                             [--limit <num-objects>] [--long] [--all]
                             <container>

使用命令查看容器 container1 中所有对象信息。

代码语言:javascript
复制
[root@controller ~]# openstack object list container1
+----------------------+
| Name                 |
+----------------------+
| test/anaconda-ks.cfg |
+----------------------+

通过查询命令可以看出,在通过命令上传对象时,本地路径即为容器内对象路径。使用 openstack object show 查询 container1 容器中 test/anaconda-ks.cfg 对象的详细信息。

代码语言:javascript
复制
[root@controller ~]# openstack object show container1 test/anaconda-ks.cfg 
+----------------+---------------------------------------+
| Field          | Value                                 |
+----------------+---------------------------------------+
| account        | AUTH_8477005613924107b281ef0292377fff |
| container      | container1                            |
| content-length | 1537                                  |
| content-type   | application/octet-stream              |
| etag           | d36057f078895b4ce261e5a2abddf671      |
| last-modified  | Tue, 07 Feb 2023 08:18:53 GMT         |
| object         | test/anaconda-ks.cfg                  |
+----------------+---------------------------------------+
下载对象

存储在容器中的对象,可以在需要使用时,通过 openstack object save 命令进行下载至本地,命令格式如下:

代码语言:javascript
复制
[root@controller ~]# openstack object save --help
usage: openstack object save [-h] [--file <filename>] <container> <object>

Save object locally

使用命令 将 container1 容器中的 test/anaconda-ks.cfg 对象下载至本地/opt/目录下。

代码语言:javascript
复制
[root@controller opt]# openstack object save container1 test/anaconda-ks.cfg
[root@controller opt]# ls test/
anaconda-ks.cfg
删除对象

使用 openstack object delete 命令删除容器内的对象,命令格式如下:

代码语言:javascript
复制
[root@controller opt]# openstack object delete --help
usage: openstack object delete [-h] <container> <object> [<object> ...]

使用删除容器命令删除 container1 中的对象 test/anaconda-ks.cfg。

代码语言:javascript
复制
[root@controller opt]# openstack object delete container1 test/anaconda-ks.cfg 
[root@controller opt]# openstack object list container1
删除容器

使用 openstack container delete 命令删除容器,命令格式如下:

代码语言:javascript
复制
[root@controller test]# openstack container delete --help
usage: openstack container delete [-h] [--recursive]
                                  <container> [<container> ...]

使用删除命令删除容器 container1

代码语言:javascript
复制
[root@controller opt]# openstack container delete container1
[root@controller opt]# openstack container list
分片存储案例
创建容器

使用命令创建一个容器 test 并查看容器的状态信息。

代码语言:javascript
复制
[root@controller opt]# openstack container create container2
+---------------------------------------+------------+------------------------------------+
| account                               | container  | x-trans-id                         |
+---------------------------------------+------------+------------------------------------+
| AUTH_8477005613924107b281ef0292377fff | container2 | tx42b3d14b9e3d453b9efb0-0063e20dc4 |
+---------------------------------------+------------+------------------------------------+
[root@controller opt]# swift stat container2
               Account: AUTH_8477005613924107b281ef0292377fff
             Container: container2
               Objects: 0
                 Bytes: 0
              Read ACL:
             Write ACL:
               Sync To:
              Sync Key:
         Accept-Ranges: bytes
      X-Storage-Policy: Policy-0
         Last-Modified: Tue, 07 Feb 2023 08:37:26 GMT
           X-Timestamp: 1675759045.17190
            X-Trans-Id: txec129673c23344ed998f2-0063e20dcd
          Content-Type: application/json; charset=utf-8
X-Openstack-Request-Id: txec129673c23344ed998f2-0063e20dcd
上传镜像并分片存储

上传镜像,并使用命令上传至test容器中,进行分片存储,每个片段大小为10M。

代码语言:javascript
复制
[root@controller test]# swift upload container2 -S 10000000 cirros-0.3.4-x86_64-disk.img 
cirros-0.3.4-x86_64-disk.img segment 1
cirros-0.3.4-x86_64-disk.img segment 0
cirros-0.3.4-x86_64-disk.img

查看cirros镜像的存储路径

代码语言:javascript
复制
[root@controller test]# swift stat container2 cirros-0.3.4-x86_64-disk.img 
               Account: AUTH_8477005613924107b281ef0292377fff
             Container: container2
                Object: cirros-0.3.4-x86_64-disk.img
          Content Type: application/octet-stream
        Content Length: 13287936
         Last Modified: Tue, 07 Feb 2023 08:47:09 GMT
                  ETag: "cca17a689bfcd70118fabc833af0d033"
              Manifest: container2_segments/cirros-0.3.4-x86_64-disk.img/1675759156.181087/13287936/10000000/
            Meta Mtime: 1675759156.181087
         Accept-Ranges: bytes
           X-Timestamp: 1675759628.40876
            X-Trans-Id: tx5c5baf471ab3468cb2a57-0063e2109e
X-Openstack-Request-Id: tx5c5baf471ab3468cb2a57-0063e2109e

查看存储路径中的数据片

代码语言:javascript
复制
[root@controller test]# swift list container2_segments
cirros-0.3.4-x86_64-disk.img/1675759156.181087/13287936/10000000/00000000
cirros-0.3.4-x86_64-disk.img/1675759156.181087/13287936/10000000/00000001

可以看到,cirros镜像在上传至Swift对象存储中被分片存储了,单个存储篇的大小为 10M,因为镜像大小为16M左右,所以分成了两个存储片。

链接:https://blog.csdn.net/qq_52089863/article /details/128922055

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Glance服务的基本使用
    • 创建镜像
      • 管理镜像
      • Nova服务的基本使用
        • 创建flavor类型
          • 查看flavor类型
            • 访问安全组
              • 启动虚拟机
                • 管理虚拟机
                • Cinder服务基本使用
                  • 块存储服务
                    • 扩展卷
                    • Swift服务的基本使用
                      • 对象存储服务
                        • 分片存储案例
                        相关产品与服务
                        容器服务
                        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档