云服务平台:微软的Azure,开源云服务平台Open Stack,谷歌家的Google Cloud,亚马逊的AWS,国内的阿里云,京东云,华为云,腾讯云等等公有云,私有云

云计算就是通过互联网按需访问计算资源,例如物理服务器和虚拟服务器资源,数据存储器等等,这些资源都由云服务提供商管理,云服务提供商通过这些资源,并且根据使用情况按量收费

云计算的特点:按需使用,按量收费,弹性资源,自助服务(即开即用,无需审核),无人值守(高可用,无需监守)

亚马逊在2006年推出S3和EC2,2008年谷歌发布Google App Engine,2009年heroku发布Paas,2010年微软推出Azure服务平台,2011年Open Stack发布开源Iaas,2014年亚马逊推出lambda(无服务器计算服务)

云计算类似于水电服务,电力部门已经为你架构好了基础设施,无需再投资建设基础设施

云计算按需支付按需使用,无需再使用服务器来浪费用不到的资源,多用资源,使用时间长更省钱

云计算保证业务高可用,运维自动化,资源自动扩缩,无需人为管理

云主机,云服务器,云端服务器

创建云主机,指定规格

核心数量,内存,磁盘,网络(私有地址,公有地址),操作系统,操作系统账户(密码,ssh密钥),地理位置,防火墙(安全组)

openstack 构建私有云或者公有云

安装openstack

OpenStack 是一个基于Python的开源项目,安装太复杂了,将通过kolla-ansible快速部署OpenStack环境

kolla-ansible使用ansible自动化运维工具进行OpenStack服务编排部署,kolla-ansible采用可全容器部署,全部跑在docker容器中

OpenStack官方要求8g内存,40g磁盘

Kolla Ansible支持Ubuntu20.04,Ubuntu22.04,Debian 11系统,支持Ubuntu,centos,Debian容器

Kolla Ansible官方文档地址:https://docs.openstack.org/kolla-ansible/yoga/user/quickstart.html

这里将使用Ubuntu22.04

安装必要依赖

sudo apt install git python3-dev libffi-dev gcc libssl-dev

sudo apt install python3-pip

pypi换源(适合国内朋友)

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装 ansible(官方要求ansible版本大于4,小于6)

sudo apt install ansible

或者

sudo pip install -U ‘ansible>=4,<6’

安装Kolla-ansible

sudo pip install git+https://opendev.org/openstack/kolla-ansible@master

创建目录

sudo mkdir -p /etc/kolla

复制kolla-ansible配置文件(例如globals.yml和passwords.yml,清单文件)

cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

cp /usr/local/share/kolla-ansible/ansible/inventory/* .

安装kolla-ansible依赖

kolla-ansible install-deps

我这里提升ansible-core版本太低,需要在2.14.0和2.15.0之间,可以执行pip install ansible-core==2.14.0命令解决

修改ansible配置文件

nano /etc/ansible/ansible.cfg

[defaults] host_key_checking=False pipelining=True forks=100

在/usr/local/share/kolla-ansible/ansible/inventory/目录下

修改配置文件,有两个文件,分别为all-in-one和multinode

all-in-one文件就是单机配置,multinode是多节点配置,我这里只有本地单机,因此使用all-in-one文件

修改hosts

sudo vim /etc/hosts

10.10.1.10 server0

测试配置是否正确

ansible -i all-in-one all -m ping

部署机器的密码存储在/etc/kolla/passwords.yml

kolla-genpwd

配置globals.yml文件(文件在/etc/kolla目录下)

kolla_base_distro: "ubuntu" 
network_interface: "eth0"
neutron_external_interface: "eth1"
kolla_internal_vip_address: "10.10.1.10"
enable_cinder: "yes"

上面的配置内容分别为容器的镜像,网络接口,,第二网络接口(用来访问外部网络,不需要ip),指定eth0接口的ip地址,是否使用cinder工具包(提供了多种功能)

有可能你的接口不叫eth0,可以查询一下接口名称

apt install net-tools

ifconfig -a

nano /usr/local/share/kolla-ansible/ansible/kolla-host.yml

hosts: server01

测试globals.yml文件是否配置正确(在/usr/local/share/kolla-ansible/ansible/inventory/目录下)

kolla-ansible -i ./all-in-one bootstrap-servers

部署前检查

kolla-ansible -i ./all-in-one prechecks -vvvv

开始部署

kolla-ansible -i ./all-in-one deploy -vvvv

安装 OpenStack CLI 客户端

pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/yoga

kolla-ansible post-deploy

/usr/local/share/kolla-ansible/init-runonce


openstack server list

openstack server create –help |less 查看该命令的帮助信息

openstack server create –flavor 规格id –image 镜像id –network 网络id –security-group 安全组id –key-name 密钥name test-server

openstack flavor list | grep 4096 查看可用的规格

openstack image list 查看可用的镜像

openstack network list 查看可用网络

openstack security group list 查看可用的安全组

openstack keypair list 查看可用的密钥

openstack floating ip list 查看绑定的IP

openstack server add floating ip 主机id或者主机名字 ip 给主机绑定公网地址


安全组

为一组相同特性的云主机提供安全访问规则保护

安全组规定了网络流入规则和流出规则,例如开放22端口和80端口

安全组作用于云主机的网卡,可以对云主机的单一网卡设置安全组,使用白名单规则

定义安全组规则

源地址(限制流入IP,例如只允许单一IP访问该云主机)

目的地址(限制流出IP,例如只允许云主机访问单一资源)

协议类型和协议端口(允许哪个协议的类型和哪个协议端口)

行为(Allow/Deny)

优先级(避免一些安全组规则被覆盖)

默认安全组(拒绝全部访问)

安全组规则应最小授权


自动化部署工具

ansible,terraform,chef,puppet,saltstack

AWS CloudFormatio

Google Cloud Deployment Manager

Azure Resource Manager

Openstack Heat

阿里云资源编排服务


镜像服务

镜像:云主机的操作系统

私有镜像,公共镜像

镜像生命周期管理(公共是云服务平台管理,私有是自己进行管理),安全加固(确保镜像安全)

第三方镜像(包含特定的软件,集成定制化镜像)


网络服务

虚拟网络,虚拟子网,虚拟端口。虚拟路由

网络隔离(通过创建虚拟网络),网络互通(不同虚拟网络之间互通)

安全(安全组,防火墙(防范网络攻击,例如DDOS攻击),VPN(服务之间私密互通,通信不被监听))

云服务平台有没有提供网络监听,网络抓包


云存储服务

块存储(例如系统盘,磁盘,快照),文件存储(不同主机之间共享访问资源),对象存储(管理数据文件,抽象类文件资源,可以存储各种类别的文件,数据池)

云存储容量可大可小,性能可高可低,例如HDD,SSD硬盘类型

细粒度的访问策略(为每个数据提供自己的访问策略,例如一个文件,用户A可以修改数据,而另一个用户只能读取数据,当全部数据的存储在一起时,方便管理和安全)

存储访问模式(对数据的访问量来区分,例如经常访问的数据和不经常访问的数据但是又很重要的)

跨区域复制(为了高可用,可用同步到其他数据中心)


云数据库服务

支持不同数据库类型以及不同版本

支持不同规格,存储性能

数据库分析和调优

自动加密(数据本地存储加密)

容灾备份,多区域同步(自动切换)

UI集成

迁移工具(内部数据迁移到外部云数据库上)

常见的云数据库服务

OpenStack Trove

Google Cloud SQL

Microsoft Azure SQL Database

高级数据库服务

开箱即用

天然支持跨区域(自动网络优化,自动灾备)

数据一致性策略

NoSQL

事件监听和处理

针对Mobile app,Serverless,IoT

AWS DynamoDB

Azure Cosmos DB

Google Cloud Firestore


资源编排服务ROS(Resource Orchestration Service)

提供模板文件对应用进行生命周期管理,维护资源依赖关系,检测资源状态,异常自动修复

基础设施即代码(Dev Ops)

可标准化,重复性,批量进行部署,确保部署的效率

快速交付应用

Microsoft Azure Resource Manager


服务托管

应用为中心,无需关心底层设施的管理,集成周边云服务,只需要管理应用发布和运维

支持不同编程语言运行时环境

GitOps

支持不同部署模式(蓝绿部署(持续部署模式,有两套系统,一个是正在提供服务的,另一个准备发布的系统,这两个系统都是功能相同的,只是系统版本以及对外的服务不同,不对外提供服务的系统可以用于测试环境,到达标准后可切换另一套系统,出现问题可及时切换回),金丝雀部署(只有一套环境,在新旧版本之间进行操作,有新版本时,只对一部分服务进行升级,降低危害和提升恢复能力,即尝鲜,内部测试,外部测试等等))

降低运维成本(无需管理底层资源,自动伸缩,负载均衡)


Kubernetes部署工具

helm

kustomize

Operator

kompose


Serverless 无服务器应用框架

CNCF基金会(Cloud Native Computing Foundation,云原生计算基金会)

code based,container based

支持混合云

驱动函数触发

需要监控,调试函数,监控API,UI

安全(厂商如何放心运行用户提供的函数,虚拟机隔离,容器隔离,沙盒)

Knative开源项目(基于K8S集群,Google背书,非CNCF官方项目)

支持事件源(Knative Eventing),事件源与服务隔离,支持应用弹性扩缩,支持应用多版本,流量分发策略

KEDA(Kubernetes Event-driven Autoscaling)开源项目(微软背书,CNCF项目)

支持事件驱动,支持不同的事件源,支持应用弹性扩缩,支持不同类型的应用(Deployment/Job),应用感知事件源(支持不同SDK)

Fission开源项目

面向code(支持python,nodejs,go,c++,php,bash)

支持容器

冷启动优化(函数第一次被调用)

可以和Keda集成


Github + ArgoCD自动化部署


Prometheus 部署和监控