微服务(8)

目录

[36.SpringCloud Config可以实现实时刷新吗?](#36.SpringCloud Config可以实现实时刷新吗?)

[37.什么是SpringCloud GateWay?](#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中。

相关推荐
mghio32 分钟前
Dubbo 中的集群容错
java·微服务·dubbo
uhakadotcom2 小时前
视频直播与视频点播:基础知识与应用场景
后端·面试·架构
沉登c5 小时前
第 3 章 事务处理
架构
阿里云云原生5 小时前
LLM 不断提升智能下限,MCP 不断提升创意上限
云原生
阿里云云原生5 小时前
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
云原生
数据智能老司机8 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机8 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
云上艺旅9 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
c无序9 小时前
【Docker-7】Docker是什么+Docker版本+Docker架构+Docker生态
docker·容器·架构
数据智能老司机9 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构