1.iaas 基础设施即服务
公司:服务器购买、建设机房、dns路由器、硬件、存储...--抽象成服务提供给公司(用户)使用
2.paas 平台即服务
在iaas层上进行了更高级层次抽象,iaas提供硬件服务,paas提供基础软件服务
3.saas 软件即服务
钉钉,企业微信
云原生:
架构:软件开发思想(软件架构思想)
应用:就是为了让应用程序(项目、mysql、elasticsearch...)都运行在云上容器中,这样的技术就叫做云原生
特点:
1.容器化:容器项目部署,起到了隔离的作用
2.微服务:实现原生最好采用微服务架构,微服务按照function拆分后,可以做到高内聚,低耦合,实现CI/CD
3.devops
开发+运维-开发运维的结合体。Devops是一种敏捷思维,开发一种组织形式
4.CI/CD
持续交付:不停机更新
云扩展思维:
caas container as a service
faas function as a service 函数即服务
service mesh 服务网格架构 服务治理-服务限流-服务降级-服务监控 istio
serverless 无服务架构,是指程序员开发不需要关系服务器的事情,只需要开发业务代码即可
如何云原生?
本地部署应用可能需要停机更新,而云原生就不需要,始终是最新的状态,支持频繁的变更
本地部署应用无法进行动态扩展(动态伸缩容),云原生可以利用云资源的弹性进行自动伸缩容,从而为企业降本增效
本地部署应用对物理硬件ip,网络端口有强依赖,云原生就不需要了
本地部署需要人肉运维,云原生实现自动化运维
容器编排技术:
为什么要管理容器(虚拟机)?
怎么扩容?(自动)
容器宕机了,怎么恢复?(自动)
更新容器会不会影响业务?(不影响)
如何监控?(自动)
如何调度?(自动)
数据安全(自动)
2.容器编排技术
2.1 docker-compose
docker-compose组件可以批量的创建容器,管理容器,粗颗粒度
2.2 swarm
swarm容器编排工具是docker公司自己的开发,但是docker公司自己都不使用,docker使用的kubernetes:kubernetes采用pod和label这样的概念把容器组合成一个个互相存在依赖关系的逻辑单元,相关容器被组合成pod后被共同部署和调度,形成服务。
kubernetes基本结构:
1.master节点 :负责调度,存储集群状态(服务注册发现),提供统一api入口,一个master对应一群node节点
2.node节点:node节点存储pod(pod内部封装容器),一个node节点理论上可以存储无数个pod,但是node节点存储pod的数量受限于硬件资源的限制,同时受限于内部服务器运行所占用的资源
3.kubernetes
borg系统。kubernetes也是google公司开发的,架构设计思想是参考borg系统来架构设计的
发送请求:kubectl 客户端指令,浏览器(可视化方式 rancher,dashboard)
master节点 :schedule调度器,负责计算该把pod调度到哪一个node节点
contollers: 控制器,负责维护node节点资源对象
apiServer:网关,所有请求都必须要经过网关
etcd 服务发现,注册。集群状态信息,调度信息
node节点 每一个node节点都运行一个kubelet进程,此进程负责本机服务的pod创建
pod是k8s管理的最小基本单元,pod内部可以运行一个或多个容器,一般情况下,pod内部只允许一个容器运行,便于管理
docker:docker引擎,pod内部运行的都是容器,这个容器是由docker引擎创建的,docker引擎是node节点基础服务
kubelet:node节点代理,kubelet代理master节点请求,在本地node节点执行
kube-proxy:网络代理,主要用来生成网络规则,创建访问路由,创建service网络访问规则,负责均衡规则
fluentd:日志,日志收集
master节点
apiserver:集群的统一入口,各组件协调者,以http api 提供接口服务,所有对象资源的增删改查和监听操作都交给apiserver处理后再提交给etcd存储
manager controller:
replication controller:副本控制器
service cotroller:管理维护service(虚拟ip),提供负载以及服务代理
endpoints controller: 管理维护endpoints,关联service和pod
persistent volumn controller: 持久化数据卷控制器
daemon set controller:让每一个node节点都运行相同的服务
deployment controller:无状态部署服务
4.scheduler
创建pod的流程:
1.kubctl发送创建pod的指令,此时这个指令被apiserver拦截,把创建的pod存储在etcd
2.scheduler发起调用请求,此时这个指令被spiserver拦截,获取etcd中的podQueue NodeList
调度算法:预选调度,优选策略
3.把选择合适的node、pod存储在etcd
4.node节点上有一个kubelet进程,发送请求获取pod,node对应创建资源
5.