掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

k8s中ingress原理、安装、使用详解

在 Kubernetes(简称 k8s)中,服务的访问通常通过 ClusterIP、NodePort 或 LoadBalancer 等方式实现。然而,当集群中运行着多个微服务应用时,直接暴露每个服务的端口会带来管理复杂性和安全风险。为了更高效地管理对外服务的访问路径,Kubernetes 引入了 Ingress 资源对象。Ingress 本质上是一个 HTTP/HTTPS 的路由规则配置,它允许外部用户通过统一的入口访问集群内部的不同服务。本文将从 Ingress 的原理、安装方法以及使用方式三个方面进行详细解析,帮助读者全面理解并掌握其使用技巧。

一、Ingress 的原理

Ingress 是 Kubernetes 中用于管理外部访问的 API 对象,它定义了如何将外部流量路由到集群内的不同服务。Ingress 的核心作用是提供一个“统一入口”,通过配置规则将不同的域名或路径映射到对应的后端服务。

  1. Ingress 控制器的作用

Ingress 本身并不具备实际的流量转发能力,它需要依赖一个 Ingress 控制器(Ingress Controller) 来实现具体的路由逻辑。常见的 Ingress 控制器包括 Nginx Ingress Controller、HAProxy、Traefik 等。这些控制器会监听 Kubernetes 中的 Ingress 资源变化,并根据配置动态更新其反向代理规则。

  1. 基于主机名和路径的路由

Ingress 支持两种主要的路由方式:

基于主机名(Host):例如 example.com,可以将该域名下的所有请求路由到指定的服务。

基于路径(Path):例如 /api/v1/,可以将特定路径的请求转发给对应的服务。

  1. TLS 支持

Ingress 还支持 HTTPS 协议,可以通过 Secret 资源来配置 SSL 证书,从而实现安全的 HTTPS 访问。

  1. 负载均衡与高可用

Ingress 控制器通常部署为多个副本,以实现高可用性。同时,它还可以结合 Kubernetes 的 Service 资源,实现对后端服务的负载均衡。

二、Ingress 的安装

在 Kubernetes 集群中,要使用 Ingress 功能,首先需要部署一个 Ingress 控制器。以下以常用的 Nginx Ingress Controller 为例,介绍其安装过程。

  1. 准备环境

在安装之前,确保 Kubernetes 集群已正常运行,并且具有至少一个节点可以部署 Ingress 控制器。此外,需确保集群中已启用 --enable-admission-plugins=NamespaceLifecycle 等必要插件。

  1. 下载并部署 Ingress 控制器

可以通过官方提供的 YAML 文件进行部署。例如,使用如下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/mandatory.yaml

该命令会创建必要的资源,如 Deployment、Service、ConfigMap 等。

  1. 配置 Ingress 控制器的 Service 类型

默认情况下,Ingress 控制器的 Service 类型为 ClusterIP,无法从外部访问。因此,需要将其修改为 NodePort 或 LoadBalancer 类型,以便外部用户能够访问。例如:

kubectl edit service ingress-nginx-controller

修改 type 字段为 LoadBalancer 或 NodePort,并保存。

  1. 验证部署状态

使用以下命令查看 Ingress 控制器是否正常运行:

kubectl get pods -n ingress-nginx

如果 Pod 处于 Running 状态,则表示安装成功。

三、Ingress 的使用

一旦 Ingress 控制器部署完成,就可以开始配置 Ingress 资源,实现对外服务的访问控制。

  1. 编写 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,负责处理具体的业务逻辑。

  1. 应用 Ingress 配置

将上述 YAML 文件保存为 ingress.yaml,然后执行以下命令进行部署:

kubectl apply -f ingress.yaml

部署完成后,Kubernetes 会自动将 Ingress 规则同步到 Ingress 控制器中。

  1. 测试访问

在本地计算机上,可以使用浏览器或 curl 命令测试访问是否成功。例如:

curl http://example.com

如果返回预期内容,则说明 Ingress 配置正确。

  1. 配置 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

k8s中ingress原理、安装、使用详解

Ingress 是 Kubernetes 中实现对外服务访问的重要组件,它通过统一的入口管理多个服务,提升了系统的可维护性和安全性。本文从 Ingress 的原理出发,详细介绍了其安装与使用流程,涵盖了基本配置、HTTPS 支持等内容。对于 Kubernetes 用户而言,掌握 Ingress 的使用不仅能提升开发效率,还能更好地应对复杂的网络架构需求。随着云原生技术的不断发展,Ingress 作为服务网关的核心功能,将在未来发挥更加重要的作用。

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 双人婚姻登记状态核验

  • AI新闻简报

    最新新闻资讯简报,各类国内、国际、体育、娱乐、科技等资讯AI智能总结摘要及详细内容,适合各类AI Agent、穿戴设备进行资讯播报、阅读。

    最新新闻资讯简报,各类国内、国际、体育、娱乐、科技等资讯AI智能总结摘要及详细内容,适合各类AI Agent、穿戴设备进行资讯播报、阅读。

  • 运营商5G基站信息

    通过传递运营商2G/3G/4G/5G基站的MCC、MNC、TAC、CID信息查询所在位置信息。为用户提供位置服务,如实时导航、周边推荐等。

    通过传递运营商2G/3G/4G/5G基站的MCC、MNC、TAC、CID信息查询所在位置信息。为用户提供位置服务,如实时导航、周边推荐等。

  • 人脸实名认证2.0

    通过身份证号+姓名+人脸照片的一致性比对,系统与公安库中的身份证登记照比对,判断是否为同一人,核验用户信息真实性。

    通过身份证号+姓名+人脸照片的一致性比对,系统与公安库中的身份证登记照比对,判断是否为同一人,核验用户信息真实性。

  • 企业招投标信息

0512-88869195
客服微信二维码

微信扫码,咨询客服

数 据 驱 动 未 来
Data Drives The Future