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服务暴露和管理外部流量的关键组件,它极大地简化了微服务架构中的网络配置和管理。

相关推荐
heimeiyingwang8 小时前
【架构实战】Kubernetes存储实战:从EmptyDir到Ceph CSI的持久化存储选型指南
ceph·架构·kubernetes
QX_hao8 小时前
【Kubernetes】 的三个Probe
容器·kubernetes
猫吃了源码13 小时前
k9s简介和安装
linux·docker·kubernetes
heimeiyingwang17 小时前
【架构实战】Kubernetes故障排查全景图:从Pod异常到集群雪崩的诊断手册
容器·架构·kubernetes
AAA@峥17 小时前
K8s 资源管控:ResourceQuota 与 LimitRange 机制详解与实战
云原生·容器·kubernetes
秦渝兴18 小时前
Ansible 自动化部署 K8s 三节点集群(完整教程)
kubernetes·自动化·ansible
云川之下19 小时前
【k8s】Docker inspect 命令
docker·容器·kubernetes
猫吃了源码20 小时前
CentOS7使用Kubeadm安装部署K8s(Kubernetes)最新稳定版本1.26.x
云原生·容器·kubernetes
张忠琳21 小时前
【k3s】AutoK3s v0.9.3 —— Part 7 辅助模块超深度逐行分析
云原生·容器·kubernetes·k3s·autok3s
张忠琳1 天前
【k3s】AutoK3s v0.9.3 Part 1 入口与 CLI 命令模块 — 超深度逐行分析之三
云原生·容器·kubernetes·k3s·autok3s