• ingress是如何工作的


    一, ingress

    ingress是一层代理

    nginx, HAproxy,envoy 都是反向代理软件,代理软件可以监听一个地址,比如www.baidu.com, 这个地址接收到请求之后,反向代理软件来配置一些规则,规则就是一些配置文件,配置文件规定

    接收的请求的跳转规则,跳到哪些服务器上来处理这些请求。那么配置文件如何生成呢?跳转规则在k8s里就抽象成了一个对象,就是ingress

    Ingress Controller 这个pod, 就是监听ingress这些对象,并且把它转换成nginx这些代理软件的配置文件

    二,service

    服务在pod里运行,我们访问服务可以通过pod的ip来访问,但是pod的ip是不固定的,我们需要一个静态的访问入口去访问服务,怎么实现呢?通过service来提供一个静态的访问地址来实现

    需要把web服务发布至集群内部或者外部,不同类型的服务,service提供静态访问地址的方式也不同,分为几种:

    1. clusterIP(Headless): 访问一组pod提供的服务的统一的虚拟ip,虚拟ip只能在集群内部访问,集群外部不能访问此虚拟ip
    2. NodePort: 集群外部访问服务如何访问呢,集群可以访问到node节点, 在节点开一个端口,端口接收到的请求,转发到后端这组pod里。
    3. LoadBalancer:  这种类型service要外部设备交互,共同提供一个静态访问地址
    4. ExternalName:  集群外部有一个服务,比如google, 我想在我集群内部通过另外一个名字去访问,我可以定义个ExternalName, 这样的话,我就可以通过访问集群内部名字,再把本地的域名转到google的网站去

    DNS: 域名服务器,一个域名映射多个ip地址,dns通过轮询的方式返回这些地址。客户端查询一次域名之后,域名会返回一个ip地址给客户端,同时返回客户端一个ttl,ttl过期之前,客户端再访问的时候,就会直接访问这个ip地址。这就是dns的ttl问题,就是客户端往往会缓存上一次的域名查询结果,即使后端的服务器ip发生了变化,你客户端还是会往错误的地址发请求。

    负载均衡: 所谓的负载均衡,很多时候都是在数据包的基础之上做文章,先看下网络数据包格式:

     负载均衡,如果想把请求转发到后端不同服务地址上,只需要修改destination ip 或者 destination port 

    LB: Load Balance , 负载均衡缩写

    ELB: Elastic Load Balance ,弹性负载均衡

  • 相关阅读:
    简单的统计指定进程ID(或进程名)CPU、内存脚本
    如何快速破解关注微信公众号才能阅读全文的技术文章 All In One
    2022 软考 All In One
    无任何框架依赖的纯原生 HTML CSS JS 练习项目 All In One
    TypeScript Type Aliases vs Interfaces All In One
    python 中创建函数及传递参数
    python 统计fasta文件每条scalfold的碱基长度
    linux 中 shasum命令
    ubuntu 中如何创建root用户
    ubuntu 中 设置putty登录
  • 原文地址:https://www.cnblogs.com/chaojiyingxiong/p/16052590.html
Copyright © 2020-2023  润新知