zoukankan      html  css  js  c++  java
  • k8s,spring cloud gateway,nginx搭建随笔

    最近完成了基于k8s的springcloud搭建,记录下过程。

    K8S的组件介绍

    Pod

    一个Pod是一组容器的集合,它们共享网络,我们的微服务注册中心是Consul,微服务的容器和Consul客户端的容器组成了一个Pod.这样微服务访问Consul客户端就像访问本地一样了.使用localhost就可以访问到Consul.然后Consul客户端再和服务端通信.

    Service

    Service是Pod提供的服务的抽象,因为K8S的Pod的容器是不稳定的,可能会挂掉,这种情况下,K8S就会为我们重新启动POD,维持着指定的状态。Pod里的容器分配的IP是不同的,这就需要通过Service给不同的服务的IP绑定到一个Service名字上,以后通过Servie就能解析出对应的Pod的IP。在同一个K8S集群中,Service的name还充当着DNS-Name,需要在Pod-A里访问另一个Service里的Pod-B时(比如应用需要访问另一个Service提供的Redis的服务),使用Servie name就可以解析出名字。

    Deployment

    Deployment控制RS,RS控制Pod,这一整套,向外提供稳定可靠的Service。至于什么是RS,笔者目前还没有深入了解,项目中这个概念也比较淡化,先搁置了。

    ConfigMap

    ConfigMap可以把配置或者配置文件挂载到容器中,生命周期和Pod独立

    PersistVolume(PV)和PersisteVolumeClaim(PVC)

    k8s中的存储系统,生命周期和容器独立的存储。可以声明把pvc挂载到容器的某一个目录。pv是由集群管理员管理的,我们不用管。

    Ingress

    Ingress主要负责路由。项目由于是前后端分离,所有的请求都要先经过nginx,所以Ingress这一层需要先把所有请求都转发到nginx。有没有更好的路由方式笔者还不知道,需要继续学习。

    Nginx

    请求转发到Nginx之后,Nginx继续对请求进行转发:如果请求的是页面,css,html这些静态资源,就直接在nginx服务器中访问;如果要访问RestApi,就对请求进行转发,转发到Spring cloud gateway里。
    这里要注意的地方是localtion的配置,请求api需要在location那里加上proxy_pass ,server_name配置的是nginx的service的name。
    这里我们对proxy_pass的location设计是使用了/webapi这个来进行动静分离。

    Spring cloud gateway

    微服务的网关接到来自nginx的请求,会根据网关的application.yml中配置的转发规则进行转发。对/webapi开头的,会使用 -StripPrefix=1的fitler,这样网关转发到微服务的时候就会把/webapi去掉

  • 相关阅读:
    input表单元素的默认padding不一致问题
    【转】iOS25彩票 幸运转盘
    微分起源
    转载--微分几何为何必然兴起?
    前缀和?or差分序列?
    noip2014 小结
    2019艾瑞(北京)年度高峰会议-数能驱动新变量
    MSF初体验
    s实现指定时间自动跳转到某个页面
    css实现居中
  • 原文地址:https://www.cnblogs.com/yuuken/p/13083391.html
Copyright © 2011-2022 走看看