OpenStack版本:Ussuri发布亮点

前言

又到了半年一次的OpenStack的发布日期,至今发布已有21个版本,如今已经更加稳定,更加强健。近几年,docker,k8s,serverless等新技术风头之盛可谓一时无两,而OpenStack关注点不再是谁是龙头,谁才是最受欢迎的技术。哪怕多次被人唱衰,依然按部就班往前走。

OpenStack不受任何一家厂商的绑定,灵活自由。当前可以可以认为云解决方案的首选方案之一。当前83%的私有云用户转向OpenStack,因为它使用户摆脱了对单个公共云的过多依赖。实际上,OpenStack用户经常依赖于公共云,例如Amazon Web Services(AWS)(44%),Microsoft Azure(28%)或Google Compute Engine(GCP)(24%)。58%的用户基础架构是由OpenStack驱动的。

此外,某些用户可能看不到OpenStack的影响力的一个原因是,至少有一半的OpenStack部署在中国。那里,华为(占28%)和EasyStack(占22%)。在其市场之外,占20%的Red Hat,占16%的Canonical和占 5%的Mirantis是主导者。SUSE与其他的混合在一起差不多3%左右。

为了保持这种进步,最广泛部署的开源云基础架构软件的第21版Ussuri将在5月13日发布。本次发布要比预期的要晚一些。

OpenStack代码贡献情况如 stackalytics(https://www.stackalytics.com/)。

Cinder-块存储服务

Cinder接口提供了一些标准功能,允许创建和附加块设备到虚拟机,如“创建卷”,“删除卷”和“附加卷”。还有更多高级的功能,支持扩展容量的能力,快照和创建虚拟机镜像克隆。

Notes:

  • 当前功能的改进,例如,为卷类型设置最小和最大的功能;使用时间比较运算符来过滤卷列表的能力。
  • 支持Glance多存储和镜像数据同步时,上传一个卷到镜像服务。
  • 添加了一些新的后端驱动程序,以及对当前的驱动程序增加了多种特性。

Cyborg - 硬件管理加速器

Cyborg(以前称为Nomad)旨在为加速资源(即FPGA,GPU,SoC, NVMe SSD,DPDK/SPDK,eBPF/XDP …)提供通用管理框架

Notes:

  • 用户现在可以启动由CyBrg管理的加速器的实例,因为Nova-Cyborg integration已经完成。见加速器操作指南查找支持哪些实例操作。
  • 已经实现了新的API,以列出由Cyborg管理的设备,并且通常可以查看和管理加速器的清单。
  • CyBrg为在V2API中采用microversions提供未来版本的兼容性提供了基础。
  • CyBrg客户端现在基于OpenStack SDK和支持最多的v2版本API。
  • 通过增加更多的单元/功能测试和减少技术复杂度来提高整体质量。

Glance - 镜像服务

Glance(OpenStack Image Service)是一个提供发现,注册,和下载镜像的服务。Glance 提供了虚拟机镜像的集中存储。通过 Glance 的 RESTful API,可以查询镜像元数据、下载镜像。虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(比如 OpenStack Swift)。

Notes:

  • 增强了多个商店功能,用户现在可以在多个商店中导入单个镜像,在多个商店中复制现有的镜像并从单个商店中删除镜像。
  • 新的导入插件可解压缩镜像
  • 再次引入了S3驱动程序以进行存储

Horizon - 图形化管理服务

Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizon 所提供的 DashBoard 服务 , 管理员可以使用通过 WEB UI 对 Openstack 整体云环境进行管理 , 并可直观看到各种操作结果与运行状态。

Notes:

  • 此版本主要从维护的角度关注错误修复和改进,包括对旧功能的弃用、弃用功能的清除、集成测试覆盖率的改进、迁移到单元测试中的模拟使用等等。
  • Horizon和所有Horizon插件现在都支持Django 2.2,这是Django唯一受支持的LTS。 Django是Horizon依赖的框架。请注意,不再支持python 2.7,我们已经进入python3时代。
  • 在Keystone模块中实现了几个功能:允许用户更改过期密码,包括用户面板中的第一登录、密码锁选项,以及对应用程序凭据的访问规则的支持。

Ironic - 裸金属服务

Ironic包含一个API和多个插件,用于安全性和容错性地提供物理服务器。它可以和nova结合被使用为hypervisor驱动,或者用bifrost使用为独立服务。默认情况下,它会使用PXE和IPMI去与裸金属机器去交互。Ironic也支持使用供应商的插件而实现额外的功能。

Notes:

  • 支持范围内省的规则,该规则允许每个节点子集具有(并保留)规则,例如不同的硬件交付。
  • 支持硬件淘汰工作流程(retirement workflow),以实现托管云中硬件退役的自动化。
  • 多租户概念和附加策略选项可供非管理员使用。
  • Ironic及其远程代理之间交互的身份验证得到了补充,从而可以在不受信任的网络上进行部署。
  • UEFI和设备选择现在可用于软件RAID。

Keystone - 身份认证服务

Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证、服务访问规则和服务令牌功能的组件。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理。Keystone 类似一个服务总线, 或者说是整个 Openstack 框架的注册表,OpenStack 服务通过 Keystone 来注册其 Endpoint(服务访问的URL),任何服务之间的相互调用,都需要先经过 Keystone 的身份验证,获得目标服务的 Endpoint ,然后再调用。

Notes:

  • 在使用联合身份验证方法时,创建应用程序凭据和信任的用户体验得到了极大的改进。其角色分配来自映射组成员身份的联合用户将在其令牌过期后将这些组成员身份持久化为可配置的TTL,在此期间,其应用程序凭据将保持有效。
  • Keystone到Keystone断言的现在包含了Keystone Identity Provider上用户的组成员身份,可以将其映射到Keystone Service Provider上的组成员身份。
  • 联邦Federated用户现在可以被赋予具体的角色分配,而不依赖于映射API,允许联合用户直接在keystone中创建并链接到他们的 Identity Provider。
  • 当启动一个新的keystone部署时,管理员角色默认为具有“immutable”选项集,防止它被意外删除或修改,除非故意删除“immutable”选项。
  • Keystonemiddleware不再支持Identity v2.0 API,该身份在以前的发行周期中已从keystone中删除。

Kolla - 容器化部署OpenStack服务

kolla 的使命是为 openstack 云平台提供生产级别的、开箱即用的交付能力。kolla 的基本思想是一切皆容器,将所有服务基于 Docker 运行,并且保证一个容器只跑一个服务(进程),做到最小粒度的运行 docker。

Notes:

  • 所有的images, scripts 和 Ansible playbooks现在都使用Python 3,并且对Python 2的支持已经被删除。
  • 增加了对CentOS 8主机和镜像的支持。
  • 增加了对后端API服务的TLS加密的初始支持,提供API流量的端到端加密。目前支持Keystone。
  • 增加了部署开放虚拟网络(OVN)的支持,并将其与neutron集成。
  • 添加了对部署Zun CNI(容器网络接口)组件的支持,从而允许带有容器的Docker支持Zun Pods。
  • 添加了对Elasticsearch Curator的支持,以帮助管理集群日志数据。
  • 添加了将Mellanox网络设备与Neutron一起使用所需的组件。
  • 简化了外部Ceph集成的配置,可以轻松地从Ceph-Ansible部署的Ceph集群过渡到在OpenStack中启用它。

Kuryr - OpenStack容器网络

Kubernetes Kuryr是 OpenStack Neutron 的子项目,其主要目标是通过该项目来整合 OpenStack与Kubernetes 的网络。该项目在 Kubernetes 中实作了原生 Neutron-based 的网络,因此使用 Kuryr-Kubernetes 可以让你的 OpenStack VM 与 Kubernetes Pods 能够选择在同一个子网上运作,并且能够使用 Neutron 的 L3 与 Security Group 来对网络进行路由,以及阻挡特定来源 Port。

Notes:

  • 支持IPv6
  • DPDK对嵌套设置的支持以及其他各种DPDK和SR-IOV的改进。
  • 与NetworkPolicy支持相关的多个修复程序。

Manila - 文件共享服务

Manila项目全称是File Share Service,文件共享即服务。是OpenStack大帐篷模式下的子项目之一,用来提供云上的文件共享,支持CIFS协议和NFS协议。

Notes:

  • 共享组已经从一个实验性的特性发展到普遍可用。从API版本2.55开始,不再需要X-OpenStack-Manila-API-Experimental header来创建/更新/删除共享组类型、组规范、组配额和共享组本身。
  • 当兼容时,可以通过存储池中的快照创建共享。这一新特性允许通过扩展以前局限于承载快照的后端的工作负载来更好地利用后端资源。
  • 引入了新的配额控制机制,以限制项目及其用户可以创建的共享副本的数量和大小。
  • 现在可以使用时间间隔查询异步用户消息。

Neutron - 网络服务

Neutron是openstack核心项目之一,提供云计算环境下的虚拟网络功能。OpenStack网络(neutron)管理OpenStack环境中所有虚拟网络基础设施(VNI),物理网络基础设施(PNI)的接入层。

Notes:

这个OVN驱动器现在被合并到neutron储存库中,是neutron树ML2驱动器中的一种。linuxbridge或openvswitch .OVN驾驶者利益超过openvswitch驱动程序包括例如具有分布式SNAT流量的DVR、分布式DHCP和可以在没有网络节点的情况下运行的可能性。其他ML2驱动程序仍在树上并得到完全支持。当前默认代理仍然是开放开关但我们的计划是OVN驱动程序将是未来的默认选择。

已添加对无状态安全组的支持。用户现在可以创建安全组设置为stateless这意味着,CONTROM将不用于该组中的任何规则。一个端口只能使用无国籍的或stateful安全组。在一些用例中,无状态安全组将允许操作员选择优化的数据路径性能,而有状态的安全组对系统施加额外的处理。

基于角色的访问控制RBAC已添加地址范围和子网池。地址范围和子网池通常由操作员定义并暴露给用户。此更改允许运营商在地址范围和子网池上使用更多粒度访问控制。

Neutron API中增加了对创建期间标记资源的支持。用户现在可以直接在POST请求中为资源(如端口)设置标记。这将大大提高kubernetes网络操作的性能。例如,Kuryr必须发送给Neutron的API调用数量大大减少。

Nova - 计算服务

Nova是OpenStack云中的计算组织控制器。支持OpenStack云中实例(instances)生命周期的所有活动都由Nova处理。这样使得Nova成为一个负责管理计算资源、网络、认证、所需可扩展性的平台。

Notes:

  • 支持Nova Cell间的冷迁移和大小调整。
  • 支持预览镜像到Nova计算主机。
  • 支持通过CyBorg创建具有加速器设备的实例。
  • 进一步支持移动服务器以最小带宽保证。
  • 支持nova-manage placement审核CLI,以查找和清理孤立的资源分配。

Nova API策略正在使用scope_type类型引入新的默认角色。这些新的变化提高了安全级别和可管理性。新的策略在处理访问系统和项目级令牌方面具有更丰富的功能,具有“读”和“写”的角色。默认情况下禁用此特性,并可通过配置选项启用。有关更多详细信息,请参阅Policy Concepts文档。

Octavia - 负载平衡器服务

Octavia 是 openstack lbaas的支持的一种后台程序,提供为虚拟机流量的负载均衡。实质是类似于trove,调用 nova 以及neutron的api生成一台安装好haproxy和keepalived软件的虚拟机,并连接到目标网路。

Notes:

  • Octavia现在支持在特定可用性区域中部署负载平衡器。这允许将负载平衡功能部署到边缘环境。
  • Octavia amphora驱动程序添加了一个技术预览功能,可以提高控制平面的弹性。如果控制平面主机在负载平衡器配置操作期间出现故障,则备用控制器可以恢复进程内配置并完成请求。
  • 用户现在可以指定侦听器和池可接受的TLS密钥。这允许负载平衡器强制执行安全合规性要求。

Placement - 安置服务

一个资源提供者可以是一个计算节点,共享存储池,或一个IP分配池。placement服务跟踪每个供应商的库存和使用情况。例如,在一个计算节点创建一个实例的可消费资源如计算节点的资源提供者的CPU和内存,磁盘从外部共享存储池资源提供商和IP地址从外部IP资源提供者。

Notes:

  • 通过配置可配置重试计数,提高了健壮性,以应对常见的高级别并行写入分配情况,例如繁忙的群集管理程序。

Puppet Openstack - OpenStack Puppet 安装模块

用于OpenStack的Puppet模块为OpenStack云部署带来了可扩展且可靠的IT自动化。

Notes:

  • Puppet OpenStack现在可以使用管理员密码而不是旧版管理员令牌来引导Keystone。

Swift - 对象存储

Swift 不是文件系统或者实时的数据存储系统,而是对象存储,用于长期存储永久类型的静态数据。这些数据可以检索、调整和必要时进行更新。Swift最适合虚拟机镜像、图片、邮件和存档备份这类数据的存储。

Notes:

  • 为Swift容器和对象添加了一个新的系统命名空间。
  • 使用新的命名空间添加了一个新的Swift对象版本控制API。
  • 使用新的API增加了对S3版本控制的支持。
  • 增加了使用的能力SIGUSR1执行“无缝”重装,WSGI服务器套接字从未停止接受连接。
  • 添加了使用SIGUSR1执行“无缝”重载的功能,其中WSGI服务器socket从未停止接受连接。

Vitrage - 平台问题定位分析服务

Vitrage是一个OpenStack RCA(Root Cause Analysis)服务,用于组织、分析和扩展OpenStack的告警和事件,在真正的问题发生前找到根本原因。

Notes:

  • 添加了更简洁和友好的Template Version 3语法。

Watcher - 资源优化服务

Watcher提供一个完整的优化循环链:从度量接收器,到优化处理器和操作计划应用程序。Watcher的目标在于提供一个强大的框架,可以实现广泛的云优化目标,包括减少数据中心运营成本,通过智能虚拟机迁移提高系统性能,提高能源效率等。此外,Watcher可供用户定制丰富的资源优化目标与策略算法。

Notes:

  • 添加了新的webhook API和新的审核类型EVENT。现在,Watcher用户可以使用EVENT类型创建审核,审核将由webhook API触发。
  • 计算(Nova)数据模型的构建将使用决策引擎线程池完成,从而大大减少了构建模型所需的总时间。

Zaqar - 消息服务

Zaqar是openstack内的多租户云消息服务组件,它对标并借鉴了Amazon SQS消息组件的实现。为在Openstack内构建可伸缩、可靠和高性能的云应用提供了通道。Zaqar服务的特征是一个完全的RESTful API,使用生产者/消费者,发布者/订阅者等模式来传输消息。通过使用不同的通信模式开发人员可以在他们的SaaS和移动应用程序上的各种组件之间发送消息。

Notes:

  • 支持使用“ with_count”查询队列以返回队列数量。帮助用户快速获取他们拥有的队列的确切总数。
  • 引入名为Topic的新资源,这是SNS的概念。用户可以将消息发送到主题,然后订阅者将根据不同的协议(例如,http,电子邮件,短信等)获取消息。

Zun - 容器服务

作为提供容器管理服务的组件,Zun允许用户在没有管理服务器或集群参与的情况下快速启动和操作管理容器。它集成了Neutron、Cinder、Keystone等核心OpenStack服务,实现了容器的快速普及。通过这种方式,OpenStack的所有原始网络、存储和识别验证工具都应用于容器系统,使容器能够满足安全性和合规性要求。Zun计划支持多种容器技术,如Docker、Rkt和clear container。现在,对Docker技术的支持已经完成。

Notes:

  • 从此版本开始,Zun添加了与CRI-compatible runtime的支持。 Zun使用CRI runtime来实现pod的概念。因此,用户可以使用Zun API通过CRI runtime在Kata容器中创建pods。

使用devstack快速安装与测试

DevStack是一系列可扩展的脚本,用于基于git master的所有最新版本快速安装完整的OpenStack环境。它以交互方式用作开发环境,并作为OpenStack项目功能测试的基础。

安装Linux

首先准备一个干净且最小化的Linux系统。DevStack尝试支持Ubuntu的两个最新LTS版本,最新的与当前的Fedora版本,CentOS/RHEL 7以及Debian和OpenSUSE。

如果您特殊要求,Ubuntu 18.04(Bionic Beaver)将会是测试最多的,并且可能会做得最流畅。

Add Stack User

DevStack应该以启用了sudo的非root用户身份运行(通常可以正常登录云镜像,例如“ ubuntu”或“ cloud-user”)。

如果您不使用云镜像,则可以创建一个单独的stack用户来运行DevStack

$ sudo useradd -s /bin/bash -d /opt/stack -m stack 

由于此用户将对您的系统进行更改,因此它应该具有sudo特权:

$ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack$ sudo su - stack

下载DevStack

$ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack 
$ sudo su - stack 

存储devstack repo包含一个脚本,该脚本主要用于安装OpenStack和用于配置文件的模板。

创建local.conf中

local.conf在devstack git repo的根目录下创建一个具有四个密码的文件。

[[local|localrc]] 
ADMIN_PASSWORD=secret 
DATABASE_PASSWORD=$ADMIN_PASSWORD 
RABBIT_PASSWORD=$ADMIN_PASSWORD 
SERVICE_PASSWORD=$ADMIN_PASSWORD 

这是开始使用DevStack所需的最低配置。

开始安装

$ ./stack.sh 

这将花费15-20分钟,这在很大程度上取决于网络速度。在此过程中将安装许多软件包。

最后!

现在有了一个可以正常工作的DevStack!

默认devstack就安装了keystone,glance,nova, placement,cinder,neutron,和horizon。浮动IP将可用,测试账户可以访问云外系统。

  • 可以访问Horizon来体验OpenStack的Web界面,并从那里管理vm,网络,卷和镜像。
  • 可以在shell中使用 命令行工具来管理devstack。source openrc openstack
  • 可以并运行已配置为与devstack一起使用的tempest测试。cd /opt/stack/tempest
  • 可以对OpenStack进行代码更改并进行验证。

当然安装的工具不仅仅是devstack,还包含packstack,kolla等等,希望大家多尝试。在此依然衷心祝愿OpenStack能够越走越远。

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章