Kubernetes (K8s) 中的 Ingress解析

目录

  • 一、核心概念
  • 二、YAML配置示例
  • 三、注意事项

Kubernetes (K8s) 中的 Ingress是一种资源对象,它定义了如何从集群外部访问集群内部服务的规则。Ingress 提供了一种更高级别的抽象,允许用户管理进入集群的HTTP和HTTPS流量,而无需直接暴露每个服务。它支持路由规则、TLS termination(SSL卸载)、基于域名的虚拟主机等功能,从而使得对外服务的管理和配置变得更加灵活和高效。

一、核心概念

  1. Ingress资源:定义了到Service的路由规则,这些规则可以基于主机名(域名)和路径来匹配外部请求,并决定将请求路由到集群内的哪个Service。

  2. Ingress Controller:实际上负责实现Ingress资源定义的规则。它监听API服务器的变化,读取Ingress对象,并配置软件负载均衡器(如Nginx、Traefik、HAProxy或Envoy等),以便将外部流量正确路由到对应的Service和Pods。

  3. 路由规则:Ingress资源可以定义多个路由规则,每个规则可以指定不同的主机名(用于虚拟主机)和路径前缀,以及对应的目标Service和端口。

  4. TLS/SSL终止:Ingress还支持TLS/SSL证书的配置,可以在Ingress Controller处终止HTTPS连接,然后以未加密的形式将请求转发给后端Service,这样可以简化证书管理并提高性能。

  5. Class:Ingress Class资源允许用户指定哪种Ingress控制器应该处理特定的Ingress资源。这对于多租户环境或想要使用不同类型的Ingress控制器来处理不同服务的场景非常有用。

二、YAML配置示例

以下是一个基本的Ingress配置示例,展示了如何定义两个路由规则,分别指向两个不同的Service:

yaml 复制代码
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /service1(/|$)(.*)
        pathType: Prefix
        path: service1-service
        service:
          name: service1
          port:
            number: 8080
  - host: myapp.example.com
    http:
      paths:
      - path: /service2(/|$)(.*)
        pathType: Prefix
        path: service2-service
        service:
          name: service2
          port:
            number: 8080

在这个例子中,两个不同的路径前缀(/service1/service2)被映射到了集群内名为service1service2的不同Service上。

三、注意事项

  • 选择合适的Ingress Controller非常重要,因为它直接影响到性能、安全性及可扩展性。
  • TLS证书的管理是使用Ingress时的一个重要方面,确保正确配置和更新证书。
  • Ingress资源的更新通常需要时间来反映到实际的路由规则上,因为更改需要由Ingress Controller检测并应用。

Ingress是Kubernetes服务暴露和管理外部流量的关键组件,它极大地简化了微服务架构中的网络配置和管理。

相关推荐
荣光波比17 小时前
K8S(一)—— 云原生与Kubernetes(K8S)从入门到实践:基础概念与操作全解析
云原生·容器·kubernetes
伞啊伞17 小时前
K8s概念基础(一)
云原生·容器·kubernetes
hello_25018 小时前
k8s基础监控promql
云原生·容器·kubernetes
静谧之心20 小时前
在 K8s 上可靠运行 PD 分离推理:RBG 的设计与实现
云原生·容器·golang·kubernetes·开源·pd分离
1024find1 天前
Spark on k8s部署
大数据·运维·容器·spark·kubernetes
能不能别报错2 天前
K8s学习笔记(十六) 探针(Probe)
笔记·学习·kubernetes
能不能别报错2 天前
K8s学习笔记(十四) DaemonSet
笔记·学习·kubernetes
火星MARK2 天前
k8s面试题
容器·面试·kubernetes
赵渝强老师2 天前
【赵渝强老师】Docker容器的资源管理机制
linux·docker·容器·kubernetes
能不能别报错2 天前
K8s学习笔记(十五) pause容器与init容器
笔记·学习·kubernetes