(二)云原生&k8s的架构及基本组件原理

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创建

(二)云原生&k8s的架构及基本组件原理_第1张图片

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.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

你可能感兴趣的:(云原生,架构,云计算)