微服务(8)

发布时间:2023年12月31日

目录

36.SpringCloud? Config可以实现实时刷新吗?

37.什么是SpringCloud? GateWay?

38.什么是Kubernetes?Kubernetes与Docker有什么关系?

39.Kubernate的整体架构?

40.Kubernete中有哪些核心概念?


36.SpringCloud? Config可以实现实时刷新吗?

SpringCloud? Config实时刷新采用SpringCloud? ?Bus消息总线。

37.什么是SpringCloud? GateWay?

SpringCloud? GateWay 是SpringCloud官方推出的第二代网关框架,取代Zuul网关。网关在微服务系统中有着非常作用,网关常见的功能有路由转发,权限校验,限流控制等作用。

使用了一个RouteBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求规则,由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改。

38.什么是Kubernetes?Kubernetes与Docker有什么关系?

是什么?

Kubernetes是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载均衡。作为Google的创意之作,他提供了出色的社区,并与所有云提供商合作。因此,我们可以说Kubernetes不是一个容器化平台,而是一个多容器管理解决方案。

众所周知,Docker提供容器的生命周期管理,Docker镜像构建运行时容器。但是,由于这些单独的容器必须通信,因此使用Kubernetes。因此,我们说Docker构建容器,这些容器通过Kubernetes相互通信。因此,可以使用Kubernetes手动关联和编排在多个主机上运行的容器。

有哪些特性?

1.自我修复:在节点故障时可以删除失效容器,重新创建新的容器,替换和重新部署,保证预期的副本数量,kill掉检查失败的容器,并且在容器未准备好之前不会处理客户端情况,确保线上服务不会中断。

2.弹性伸缩:使用命令,UI或者K8s基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性,业务低峰时回收资源,以最小成本运行服务。

3.自动部署和回滚:k8s采用滚动更新策略更新应用,一次更新一个pod,而不是同时删除所有pod,如果更新过程中出现问题,将回滚恢复,确保升级不影响业务。

4.服务发现和负载均衡:k8s为多个容器提供一个统一访问入口(内部IP地址和一个dns名称)并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。

5.机密和配置管理:管理机密数据和应用程序配置,而不需要把铭感数据暴露在镜像里,提高敏感数据安全性,并可以将一些常用的配置存储在k8s中,方便应用程序调用。

6.存储编排:挂载外部存储系统,无论时来自本地存储,公有云,还是网络存储,都作为集群资源的一部分使用,极大提高存储使用灵活性

7.批处理:提供一次性任务,定时任务:满足批量数据处理和分析的场景。

39.Kubernate的整体架构?

Kubernate主要由以下几个核心组件组成:

1.etcd:提供数据库服务保存了整个集群的状态。

2.kube apiserver:提供了资源操作的唯一入口,并提供认证,授权,访问控制,API注册和发现等机制

3.kube? controller? manager:负责维护集群的状态,比如故障检测,自动扩展,滚动更新等

4.cloud? controller? ?manager:是与底层云计算服务商交互的控制器

5.kub? scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上

6.kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;

7.kube? proxy:负责为Service提供内部的服务发现和负载均衡,并维护网络规则

8.container? ?runtime是负责管理运行容器的软件,比如docker.

除了核心组件,还有一些推荐的Add? ons:

1.kube dns:负责为整个集群提供DNS服务。

2.ingress? Controller为服务提供外网入口

3.Heapster提供资源监控

4.Dashboard提供GUI

5.Federation提供可用区的集群

6.Fluentd? ?elasticsearch提供集群日志采集,存储与查询

40.Kubernete中有哪些核心概念?

Cluster,Master,Node

Cluster

Cluster(集群)是计算,存储和网络资源的集合,Kubernetes利用这些资源运行各种基于容器的应用。最简单的Cluster可以只有一台主机(他既是Master也是Node)

Master

1.Master是Cluster的大脑,他的主要职责是调度,即决定将应用放在哪里运行。

2.Master运行Linux操作系统,可以是物理机或者虚拟机。

3.为了实现高可用,可以运行多个Master。

Node

1.Node的职责是运行容器应用。

2.Node由Master管理,Node负责监控并汇报容器的状态,并根据Master的要求管理容器的生命周期。

3.Node运行在Linux操作系统,可以是物理机或者是虚拟机。

Pod

1.基本概念?

①Pod是Kubernetes的最小工作单元。

②每个Pod包含一个或者多个容器。Pod中的容器会作为一个整体被Master调度到一个Node上运行。

2.引入Pod的目的

①可管理性:有些容器天生就是需要紧密联系的,一起工作。Pod提供了比容器更高层次的抽象,将他们封装到一个部署单元中。Kubernetes以Pod为最小单元进行调度,扩展,共享资源,管理生命周期。

②通信和资源共享:Pod中所有容器使用同一个网络namespace,即相同的IP地址和Port空间。他们可以直接用localhost通信。同样的,这些容器可以共享存储,当Kubernetes挂载volume到Pod,本质上是将volume挂载到Pod中的每一个容器。

3.Pod的使用方式

①运行单一容器:one? container? per Pod是Kubernetes是最常见的模型,这种情况下,只是将单个容器简单封装成Pod。即便是只有一个容器,Kubernetes管理的也是Pod而不是直接管理容器。

②运行多个容器:对于那些联系非常紧密,而且需要直接共享资源的容器,应该放在一个Pod中。比如下面这个Pod包含两个容器:一个File Puller,一个Web? Server。File? Puller会定期从外部的Content? Manager中拉取最新的文件,将其存放在共享的volumn中。Web? Server从volume读取文件,相应Consumer的请求。这两个容器是紧密协作的,他们一起为Consumer提供最新的数据;同时他们也通过volume共享数据。所以放到一个Pod是合适的。

Controller

1.基本概念

Kubernetes通常不会直接创建Pod,而是通过Controller来管理Pod的。Controller中定义了Pod的部署特性,比如有几个副本,在什么样的Node上运行等。为了满足不同的业务场景,Kubernetes提供了多种Controller,包括Deployment,ReplicaSet,DaemonSet,StatefulSet,Job等。

2.各个Controller

Deployment:Deployment是最常用的Controller,比如我们可以通过创建Deployment来部署应用的。Deployment可以管理Pod的多个副本,并确保Pod按照期望的状态运行。

ReplicaSet:ReplicaSet实现了Pod的多副本管理。使用Deployment时会自动创建ReplicaSet,也就是说Deployment时通过ReplicaSet来管理Pod的多个副本,我们通常不需要直接使用ReplicaSet。

DaemonSet:DaemonSet用于每个Node最多只运行一个Pod副本的场景。正如其名称所揭示的,DaemonSet通常用于运行daemon。

StatefuleSet:StatefuleSet能够保证每个副本在整个生命周期中名称是不变的。而其他Controller不提供这个功能,当某个Pod发生故障需要删除并重新启动时,Pod的名称会发生变化。同时StatefulSet会保证副本按照固定的顺序启动,更新或者删除。

Job:Job用于运行结束就删除的应用。而其他Controller中的Pod通常是长期持续运行。

Service,NameSpace

1.Service

①Deployment可以部署多个副本,每个Pod都有自己的IP。而Pod很有可能会被频繁的销毁和重启,他们的IP会发生变化,用IP来访问Deployment副本不太现实。

②Service定义了外界访问一组特定Pod的方式。Service有自己的IP和端口,Service为Pod提供了负载均衡。

2.NameSpace

①NameSpace可以将一个屋里的Cluster逻辑上划分成多个虚拟Cluster,每个Cluster就是一个NameSpace。不同Namespace里的资源是完全隔离的。

②Kubernetes默认创建了两个NameSpace:

? ? default:创建资源时如果不指定,将被放到这个NameSpace中。

? ? kube? system:Kubernetes自己创建的系统资源将放到这个Namespace中。

文章来源:https://blog.csdn.net/qq_30624649/article/details/135314124
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。