zoukankan      html  css  js  c++  java
  • Kubernetes-Ingress

    1 介绍

    1.1 概念

      Ingress意为进入或进入的行为;进入的权利;进入的手段或地点;入口。
      Ingress支持L7(网络第七层,HTTP/HTTPS)负载均衡。

    1.2 Ingress的需求

      每个LoadBalancer服务都需要自己的负载均衡器,以及独有的公有IP地址,而Ingress只需要一个公网IP就能为许多服务提供访问,当客户端向Ingress发送HTTP请求时,Ingress会根据请求的主机名和路径决定请求转发到的服务。

    1.3 Ingress暴露服务

    Ingress暴露服务
    只有Ingress控制器在集群中运行,Ingress资源才能正常工作。

    2 Ingress使用

    2.1 创建Ingress资源

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: ingress_name
    spec:
      rules:
      - host: ingress.example.com
        http:
          paths:
          - path: /
             backend:
               serviceName: service_name
               servicePort: 80
    

    $ kubectl create -f xxx.yaml

    2.2 查询

    $ kubectl get ingresses
    get ingresses
    其中,ADDRESS为服务暴露出来的IP地址。

    3 Ingress工作原理

    通过Ingress访问pod

    1)客户端首先对ingress.example.com执行DNS查找;
    2)DNS服务器(或本地操作系统)返回Ingress控制器的IP;
    3)客户端向Ingress控制器发送HTTP请求,并在Host头中指定ingress.example.com;
    4)控制器从该头部确定客户端尝试访问哪个服务,通过与该服务关联的Endpoint对象查看pod IP;
    5)将客户端的请求转发给其中一个pod。

    4 服务映射方式

    4.1 将不同的服务映射到相同主机的不同路径

    ...
      - host: service_name.example.com
        http:
          paths: 
          - path: /service_path1
            backend: 
              serviceName: service_name1
              servicePort: 80
          - path: /service_path2
            backend: 
              serviceName: service_name2
              servicePort: 80
    

      对service_name.example.com/service_path1的请求转发到service_name1服务上;service_name.example.com/service_path2的请求转发到service_name2服务上。
      请求将发送到了两个不同的服务上,客户端可以通过一个IP地址访问两种不同的服务。

    4.2 将不同的服务映射到不同的主机上

    ...
    spec:
      rules:
      - host: service_name1.example.com
        http:
          paths:
          - path: /
            backend:
              serviceName: service_name1
              servicePort: 80
      - host: service_name2.example.com
        http:
          paths:
          - path: /
            backend:
              serviceName: service_name2
              servicePort: 80
    

      对service_name1.example.com的请求转发至service_name1服务上;对service_name2.example.com的请求转发至service_name2服务上;
      根据请求中的Host头,控制器收到的请求将被转发到service_name1service_name2服务,DNS需要将service_name1.example.comservice_name2.example.com域名指向Ingress控制器和IP地址。

  • 相关阅读:
    大数据和云计算
    关于移动开发的一些讨论(在有些场合,移动就是噱头,胡乱鼓吹是不负责任的)
    软件开发设计中的两个误区
    【转】从底层了解ASP.NET体系结构
    DotNet命名规范参考(转)
    PAD会取代PC吗
    转:关于http server
    AOP 面向方面的编程 Aspect Oriented Programing --第一次听说呢,汗!
    关于字符集(讲的比较清楚的一片字符集科普文章)
    .NET vs JAVA
  • 原文地址:https://www.cnblogs.com/Andya/p/12402720.html
Copyright © 2011-2022 走看看