openstack集成k8s openstack+kvm架构_虚拟机


1.虚拟化


1 型虚拟化:hypervisor直接运行于硬件之上,对硬件虚拟化做了优化,性能较高,但不支持虚拟机嵌套,例如Xen VMware的EXSI都属于1型虚拟化。1型虚拟化其hypervisor内存上严格隔离的。


2 型虚拟化:宿主机操作系统运行于硬件之上,hypervisor作为一个内核模块运行在宿主机操作系统之上。支持虚拟机嵌套,例如KVM,VMware的workstation等都属于2型虚拟化,虚拟机嵌套指KVM虚拟机中还可以再运行KVM。




2.KVM


kernel-based virtual machine,基于Linux内核的虚拟机,kvm.ko负责CPU和内存虚拟化。IO虚拟化由Linux内核和Qemu实现。KVM的管理工具为libvirt, openstack底层也使用libvirt 。


kvm安装:直接在Linux系统上安装KVM所需包。其中qemu-kvm、qemu-systerm负责CPU、内存和IO虚拟化,libvirt-bin为libvirt,virt-manager为KVM图形管理工具,网络虚拟化由bridge-utils、vlan实现。


使用virt-manager启动虚拟机,  /var/lib/libvirt/images/ 目录为KVM默认存放镜像文件的地方。virt-manager也可以用来管理其他宿主机上的虚拟机,注意此处需要配置被管理宿主机中的两个文件。


virsh list 命令用于查看宿主机上的虚拟机,还可以使用其他virsh命令管理虚拟机。


注: 一个KVM虚拟机在宿主机中作为一个qemu-kvm进程运行,与其他Linux进程一样被调度。


CPU虚拟化 由vmx 或 svm 实现。虚拟机中每一个vCPU对应qemu-kvm进程中的每一个线程。因此虚拟机中vCPU总数可以超过物理CPU总数,这个叫CPU超配。


内存虚拟化 实现客户机物理内存到宿主机机器内存的转化,客户机操作系统负责客户机虚拟地址到客户机物理地址的转化,也可以实现超配。KVM实现内存虚拟化的方式有两种: 影子页表 和 EPT 页表,可参考 。


存储虚拟化 由存储池(storage pool)和volume卷实现,存储池为宿主机中可见的一块内存,volume为存储池中分配给虚拟机的一块空间。 KVM 将宿主机目录 /var/lib/libvirt/images/ 作为默认的 Storage Pool,是一种目录类型的存储池,而volume则为该目录下的文件,如一个镜像文件则为一个volume,volume有多种类型,包括raw,qcow,vmdk,vdl。


网络虚拟化 通过Linux bridge实现vnet br0 eth0之间的数据传输。注意Linux 网桥br0的配置需更改interfaces文件。使用brctl show 查看网桥情况。虚拟机网络通信方式:br0、NAT、vlan. 其中vlal是一个虚拟局域网,实现二层隔离。




3.Libvirt


libvirt由三大功能组件组成:后台daemon程序libvirtd、API库、命令行工具virsh。


其中,libvirtd是服务程序,接收和处理来自API的请求。API库用来开发基于libvirt的高级管理工具,例如KVM图形管理工具virt-manager。命令行工具virsh是常用的KVM命令行工具。


libvirt也用来管理Xen、VirtualBox。




4.理解openstack


首先区分物理机架构、虚拟化架构、云计算架构


其次区分Iaas Paas Saas


Iass-基础设施即服务,向用户提供一个完整的虚拟机,使用者为数据中心管理员,典型的Iaas服务包括AWS、阿里云等。


Paas-平台即服务,向用户提供应用的运行环境和一系列中间件等,使用者为应用开发人员,典型的Paas服务包括 Google App Engine、IBM BlueMix。


Saas-软件即服务,向用户提供应用服务,使用者是应用的终极用户,典型的Saas包括Google Gmail。


而 openstack则属于Iaas, openstack对数据中心的计算、网络、存储资源进行统一管理和分配。




5.openstack架构


openstack集成k8s openstack+kvm架构_虚拟机_02


使用devstack可以在一台机器上,all-in-one搭建openstack环境。


英文官方文档: https://docs.openstack.org/devstack/latest/


中文安装文档: http://www.trystack.cn/Articles/devstack-notes.html


devstack笔记: http://www.trystack.cn/Articles/devstack-notes.html


核心组件或服务:Nova,Keystone,Glance,Cinder,Neutron


核心节点:控制节点、网络节点、计算节点、存储节点


openstack中的L2、L3网络指的是七层网络协议中的第二层数据链路层和第三层网络层。


NAT:网络地址转换,用于专用网内的本地IP地址与外界网络通信时,将本地IP地址转换成全球IP地址。