Kubernetes从零到精通(12-Ingress、Gateway API)

news/2024/9/18 21:04:58 标签: kubernetes, gateway, 容器

        Ingress和Gateway API都是Kubernetes中用于管理外部访问集群服务的机制,但它们有不同的设计理念和适用场景。它们的基本原理是通过配置规则,将来自外部的网络流量路由到Kubernetes集群内部的服务上。

Ingress/Gateway API和Service

        Ingress/Gateway API主要解决Kubernetes集群外部(例如互联网用户)访问Kubernetes集群内部资源的需求;

        Service主要解决Kubernetes集群内部资源互相访问;

        从功能实现上看,Service的NodePort和LoadBalancer模式也能实现集群外部的访问;但Ingress/Gateway API提供了更高级、灵活的流量管理、安全认证、跨协议等功能,解决了Service的局限性。

Ingress

Ingress简介

        Ingress是Kubernetes中较早提出的网络流量管理机制,目的是通过一个单一的入口点管理集群的外部HTTP和HTTPS流量。这样,多个服务可以通过一个统一的域名或IP公开,而不必为每个服务分别暴露端口。

使用说明:
Ingress Controller:Ingress本身只定义了规则,真正处理网络流量的任务由Ingress Controller完成。常见的Ingress Controller有NGINX、Traefik和HAProxy等。必须部署Ingress Controller,才能让Ingress资源生效。
Ingress资源:Ingress资源用来定义如何将外部HTTP/HTTPS流量转发到集群内的服务。其典型配置包括:
Host:用于根据域名路由流量。
Path:根据URL路径路由流量。
TLS:定义TLS证书以支持HTTPS。
Backend:指定服务名称和端口,流量会被转发到这个服务上。

Ingress示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: default
spec:
  ingressClassName: nginx-example
  rules:
  - host: example.com
    http:
      paths:
      - path: /app1
        pathType: Prefix
        backend:
          service:
            name: app1-service
            port:
              number: 80
  - host: another.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: another-service
            port:
              number: 80

         在这个例子中,Ingress资源将域名example.com下/app1路径的流量转发到名为app1-service的Service上;将域名another.com下/路径的流量转发到名为another-service的Service上。

Gateway API

Gateway API简介

        Gateway API是Kubernetes网络管理的较新机制,设计目的是为了替代Ingress,提供更灵活和可扩展的流量管理能力。它将网关(Gateway)和路由(Routes)解耦,允许更复杂的配置,并支持多种协议(不仅仅是HTTP/HTTPS,还包括TCP、UDP 等)。Gateway API更适合企业级场景,支持多租户、跨集群流量管理等复杂的需求。

使用说明:
GatewayClass:定义网关的类型。例如,可以有不同的GatewayClass代表不同类型的负载均衡器(如云供应商的负载均衡器、NGINX、Envoy等)。
Gateway:定义实际的网关实例,指定入口端口、协议和可用的路由规则。
HTTPRoute、TCPRoute等:这些资源定义了如何根据特定规则(如域名、路径、协议等)将流量路由到后端服务。它们比Ingress更灵活,可以在不同的网关之间共享路由规则。

Gateway API示例

apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: my-gateway
  namespace: default
spec:
  gatewayClassName: my-gateway-class
  listeners:
  - name: http
    protocol: HTTP
    port: 80
    routes:
      kind: HTTPRoute
      selector:
        matchLabels:
          app: my-route

---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: my-route
  namespace: default
  labels:
    app: my-route
spec:
  rules:
  - matches:
    - path:
        type: Prefix
        value: /app1          # /app1路径路由到app1-service
      hostnames:
      - example.com  # 根据域名example.com匹配
    backendRefs:
    - name: app1-service
      port: 80
  - matches:
    - path:
        type: Prefix
        value: /          # 根路径路由到another-service
      hostnames:
      - another.com  # 根据域名another.com匹配
    backendRefs:
    - name: another-service
      port: 80

         在这个例子中,Gateway资源将域名example.com下/app1路径的流量转发到名为app1-service的Service上;将域名another.com下/路径的流量转发到名为another-service的Service上。

 


http://www.niftyadmin.cn/n/5664521.html

相关文章

linux-网络管理-防火墙配置

Linux 网络管理:防火墙配置 1. 防火墙概述 防火墙是保护计算机系统和网络免受未经授权访问和网络攻击的安全机制。Linux 系统中,防火墙通过控制进入和离开网络的数据包,实现网络流量的过滤和管理。 Linux 上的防火墙配置工具有多种&#x…

【每日刷题】Day124

【每日刷题】Day124 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 079. 子集 - 力扣(LeetCode) 2. 1863. 找出所有子集的异或总和再求和 …

笔试强训day15

平方数 牛妹是一个喜欢完全平方数的女孩子。 牛妹每次看到一个数 x,都想求出离 x 最近的完全平方数 y。 每次手算太麻烦,所以牛妹希望你能写个程序帮她解决这个问题。 形式化地讲,你需要求出一个正整数 y,满足 y 可以表示成 a2a^…

Linux定时启动jar应用shell脚本分享

1、如何精确找到jar应用进程 # 以 dist-app-manage.jar 为例 [rootlocalhost dist-app-manage-8083]# ps -ef|grep dist-app-manage.jar root 5134 5033 0 21:24 pts/0 00:00:00 grep --colorauto dist-app-manage.jar root 21766 1 1 Sep02 ? …

window下idea中scala的配置

目录 Scala安装步骤: 1.下载scala安装包 2.配置环境变量: 3.检查scala是否安装成功: 4.idea安装scala插件 5.导入scala-sdk 6.新建scala文件 Scala安装步骤: 1.下载scala安装包 访问Scala官网:https://www.sca…

自然语言处理实战项目

自然语言处理(NLP)实战项目是一个结合了理论学习和实践操作的综合性任务,旨在通过具体项目来加深学习者对NLP技术的理解和应用能力。以下是一些常见的NLP实战项目及其描述: 1. 文本分类 项目描述: 文本分类是NLP中的…

原生 input 中的 “type=file“ 上传文件

目标&#xff1a;实现文件上传功能 原型图&#xff1a; HTML部分&#xff1a; <div class"invoice-item"><div class"invoice-title">增值税专用发票</div><div class"invoice-box"><el-form-item label"标准…

《MmAP : Multi-Modal Alignment Prompt for Cross-Domain Multi-Task Learning》中文校对版

系列论文研读目录 文章目录 系列论文研读目录摘要1 引言2 相关工作3 方法3.1对比图像预训练3.2 多模式对齐提示3.3 多任务提示学习框架 4 实验4.1基准设置4.2实验结果4.3消融研究 5、结论 摘要 多任务学习&#xff08;Multi-Task Learning&#xff0c;MTL&#xff09;是为了同…