在 Kubernetes(简称 k8s)中,服务的访问通常通过 ClusterIP、NodePort 或 LoadBalancer 等方式实现。然而,当集群中运行着多个微服务应用时,直接暴露每个服务的端口会带来管理复杂性和安全风险。为了更高效地管理对外服务的访问路径,Kubernetes 引入了 Ingress 资源对象。Ingress 本质上是一个 HTTP/HTTPS 的路由规则配置,它允许外部用户通过统一的入口访问集群内部的不同服务。本文将从 Ingress 的原理、安装方法以及使用方式三个方面进行详细解析,帮助读者全面理解并掌握其使用技巧。
Ingress 是 Kubernetes 中用于管理外部访问的 API 对象,它定义了如何将外部流量路由到集群内的不同服务。Ingress 的核心作用是提供一个“统一入口”,通过配置规则将不同的域名或路径映射到对应的后端服务。
Ingress 控制器的作用
Ingress 本身并不具备实际的流量转发能力,它需要依赖一个 Ingress 控制器(Ingress Controller) 来实现具体的路由逻辑。常见的 Ingress 控制器包括 Nginx Ingress Controller、HAProxy、Traefik 等。这些控制器会监听 Kubernetes 中的 Ingress 资源变化,并根据配置动态更新其反向代理规则。
基于主机名和路径的路由
Ingress 支持两种主要的路由方式:
基于主机名(Host):例如 example.com,可以将该域名下的所有请求路由到指定的服务。
基于路径(Path):例如 /api/v1/,可以将特定路径的请求转发给对应的服务。
TLS 支持
Ingress 还支持 HTTPS 协议,可以通过 Secret 资源来配置 SSL 证书,从而实现安全的 HTTPS 访问。
负载均衡与高可用
Ingress 控制器通常部署为多个副本,以实现高可用性。同时,它还可以结合 Kubernetes 的 Service 资源,实现对后端服务的负载均衡。
在 Kubernetes 集群中,要使用 Ingress 功能,首先需要部署一个 Ingress 控制器。以下以常用的 Nginx Ingress Controller 为例,介绍其安装过程。
准备环境
在安装之前,确保 Kubernetes 集群已正常运行,并且具有至少一个节点可以部署 Ingress 控制器。此外,需确保集群中已启用 --enable-admission-plugins=NamespaceLifecycle 等必要插件。
下载并部署 Ingress 控制器
可以通过官方提供的 YAML 文件进行部署。例如,使用如下命令:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/mandatory.yaml该命令会创建必要的资源,如 Deployment、Service、ConfigMap 等。
配置 Ingress 控制器的 Service 类型
默认情况下,Ingress 控制器的 Service 类型为 ClusterIP,无法从外部访问。因此,需要将其修改为 NodePort 或 LoadBalancer 类型,以便外部用户能够访问。例如:
kubectl edit service ingress-nginx-controller修改 type 字段为 LoadBalancer 或 NodePort,并保存。
验证部署状态
使用以下命令查看 Ingress 控制器是否正常运行:
kubectl get pods -n ingress-nginx如果 Pod 处于 Running 状态,则表示安装成功。
一旦 Ingress 控制器部署完成,就可以开始配置 Ingress 资源,实现对外服务的访问控制。
编写 Ingress 配置文件
下面是一个简单的 Ingress 示例,将 example.com 的请求转发到名为 my-service 的服务上:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80在此配置中,my-service 是一个已存在的 Kubernetes Service,负责处理具体的业务逻辑。
应用 Ingress 配置
将上述 YAML 文件保存为 ingress.yaml,然后执行以下命令进行部署:
kubectl apply -f ingress.yaml部署完成后,Kubernetes 会自动将 Ingress 规则同步到 Ingress 控制器中。
测试访问
在本地计算机上,可以使用浏览器或 curl 命令测试访问是否成功。例如:
curl http://example.com如果返回预期内容,则说明 Ingress 配置正确。
配置 HTTPS 和 TLS
若需要支持 HTTPS,可以在 Ingress 中配置 TLS 信息。例如:
spec:
tls:
- hosts:
- example.com
secretName: my-tls-secret
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 443此外,还需要提前创建一个包含 SSL 证书的 Secret 资源,例如:
kubectl create secret tls my-tls-secret --cert=tls.crt --key=tls.key![]()
Ingress 是 Kubernetes 中实现对外服务访问的重要组件,它通过统一的入口管理多个服务,提升了系统的可维护性和安全性。本文从 Ingress 的原理出发,详细介绍了其安装与使用流程,涵盖了基本配置、HTTPS 支持等内容。对于 Kubernetes 用户而言,掌握 Ingress 的使用不仅能提升开发效率,还能更好地应对复杂的网络架构需求。随着云原生技术的不断发展,Ingress 作为服务网关的核心功能,将在未来发挥更加重要的作用。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
最新新闻资讯简报,各类国内、国际、体育、娱乐、科技等资讯AI智能总结摘要及详细内容,适合各类AI Agent、穿戴设备进行资讯播报、阅读。
通过传递运营商2G/3G/4G/5G基站的MCC、MNC、TAC、CID信息查询所在位置信息。为用户提供位置服务,如实时导航、周边推荐等。
通过身份证号+姓名+人脸照片的一致性比对,系统与公安库中的身份证登记照比对,判断是否为同一人,核验用户信息真实性。