当前位置: 首页 > news >正文

淘宝网站建设的特点idc数据中心

淘宝网站建设的特点,idc数据中心,好网站的标准,中企潍坊分公司网站目录 Spring Cloud # 什么是微服务#xff1f;谈谈你对微服务的理解#xff1f; # 什么是Spring Cloud#xff1f; # springcloud中的组件有那些#xff1f; # 具体说说SpringCloud主要项目? # Spring Cloud 和dubbo区别? # 服务注册和发现是什么意思#xff1f;S…  目录 Spring Cloud # 什么是微服务谈谈你对微服务的理解 # 什么是Spring Cloud # springcloud中的组件有那些 # 具体说说SpringCloud主要项目? # Spring Cloud 和dubbo区别? # 服务注册和发现是什么意思Spring Cloud 如何实现 # 什么是Eureka # Eureka怎么实现高可用 # 什么是Eureka的自我保护模式 # DiscoveryClient的作用 # Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别 # 什么是网关? # 网关的作用是什么 # 什么是Spring Cloud Zuul服务网关 # 网关与过滤器有什么区别 # 常用网关框架有那些 # Zuul与Nginx有什么区别 # 既然Nginx可以实现网关为什么还需要使用Zuul框架? # ZuulFilter常用有那些方法? # 如何实现动态Zuul网关路由转发? # Zuul网关如何搭建集群? # Ribbon是什么 # Nginx与Ribbon的区别 # Ribbon底层实现原理 # LoadBalanced注解的作用 # 什么是断路器 # 什么是 Hystrix # 什么是Feign # SpringCloud有几种调用接口方式 # Ribbon和Feign调用服务的区别 # 什么是 Spring Cloud Bus # 什么是Spring Cloud Config? # 分布式配置中心有那些框架 # 分布式配置中心的作用 # SpringCloud Config 可以实现实时刷新吗 # 什么是Spring Cloud Gateway? Kubernetes # 什么是Kubernetes? Kubernetes与Docker有什么关系 # Kubernetes的整体架构 # Kubernetes中有哪些核心概念 # 什么是Heapster # 什么是Minikube # 什么是Kubectl # kube-apiserver和kube-scheduler的作用是什么 # 请你说一下kubenetes针对pod资源对象的健康监测机制 # K8s中镜像的下载策略是什么 # image的状态有哪些 # 如何控制滚动更新过程 # DaemonSet资源对象的特性 # 说说你对Job这种资源对象的了解 # pod的重启策略是什么 # 描述一下pod的生命周期有哪些状态 # 创建一个pod的流程是什么 # 删除一个Pod会发生什么事情 # K8s的Service是什么 # k8s是怎么进行服务注册的 # k8s集群外流量怎么访问Pod # k8s数据持久化的方式有哪些 # Replica Set 和 Replication Controller 之间有什么区别 # 其它 Service Mesh # 什么是Service Mesh服务网格 Spring Cloud # 什么是微服务谈谈你对微服务的理解 微服务 以前所有的代码都放在同一个工程中、部署在同一个服务器、同一项目的不同模块不同功能互相抢占资源微服务就是将工程根据不同的业务规则拆分成微服务部署在不同的服务器上服务之间相互调用java中有的微服务有dubbo(只能用来做微服务)、springcloud( 提供了服务的发现、断路器等)。 微服务的特点 按业务划分为一个独立运行的程序即服务单元服务之间通过HTTP协议相互通信自动化部署可以用不同的编程语言可以用不同的存储技术服务集中化管理微服务是一个分布式系统 微服务的优势 将一个复杂的业务拆分为若干小的业务将复杂的业务简单化新人只需要了解他所接管的服务的代码减少了新人的学习成本。由于微服务是分布式服务服务于服务之间没有任何耦合。微服务系统的微服务单元具有很强的横向拓展能力。服务于服务之间采用HTTP网络通信协议来通信单个服务内部高度耦合服务与服务之间完全独立无耦合。这使得微服务可以采用任何的开发语言和技术来实现提高开发效率、降低开发成本。微服务是按照业务进行拆分的并有坚实的服务边界若要重写某一业务代码不需了解所有业务重写简单。微服务的每个服务单元是独立部署的即独立运行在某个进程中微服务的修改和部署对其他服务没有影响。微服务在CAP理论中采用的AP架构具有高可用分区容错特点。高可用主要体现在系统7x24不间断服务他要求系统有大量的服务器集群从而提高系统的负载能力。分区容错也使得系统更加健壮。 微服务的不足 微服务的复杂度构建一个微服务比较复杂服务与服务之间通过HTTP协议或其他消息传递机制通信开发者要选出最佳的通信机制并解决网络服务差时带来的风险。 2.分布式事物将事物分成多阶段提交如果一阶段某一节点失败仍会导致数据不正确。如果事物涉及的节点很多某一节点的网络出现异常会导致整个事务处于阻塞状态大大降低数据库的性能。服务划分将一个完整的系统拆分成很多个服务是一件非常困难的事因为这涉及了具体的业务场景服务部署最佳部署容器Docker 微服务和SOA的关系 微服务相对于和ESB联系在一起的SOA轻便敏捷的多微服务将复杂的业务组件化也是一种面向服务思想的体现。对于微服务来说它是SOA的一种体现但是它比ESB实现的SOA更加轻便、敏捷和简单。 # 什么是Spring Cloud Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等都可以用Spring Boot的开发风格做到一键启动和部署。 Spring Cloud并没有重复制造轮子它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 SpringCloud的优点 耦合度比较低。不会影响其他模块的开发。减轻团队的成本可以并行开发不用关注其他人怎么开发先关注自己的开发。配置比较简单基本用注解就能实现不用使用过多的配置文件。微服务跨平台的可以用任何一种语言开发。每个微服务可以有自己的独立的数据库也有用公共的数据库。直接写后端的代码不用关注前端怎么开发直接写自己的后端代码即可然后暴露接口通过组件进行服务通信。 SpringCloud的缺点 部署比较麻烦给运维工程师带来一定的麻烦。针对数据的管理比麻烦因为微服务可以每个微服务使用一个数据库。系统集成测试比较麻烦性能的监控比较麻烦。 # springcloud中的组件有那些 说出主要的组件 Spring Cloud Eureka,服务注册中心,特性有失效剔除、服务保护Spring Cloud Zuul,API服务网关,功能有路由分发和过滤Spring Cloud Config,分布式配置中心支持本地仓库、SVN、Git、Jar包内配置等模式Spring Cloud Ribbon,客户端负载均衡,特性有区域亲和,重试机制Spring Cloud Hystrix,客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离Spring Cloud Feign,声明式服务调用本质上就是RibbonHystrixSpring Cloud Stream,消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区Spring Cloud Bus,消息总线,配合Config仓库修改的一种Stream实现Spring Cloud Sleuth,分布式服务追踪,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合 # 具体说说SpringCloud主要项目? Spring Cloud的子项目大致可分成两类一类是对现有成熟框架Spring Boot化的封装和抽象也是数量最多的项目第二类是开发了一部分分布式系统的基础设施的实现如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。 Spring Cloud Config Config能够管理所有微服务的配置文件 集中配置管理工具分布式系统中统一的外部配置管理默认使用Git来存储配置可以支持客户端配置的刷新及加密、解密操作。 Spring Cloud Netflix Netflix OSS 开源组件集成包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。 Eureka服务治理组件包括服务端的注册中心和客户端的服务发现机制Ribbon负载均衡的服务调用组件具有多种负载均衡调用策略Hystrix服务容错组件实现了断路器模式为依赖服务的出错和延迟提供了容错能力Feign基于Ribbon和Hystrix的声明式服务调用组件ZuulAPI网关组件对请求提供路由及过滤功能。 Spring Cloud Bus 用于传播集群状态变化的消息总线使用轻量级消息代理链接分布式系统中的节点可以用来动态刷新集群中的服务配置信息。简单来说就是修改了配置文件发送一次请求所有客户端便会重新读取配置文件需要利用中间插件MQ。 Spring Cloud Consul Consul 是 HashiCorp 公司推出的开源工具用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案Consul 的方案更“一站式”内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案不再需要依赖其它工具比如 ZooKeeper 等。使用起来也较为简单。Consul 使用 Go 语言编写因此具有天然可移植性(支持Linux、windows和Mac OS X)安装包仅包含一个可执行文件方便部署与 Docker 等轻量级容器可无缝配合。 Spring Cloud Security Spring Cloud Security提供了一组原语用于构建安全的应用程序和服务而且操作简便。可以在外部或集中进行大量配置的声明性模型有助于实现大型协作的远程组件系统通常具有中央身份管理服务。它也非常易于在Cloud Foundry等服务平台中使用。在Spring Boot和Spring Security OAuth2的基础上可以快速创建实现常见模式的系统如单点登录令牌中继和令牌交换。 Spring Cloud Sleuth 在微服务中通常根据业务模块分服务项目中前端发起一个请求后端可能跨几个服务调用才能完成这个请求如下图。如果系统越来越庞大服务之间的调用与被调用关系就会变得很复杂假如一个请求中需要跨几个服务调用其中一个服务由于网络延迟等原因挂掉了那么这时候我们需要分析具体哪一个服务出问题了就会显得很困难。Spring Cloud Sleuth服务链路跟踪功能就可以帮助我们快速的发现错误根源以及监控分析每条请求链路上的性能等等。 Spring Cloud Stream 轻量级事件驱动微服务框架可以使用简单的声明式模型来发送及接收消息主要实现为Apache Kafka及RabbitMQ。 Spring Cloud Task Spring Cloud Task的目标是为Spring Boot应用程序提供创建短运行期微服务的功能。在Spring Cloud Task中我们可以灵活地动态运行任何任务按需分配资源并在任务完成后检索结果。Tasks是Spring Cloud Data Flow中的一个基础项目允许用户将几乎任何Spring Boot应用程序作为一个短期任务执行。 Spring Cloud Zookeeper SpringCloud支持三种注册方式Eureka Consul(go语言编写)zookeeperSpring Cloud Zookeeper是基于Apache Zookeeper的服务治理组件。 Spring Cloud Gateway Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式Spring Cloud Gateway作为Spring Cloud生态系统中的网关目标是替代Netflix Zuul其不仅提供统一的路由方式并且还基于Filer链的方式提供了网关基本的功能例如安全、监控/埋点、限流等。 Spring Cloud OpenFeign Feign是一个声明性的Web服务客户端。它使编写Web服务客户端变得更容易。要使用Feign我们可以将调用的服务方法定义成抽象方法保存在本地添加一点点注解就可以了不需要自己构建Http请求了直接调用接口就行了不过要注意调用方法要和本地抽象方法的签名完全一致。 # Spring Cloud 和dubbo区别? 服务调用方式dubbo是RPC springcloud Rest Api注册中心dubbo 是zookeeper springcloud是eureka也可以是zookeeper服务网关dubbo本身没有实现只能通过其他第三方技术整合springcloud有Zuul路由网关作为路由服务器进行消费者的请求分发,springcloud支持断路器与git完美集成配置文件支持版本控制事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。 # 服务注册和发现是什么意思Spring Cloud 如何实现 当我们开始一个项目时我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署添加和修改这些属性变得更加复杂。有些服务可能会下降而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找因此无需处理服务地点的任何更改和处理。 # 什么是Eureka Eureka作为SpringCloud的服务注册功能服务器他是服务注册中心系统中的其他服务使用Eureka的客户端将其连接到Eureka Service中并且保持心跳这样工作人员可以通过Eureka Service来监控各个微服务是否运行正常。 # Eureka怎么实现高可用 集群吧注册多台Eureka然后把SpringCloud服务互相注册客户端从Eureka获取信息时按照Eureka的顺序来访问。 # 什么是Eureka的自我保护模式 默认情况下如果Eureka Service在一定时间内没有接收到某个微服务的心跳Eureka Service会进入自我保护模式在该模式下Eureka Service会保护服务注册表中的信息不再删除注册表中的数据当网络故障恢复后Eureka Servic 节点会自动退出自我保护模式 # DiscoveryClient的作用 可以从注册中心中根据服务别名获取注册的服务器信息。 # Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别 ZooKeeper中的节点服务挂了就要选举在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的选举就是改微服务做了集群必须有一台主其他的都是从 Eureka各个节点是平等关系,服务器挂了没关系只要有一台Eureka就可以保证服务可用数据都是最新的。如果查询到的数据并不是最新的就是因为Eureka的自我保护模式导致的 Eureka本质上是一个工程,而ZooKeeper只是一个进程 Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像ZooKeeper 一样使得整个注册系统瘫痪 ZooKeeper保证的是CPEureka保证的是AP # 什么是网关? 网关相当于一个网络服务架构的入口所有网络请求必须通过网关转发到具体的服务。 # 网关的作用是什么 统一管理微服务请求权限控制、负载均衡、路由转发、监控、安全控制黑名单和白名单等 # 什么是Spring Cloud Zuul服务网关 Zuul是对SpringCloud提供的成熟对的路由方案他会根据请求的路径不同网关会定位到指定的微服务并代理请求到不同的微服务接口他对外隐蔽了微服务的真正接口地址。 三个重要概念动态路由表路由定位反向代理 动态路由表Zuul支持Eureka路由手动配置路由这俩种都支持自动更新路由定位根据请求路径Zuul有自己的一套定位服务规则以及路由表达式匹配反向代理客户端请求到路由网关网关受理之后在对目标发送请求拿到响应之后在 给客户端它可以和Eureka,Ribbon,Hystrix等组件配合使用Zuul的应用场景 对外暴露权限校验服务聚合日志审计等 # 网关与过滤器有什么区别 网关是对所有服务的请求进行分析过滤过滤器是对单个服务而言。 # 常用网关框架有那些 Nginx、Zuul、Gateway # Zuul与Nginx有什么区别 Zuul是java语言实现的主要为java服务提供网关服务尤其在微服务架构中可以更加灵活的对网关进行操作。Nginx是使用C语言实现性能高于Zuul但是实现自定义操作需要熟悉lua语言对程序员要求较高可以使用Nginx做Zuul集群。 # 既然Nginx可以实现网关为什么还需要使用Zuul框架? Zuul是SpringCloud集成的网关使用Java语言编写可以对SpringCloud架构提供更灵活的服务。 # ZuulFilter常用有那些方法? Run()过滤器的具体业务逻辑shouldFilter()判断过滤器是否有效filterOrder()过滤器执行顺序filterType()过滤器拦截位置 # 如何实现动态Zuul网关路由转发? 通过path配置拦截请求通过ServiceId到配置中心获取转发的服务列表Zuul内部使用Ribbon实现本地负载均衡和转发。 # Zuul网关如何搭建集群? 使用Nginx的upstream设置Zuul服务集群通过location拦截请求并转发到upstream默认使用轮询机制对Zuul集群发送请求。 # Ribbon是什么 Ribbon是Netflix发布的开源项目主要功能是提供客户端的软件负载均衡算法 Ribbon客户端组件提供一系列完善的配置项如连接超时重试等。简单的说就是在配置文件中列出后面所有的机器Ribbon会自动的帮助你基于某种规则如简单轮询随机连接等去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。有点类似Nginx # Nginx与Ribbon的区别 Nginx是反向代理同时可以实现负载均衡nginx拦截客户端请求采用负载均衡策略根据upstream配置进行转发相当于请求通过nginx服务器进行转发。Ribbon是客户端负载均衡从注册中心读取目标服务器信息然后客户端采用轮询策略对服务直接访问全程在客户端操作。 # Ribbon底层实现原理 Ribbon使用discoveryClient从注册中心读取目标服务信息对同一接口请求进行计数使用%取余算法获取目标服务集群索引返回获取到的目标服务信息。 # LoadBalanced注解的作用 ​ 开启客户端负载均衡。 # 什么是断路器 当一个服务调用另一个服务由于网络原因或自身原因出现问题调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待发生连锁效应雪崩效应 断路器有三种状态 打开状态一段时间内 达到一定的次数无法调用 并且多次监测没有恢复的迹象 断路器完全打开 那么下次请求就不会请求到该服务半开状态短时间内 有恢复迹象 断路器会将部分请求发给该服务正常调用时 断路器关闭关闭状态当服务一直处于正常状态 能正常调用 # 什么是 Hystrix 在分布式系统我们一定会依赖各种服务那么这些个服务一定会出现失败的情况就会导致雪崩Hystrix就是这样的一个工具防雪崩利器它具有服务降级服务熔断服务隔离监控等一些防止雪崩的技术。 Hystrix有四种防雪崩方式: 服务降级接口调用失败就调用本地的方法返回一个空服务熔断接口调用失败就会进入调用接口提前定义好的一个熔断的方法返回错误信息服务隔离隔离服务之间相互影响服务监控在服务发生调用时,会将每秒请求数、成功请求数等运行指标记录下来。 # 什么是Feign Feign 是一个声明web服务客户端这使得编写web服务客户端更容易 他将我们需要调用的服务方法定义成抽象方法保存在本地就可以了不需要自己构建Http请求了直接调用接口就行了不过要注意调用方法要和本地抽象方法的签名完全一致。 # SpringCloud有几种调用接口方式 Feign RestTemplate # Ribbon和Feign调用服务的区别 调用方式同Ribbon需要我们自己构建Http请求模拟Http请求然后通过RestTemplate发给其他服务步骤相当繁琐 而Feign则是在Ribbon的基础上进行了一次改进采用接口的形式将我们需要调用的服务方法定义成抽象方法保存在本地就可以了不需要自己构建Http请求了直接调用接口就行了不过要注意调用方法要和本地抽象方法的签名完全一致。 # 什么是 Spring Cloud Bus Spring Cloud Bus就像一个分布式执行器用于扩展的Spring Boot应用程序的配置文件但也可以用作应用程序之间的通信通道。Spring Cloud Bus 不能单独完成通信需要配合MQ支持Spring Cloud Bus一般是配合Spring Cloud Config做配置中心的Springcloud config实时刷新也必须采用SpringCloud Bus消息总线 # 什么是Spring Cloud Config? Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持可以方便的对微服务各个环境下的配置进行集中式管理。Spring Cloud Config分为Config Server和Config Client两部分。Config Server负责读取配置文件并且暴露Http API接口Config Client通过调用Config Server的接口来读取配置文件。 # 分布式配置中心有那些框架 Apollo、zookeeper、springcloud config。 # 分布式配置中心的作用 动态变更项目配置信息而不必重新部署项目。 # SpringCloud Config 可以实现实时刷新吗 springcloud config实时刷新采用SpringCloud Bus消息总线。 # 什么是Spring Cloud Gateway? Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架取代Zuul网关。网关作为流量的在微服务系统中有着非常作用网关常见的功能有路由转发、权限校验、限流控制等作用。 使用了一个RouteLocatorBuilder的bean去创建路由除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filterspredicates断言的意思顾名思义就是根据具体的请求的规则由具体的route去处理filters是各种过滤器用来对请求做各种判断和修改。 Kubernetes # 什么是Kubernetes? Kubernetes与Docker有什么关系 是什么 Kubernetes是一个开源容器管理工具负责容器部署容器扩缩容以及负载平衡。作为Google的创意之作它提供了出色的社区并与所有云提供商合作。因此我们可以说Kubernetes不是一个容器化平台而是一个多容器管理解决方案。 众所周知Docker提供容器的生命周期管理Docker镜像构建运行时容器。但是由于这些单独的容器必须通信因此使用Kubernetes。因此我们说Docker构建容器这些容器通过Kubernetes相互通信。因此可以使用Kubernetes手动关联和编排在多个主机上运行的容器。 有哪些特性 自我修复: 在节点故障时可以删除失效容器重新创建新的容器替换和重新部署保证预期的副本数量kill掉健康检查失败的容器并且在容器未准备好之前不会处理客户端情况确保线上服务不会中断弹性伸缩: 使用命令、UI或者k8s基于cpu使用情况自动快速扩容和缩容应用程序实例保证应用业务高峰并发时的高可用性业务低峰时回收资源以最小成本运行服务自动部署和回滚: k8s采用滚动更新策略更新应用一次更新一个pod而不是同时删除所有pod如果更新过程中出现问题将回滚恢复确保升级不影响业务服务发现和负载均衡: k8s为多个容器提供一个统一访问入口(内部IP地址和一个dns名称)并且负载均衡关联的所有容器使得用户无需考虑容器IP问题机密和配置管理: 管理机密数据和应用程序配置而不需要把敏感数据暴露在径向力提高敏感数据安全性并可以将一些常用的配置存储在k8s中方便应用程序调用存储编排: 挂载外部存储系统无论时来自本地存储、公有云(aws)、还是网络存储nfs、GFS、ceph都作为集群资源的一部分使用极大提高存储使用灵活性批处理: 提供一次性任务定时任务满足批量数据处理和分析的场景 # Kubernetes的整体架构 Kubernetes主要由以下几个核心组件组成 etcd提供数据库服务保存了整个集群的状态kube-apiserver提供了资源操作的唯一入口并提供认证、授权、访问控制、API注册和发现等机制kube-controller-manager负责维护集群的状态比如故障检测、自动扩展、滚动更新等cloud-controller-manager是与底层云计算服务商交互的控制器kub-scheduler负责资源的调度按照预定的调度策略将Pod调度到相应的机器上kubelet负责维护容器的生命周期同时也负责VolumeCVI和网络CNI的管理kube-proxy负责为Service提供内部的服务发现和负载均衡并维护网络规则container-runtime是负责管理运行容器的软件比如docker 除了核心组件还有一些推荐的Add-ons kube-dns负责为整个集群提供DNS服务Ingress Controller为服务提供外网入口Heapster提供资源监控Dashboard提供GUIFederation提供跨可用区的集群Fluentd-elasticsearch提供集群日志采集、存储与查询 # Kubernetes中有哪些核心概念 Cluster、Master、Node Cluster Cluster集群 是计算、存储和网络资源的集合Kubernetes 利用这些资源运行各种基于容器的应用。最简单的 Cluster 可以只有一台主机它既是 Mater 也是 NodeMaster Master 是 Cluster 的大脑它的主要职责是调度即决定将应用放在哪里运行。Master 运行 Linux 操作系统可以是物理机或者虚拟机。为了实现高可用可以运行多个 Master。Node Node 的职责是运行容器应用。Node 由 Master 管理Node 负责监控并汇报容器的状态并根据 Master 的要求管理容器的生命周期。Node 运行在 Linux 操作系统可以是物理机或者是虚拟机。 Pod 基本概念 Pod 是 Kubernetes 的最小工作单元。每个 Pod 包含一个或多个容器。Pod 中的容器会作为一个整体被 Master 调度到一个 Node 上运行。引入 Pod 的目的 可管理性: 有些容器天生就是需要紧密联系一起工作。Pod 提供了比容器更高层次的抽象将它们封装到一个部署单元中。Kubernetes 以 Pod 为最小单位进行调度、扩展、共享资源、管理生命周期。通信和资源共享: Pod 中的所有容器使用同一个网络 namespace即相同的 IP 地址和 Port 空间。它们可以直接用 localhost 通信。同样的这些容器可以共享存储当 Kubernetes 挂载 volume 到 Pod本质上是将 volume 挂载到 Pod 中的每一个容器。Pod 的使用方式 运行单一容器: one-container-per-Pod 是 Kubernetes 最常见的模型这种情况下只是将单个容器简单封装成 Pod。即便是只有一个容器Kubernetes 管理的也是 Pod 而不是直接管理容器。运行多个容器: 对于那些联系非常紧密而且需要直接共享资源的容器应该放在一个 Pod 中。比如下面这个 Pod 包含两个容器一个 File Puller一个是 Web Server。File Puller 会定期从外部的 Content Manager 中拉取最新的文件将其存放在共享的 volume 中。Web Server 从 volume 读取文件响应 Consumer 的请求。这两个容器是紧密协作的它们一起为 Consumer 提供最新的数据同时它们也通过 volume 共享数据。所以放到一个 Pod 是合适的。 Controller 基本概念 Kubernetes 通常不会直接创建 Pod而是通过 Controller 来管理 Pod 的。Controller 中定义了 Pod 的部署特性比如有几个副本在什么样的 Node 上运行等。为了满足不同的业务场景Kubernetes 提供了多种 Controller包括 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 等。 各个 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 能够保证 Pod 的每个副本在整个生命周期中名称是不变的。而其他 Controller 不提供这个功能当某个 Pod 发生故障需要删除并重新启动时Pod 的名称会发生变化。同时 StatefuleSet 会保证副本按照固定的顺序启动、更新或者删除。Job Job 用于运行结束就删除的应用。而其他 Controller 中的 Pod 通常是长期持续运行。 Service、Namespace Service Deployment 可以部署多个副本每个 Pod 都有自己的 IP。而 Pod 很可能会被频繁地销毁和重启它们的 IP 会发生变化用 IP 来访问 Deployment 副本不太现实。Service 定义了外界访问一组特定 Pod 的方式。Service 有自己的 IP 和端口Service 为 Pod 提供了负载均衡。 Namespace Namespace 可以将一个物理的 Cluster 逻辑上划分成多个虚拟 Cluster每个 Cluster 就是一个 Namespace。不同 Namespace 里的资源是完全隔离的。Kubernetes 默认创建了两个 Namespace default创建资源时如果不指定将被放到这个 Namespace 中。kube-systemKubernetes 自己创建的系统资源将放到这个 Namespace 中。 # 什么是Heapster Heapster是由每个节点上运行的Kubelet提供的集群范围的数据聚合器。此容器管理工具在Kubernetes集群上本机支持并作为pod运行就像集群中的任何其他pod一样。因此它基本上发现集群中的所有节点并通过机上Kubernetes代理查询集群中Kubernetes节点的使用信息。 # 什么是Minikube Minikube是一种工具可以在本地轻松运行Kubernetes。这将在虚拟机中运行单节点Kubernetes群集。 # 什么是Kubectl Kubectl是一个平台您可以使用该平台将命令传递给集群。因此它基本上为CLI提供了针对Kubernetes集群运行命令的方法以及创建和管理Kubernetes组件的各种方法。 # kube-apiserver和kube-scheduler的作用是什么 kube -apiserver遵循横向扩展架构是主节点控制面板的前端。这将公开Kubernetes主节点组件的所有API并负责在Kubernetes节点和Kubernetes主组件之间建立通信。 kube-scheduler负责工作节点上工作负载的分配和管理。因此它根据资源需求选择最合适的节点来运行未调度的pod并跟踪资源利用率。它确保不在已满的节点上调度工作负载。 # 请你说一下kubenetes针对pod资源对象的健康监测机制 K8s中对于pod资源对象的健康状态检测提供了三类probe探针来执行对pod的健康监测 livenessProbe探针 可以根据用户自定义规则来判定pod是否健康如果livenessProbe探针探测到容器不健康则kubelet会根据其重启策略来决定是否重启如果一个容器不包含livenessProbe探针则kubelet会认为容器的livenessProbe探针的返回值永远成功。 ReadinessProbe探针 同样是可以根据用户自定义规则来判断pod是否健康如果探测失败控制器会将此pod从对应service的endpoint列表中移除从此不再将任何请求调度到此Pod上直到下次探测成功。 startupProbe探针 启动检查机制应用一些启动缓慢的业务避免业务长时间启动而被上面两类探针kill掉这个问题也可以换另一种方式解决就是定义上面两类探针机制时初始化时间定义的长一些即可。 # K8s中镜像的下载策略是什么 可通过命令kubectl explain pod.spec.containers来查看imagePullPolicy这行的解释。 K8s的镜像下载策略有三种Always、Never、IFNotPresent Always镜像标签为latest时总是从指定的仓库中获取镜像Never禁止从仓库中下载镜像也就是说只能使用本地镜像IfNotPresent仅当本地没有对应镜像时才从目标仓库中下载。 默认的镜像下载策略是当镜像标签是latest时默认策略是Always当镜像标签是自定义时也就是标签不是latest那么默认策略是IfNotPresent。 # image的状态有哪些 RunningPod所需的容器已经被成功调度到某个节点且已经成功运行PendingAPIserver创建了pod资源对象并且已经存入etcd中但它尚未被调度完成或者仍然处于仓库中下载镜像的过程UnknownAPIserver无法正常获取到pod对象的状态通常是其无法与所在工作节点的kubelet通信所致。 # 如何控制滚动更新过程 可以通过下面的命令查看到更新时可以控制的参数 [rootmaster yaml]# kubectl explain deploy.spec.strategy.rollingUpdatemaxSurge 此参数控制滚动更新过程副本总数超过预期pod数量的上限。可以是百分比也可以是具体的值。默认为1。 上述参数的作用就是在更新过程中值若为3那么不管三七二一先运行三个pod用于替换旧的pod以此类推maxUnavailable此参数控制滚动更新过程中不可用的Pod的数量。 这个值和上面的值没有任何关系举个例子我有十个pod但是在更新的过程中我允许这十个pod中最多有三个不可用那么就将这个参数的值设置为3在更新的过程中只要不可用的pod数量小于或等于3那么更新过程就不会停止。 # DaemonSet资源对象的特性 DaemonSet这种资源对象会在每个k8s集群中的节点上运行并且每个节点只能运行一个pod这是它和deployment资源对象的最大也是唯一的区别。所以在其yaml文件中不支持定义replicas除此之外与Deployment、RS等资源对象的写法相同。 它的一般使用场景如下 在去做每个节点的日志收集工作监控每个节点的的运行状态 # 说说你对Job这种资源对象的了解 Job与其他服务类容器不同Job是一种工作类容器一般用于做一次性任务。使用常见不多可以忽略这个问题。 #提高Job执行效率的方法 spec:parallelism: 2 #一次运行2个completions: 8 #最多运行8个template: metadata:# pod的重启策略是什么 可以通过命令kubectl explain pod.spec查看pod的重启策略。restartPolicy字段 Always但凡pod对象终止就重启此为默认策略。OnFailure仅在pod对象出现错误时才重启 # 描述一下pod的生命周期有哪些状态 Pending表示pod已经被同意创建正在等待kube-scheduler选择合适的节点创建一般是在准备镜像Running表示pod中所有的容器已经被创建并且至少有一个容器正在运行或者是正在启动或者是正在重启Succeeded表示所有容器已经成功终止并且不会再启动Failed表示pod中所有容器都是非0不正常状态退出Unknown表示无法读取Pod状态通常是kube-controller-manager无法与Pod通信。 # 创建一个pod的流程是什么 1 客户端提交Pod的配置信息可以是yaml文件定义好的信息到kube-apiserver 2 Apiserver收到指令后通知给controller-manager创建一个资源对象 3 Controller-manager通过api-server将pod的配置信息存储到ETCD数据中心中 4 Kube-scheduler检测到pod信息会开始调度预选会先过滤掉不符合Pod资源配置要求的节点然后开始调度调优主要是挑选出更适合运行pod的节点然后将pod的资源配置单发送到node节点上的kubelet组件上。 5 Kubelet根据scheduler发来的资源配置单运行pod运行成功后将pod的运行信息返回给schedulerscheduler将返回的pod运行状况的信息存储到etcd数据中心。 # 删除一个Pod会发生什么事情 Kube-apiserver会接受到用户的删除指令默认有30秒时间等待优雅退出超过30秒会被标记为死亡状态此时Pod的状态Terminatingkubelet看到pod标记为Terminating就开始了关闭Pod的工作 关闭流程如下 pod从service的endpoint列表中被移除如果该pod定义了一个停止前的钩子其会在pod内部被调用停止钩子一般定义了如何优雅的结束进程进程被发送TERM信号kill -14当超过优雅退出的时间后Pod中的所有进程都会被发送SIGKILL信号kill -9。 # K8s的Service是什么 Pod每次重启或者重新部署其IP地址都会产生变化这使得pod间通信和pod与外部通信变得困难这时候就需要Service为pod提供一个固定的入口。 Service的Endpoint列表通常绑定了一组相同配置的pod通过负载均衡的方式把外界请求分配到多个pod上 # k8s是怎么进行服务注册的 Pod启动后会加载当前环境所有Service信息以便不同Pod根据Service名进行通信。 # k8s集群外流量怎么访问Pod 可以通过Service的NodePort方式访问会在所有节点监听同一个端口比如30000访问节点的流量会被重定向到对应的Service上面。 # k8s数据持久化的方式有哪些 EmptyDir(空目录) 没有指定要挂载宿主机上的某个目录直接由Pod内保部映射到宿主机上。类似于docker中的manager volume。 主要使用场景 只需要临时将数据保存在磁盘上比如在合并/排序算法中作为两个容器的共享存储使得第一个内容管理的容器可以将生成的数据存入其中同时由同一个webserver容器对外提供这些页面。 emptyDir的特性 同个pod里面的不同容器共享同一个持久化目录当pod节点删除时volume的数据也会被删除。如果仅仅是容器被销毁pod还在则不会影响volume中的数据。 总结来说emptyDir的数据持久化的生命周期和使用的pod一致。一般是作为临时存储使用。 Hostpath 将宿主机上已存在的目录或文件挂载到容器内部。类似于docker中的bind mount挂载方式。 这种数据持久化方式运用场景不多因为它增加了pod与节点之间的耦合。 一般对于k8s集群本身的数据持久化和docker本身的数据持久化会使用这种方式可以自行参考apiService的yaml文件位于/etc/kubernetes/main…目录下。 PersistentVolume简称PV 基于NFS服务的PV也可以基于GFS的PV。它的作用是统一数据持久化目录方便管理。 在一个PV的yaml文件中可以对其配置PV的大小 指定PV的访问模式 ReadWriteOnce只能以读写的方式挂载到单个节点ReadOnlyMany能以只读的方式挂载到多个节点ReadWriteMany能以读写的方式挂载到多个节点。 以及指定pv的回收策略(这里的回收策略指的是在PV被删除后在这个PV下所存储的源文件是否删除) recycle清除PV的数据然后自动回收Retain需要手动回收delete删除云存储资源云存储专用 若需使用PV那么还有一个重要的概念PVCPVC是向PV申请应用所需的容量大小K8s集群中可能会有多个PVPVC和PV若要关联其定义的访问模式必须一致。定义的storageClassName也必须一致若群集中存在相同的名字、访问模式都一致两个PV那么PVC会选择向它所需容量接近的PV去申请或者随机申请。 # Replica Set 和 Replication Controller 之间有什么区别 Replica Set 和 Replication Controller 几乎完全相同。它们都确保在任何给定时间运行指定数量的 Pod 副本。不同之处在于复制 Pod 使用的选择器。Replica Set 使用基于集合的选择器而 Replication Controller 使用基于权限的选择器。 Equity-Based 选择器这种类型的选择器允许按标签键和值进行过滤。因此在外行术语中基于 Equity 的选择器将仅查找与标签具有完全相同短语的 Pod。示例假设您的标签键表示 app nginx那么使用此选择器您只能查找标签应用程序等于 nginx 的那些 Pod。 Selector-Based 选择器此类型的选择器允许根据一组值过滤键。因此换句话说基于 Selector 的选择器将查找已在集合中提及其标签的 Pod。示例假设您的标签键在nginx、NPS、Apache中显示应用程序。然后使用此选择器如果您的应用程序等于任何 nginx、NPS或 Apache则选择器将其视为真实结果。 # 其它 基础篇 基础篇主要面向的初级、中级开发工程师职位主要考察对k8s本身的理解。 kubernetes包含几个组件。各个组件的功能是什么。组件之间是如何交互的。 k8s的pause容器有什么用。是否可以去掉。 k8s中的pod内几个容器之间的关系是什么。 一个经典pod的完整生命周期。 k8s的service和ep是如何关联和相互影响的。 详述kube-proxy原理一个请求是如何经过层层转发落到某个pod上的整个过程。请求可能来自pod也可能来自外部。 rc/rs功能是怎么实现的。详述从API接收到一个创建rc/rs的请求到最终在节点上创建pod的全过程尽可能详细。另外当一个pod失效时kubernetes是如何发现并重启另一个pod的 deployment/rs有什么区别。其使用方式、使用条件和原理是什么。 cgroup中的cpu有哪几种限制方式。k8s是如何使用实现request和limit的。 拓展实践篇 拓展实践篇主要面向的高级开发工程师、架构师职位主要考察实践经验和技术视野。 设想一个一千台物理机上万规模的容器的kubernetes集群请详述使用kubernetes时需要注意哪些问题应该怎样解决提示可以从高可用高性能等方向覆盖到从镜像中心到kubernetes各个组件等 设想kubernetes集群管理从一千台节点到五千台节点可能会遇到什么样的瓶颈。应该如何解决。 kubernetes的运营中有哪些注意的要点。 集群发生雪崩的条件以及预防手段。 设计一种可以替代kube-proxy的实现 sidecar的设计模式如何在k8s中进行应用。有什么意义。 灰度发布是什么。如何使用k8s现有的资源实现灰度发布。 介绍k8s实践中踩过的比较大的一个坑和解决方式。 Service Mesh # 什么是Service Mesh服务网格 Service Mesh是专用的基础设施层轻量级高性能网络代理。提供安全的、快速的、可靠地服务间通讯与实际应用部署一起但对应用透明。
文章转载自:
http://www.morning.jtcq.cn.gov.cn.jtcq.cn
http://www.morning.gwtbn.cn.gov.cn.gwtbn.cn
http://www.morning.wqnc.cn.gov.cn.wqnc.cn
http://www.morning.hlwzd.cn.gov.cn.hlwzd.cn
http://www.morning.bkwd.cn.gov.cn.bkwd.cn
http://www.morning.bszmy.cn.gov.cn.bszmy.cn
http://www.morning.rsnn.cn.gov.cn.rsnn.cn
http://www.morning.xjqhh.cn.gov.cn.xjqhh.cn
http://www.morning.vuref.cn.gov.cn.vuref.cn
http://www.morning.nicetj.com.gov.cn.nicetj.com
http://www.morning.ypzsk.cn.gov.cn.ypzsk.cn
http://www.morning.tbcfj.cn.gov.cn.tbcfj.cn
http://www.morning.dglszn.com.gov.cn.dglszn.com
http://www.morning.tsgxz.cn.gov.cn.tsgxz.cn
http://www.morning.lsyk.cn.gov.cn.lsyk.cn
http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn
http://www.morning.tldhq.cn.gov.cn.tldhq.cn
http://www.morning.gbyng.cn.gov.cn.gbyng.cn
http://www.morning.tnhqr.cn.gov.cn.tnhqr.cn
http://www.morning.fkwp.cn.gov.cn.fkwp.cn
http://www.morning.taojava.cn.gov.cn.taojava.cn
http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn
http://www.morning.tkgxg.cn.gov.cn.tkgxg.cn
http://www.morning.mmsf.cn.gov.cn.mmsf.cn
http://www.morning.rqxtb.cn.gov.cn.rqxtb.cn
http://www.morning.dnqlba.cn.gov.cn.dnqlba.cn
http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn
http://www.morning.divocn.com.gov.cn.divocn.com
http://www.morning.wqrdx.cn.gov.cn.wqrdx.cn
http://www.morning.knswz.cn.gov.cn.knswz.cn
http://www.morning.wklhn.cn.gov.cn.wklhn.cn
http://www.morning.xlpdm.cn.gov.cn.xlpdm.cn
http://www.morning.pjrgb.cn.gov.cn.pjrgb.cn
http://www.morning.fglyb.cn.gov.cn.fglyb.cn
http://www.morning.mcjp.cn.gov.cn.mcjp.cn
http://www.morning.ktblf.cn.gov.cn.ktblf.cn
http://www.morning.xdfkrd.cn.gov.cn.xdfkrd.cn
http://www.morning.tpmnq.cn.gov.cn.tpmnq.cn
http://www.morning.qpfmh.cn.gov.cn.qpfmh.cn
http://www.morning.gbtty.cn.gov.cn.gbtty.cn
http://www.morning.tdnbw.cn.gov.cn.tdnbw.cn
http://www.morning.ngznq.cn.gov.cn.ngznq.cn
http://www.morning.dwncg.cn.gov.cn.dwncg.cn
http://www.morning.ghryk.cn.gov.cn.ghryk.cn
http://www.morning.nfbnl.cn.gov.cn.nfbnl.cn
http://www.morning.ldynr.cn.gov.cn.ldynr.cn
http://www.morning.mbbgk.com.gov.cn.mbbgk.com
http://www.morning.yrxcn.cn.gov.cn.yrxcn.cn
http://www.morning.dlgjdg.cn.gov.cn.dlgjdg.cn
http://www.morning.xtrnx.cn.gov.cn.xtrnx.cn
http://www.morning.zrrgx.cn.gov.cn.zrrgx.cn
http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn
http://www.morning.rbkml.cn.gov.cn.rbkml.cn
http://www.morning.jqbmj.cn.gov.cn.jqbmj.cn
http://www.morning.nlywq.cn.gov.cn.nlywq.cn
http://www.morning.zrdhd.cn.gov.cn.zrdhd.cn
http://www.morning.fdrb.cn.gov.cn.fdrb.cn
http://www.morning.gwmny.cn.gov.cn.gwmny.cn
http://www.morning.prhqn.cn.gov.cn.prhqn.cn
http://www.morning.zmlnp.cn.gov.cn.zmlnp.cn
http://www.morning.djlxz.cn.gov.cn.djlxz.cn
http://www.morning.cnfxr.cn.gov.cn.cnfxr.cn
http://www.morning.ymtbr.cn.gov.cn.ymtbr.cn
http://www.morning.xhgcr.cn.gov.cn.xhgcr.cn
http://www.morning.nkbfc.cn.gov.cn.nkbfc.cn
http://www.morning.cpnlq.cn.gov.cn.cpnlq.cn
http://www.morning.blxlf.cn.gov.cn.blxlf.cn
http://www.morning.hcgbm.cn.gov.cn.hcgbm.cn
http://www.morning.qkrz.cn.gov.cn.qkrz.cn
http://www.morning.dmwck.cn.gov.cn.dmwck.cn
http://www.morning.cmldr.cn.gov.cn.cmldr.cn
http://www.morning.zmlnp.cn.gov.cn.zmlnp.cn
http://www.morning.nxfuke.com.gov.cn.nxfuke.com
http://www.morning.pnmnl.cn.gov.cn.pnmnl.cn
http://www.morning.dpdns.cn.gov.cn.dpdns.cn
http://www.morning.jjnql.cn.gov.cn.jjnql.cn
http://www.morning.yhwmg.cn.gov.cn.yhwmg.cn
http://www.morning.rbjth.cn.gov.cn.rbjth.cn
http://www.morning.gnzsd.cn.gov.cn.gnzsd.cn
http://www.morning.mtyhk.cn.gov.cn.mtyhk.cn
http://www.tj-hxxt.cn/news/259603.html

相关文章:

  • 高度重视部门网站建设手机创建个人网站 免费
  • 微信公众号做微网站吗福建省建设干部培训中心网站首页
  • 企业多语言网站开发备案名 网站名
  • 查询网站到期时间阿里万网怎么做网站
  • 义乌网站建设托管平面图怎么画
  • 外贸网站营销方案中国菲律宾足球直播
  • 长沙网站设计报价wordpress 主机和域名绑定域名
  • 手机网站发布页电脑版网站滑块验证怎么做
  • 网站打开速度慢优化济南市规划局官网
  • 济南企业网站建设哪家好寿光建设局网站
  • 万维网站续费多少一年电竞网站方案设计
  • 做代收的网站有哪些网站报错 500
  • 西安专业做网站公司屏山县龙华镇中心村建设招标网站
  • 亚马逊网站链接兰州手机网站制作公司哪家好
  • 哪些网站可以免费做代码网站开发公司怎么接单子
  • 建设网站美海房地产免费域名qq空间申请
  • 零六年自助建设网站站内关键词排名软件
  • 企腾做的网站怎么样天津品牌网站建设是什么
  • 网站建设 推神网络asp网站相册
  • 简述电子商务网站开发流程企业网站必须备案吗
  • 网站优化的监测评价晋中城市建设招标网站
  • php做网站需要学的东西服务器机柜
  • 公司网站建设费用会计处理网友
  • 百度推广登陆wordpress商品分类标题seo
  • 公司免费招聘网站如果想看网站的收费电影应该怎么做
  • 四川住房和城乡建设厅网站题库html编辑器怎么用
  • 莱芜手机网站设计公司wordpress文章如何去除p节点
  • pagekit和wordpress青岛网站seo
  • 石油大学 网页设计与网站建设wordpress edit_post
  • 手机pc微信三合一网站云服务器网站崩溃的原因