Kubernetes - 实战:Ingress、Ingress Controller、IngressClass 的产生缘由、YAML 描述及使用

Ingress、Ingress Controller 产生缘由

在 Kubernetes 中,Ingress 和 Ingress Controller 的引入主要是为了提供一种集中管理和配置 HTTP/HTTPS 路由层的方式,以便于将外部请求代理分发至集群内不同 Service。Kubernetes Service 默认提供的 ClusterIP、NodePort 和 LoadBalancer 类型仅能解决服务的基本访问问题,但对于复杂的路由规则、SSL/TLS 终止、路径重写等高级特性支持不足。因此,Ingress 资源应运而生,用于定义集群外部到内部服务的七层路由规则。

Ingress Controller 是实际执行 Ingress 规则的软件,它监听 Kubernetes API Server 中的 Ingress 对象变化,并依据这些规则配置相应的负载均衡器或反向代理服务器,如 Nginx、HAProxy 或 Traefik 等,从而实现对集群内外流量的智能调度和管理。

Ingress YAML 描述

以下是一个简单的 Ingress YAML 示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /service1
        pathType: Prefix
        backend:
          service:
            name: service1
            port:
              name: http
      - path: /service2
        pathType: Prefix
        backend:
          service:
            name: service2
            port:
              number: 8080

这个示例中,Ingress 定义了一个规则,将 example.com/service1 的请求转发到名为 service1 的 Service 的 http 端口,而 example.com/service2 的请求则被转发到 service2 的 8080 端口。

IngressClass

IngressClass 资源是在 Kubernetes v1.18 版本中引入的,用来明确指定 Ingress 对象应该由哪个 Ingress Controller 处理。这样可以更好地组织和区分不同的 Ingress 控制器,避免冲突或误配。

例如,创建一个 IngressClass 资源:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx
spec:
  controller: k8s.io/ingress-nginx

然后,在 Ingress 资源中引用这个 IngressClass:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    # 其他注解...
  ingressClassName: nginx
spec:
  # ...

使用方法

  1. 创建 Ingress
    使用 kubectl apply -f <ingress.yaml> 创建 Ingress 资源。

  2. 安装 Ingress Controller
    根据你选择的 Ingress Controller(如 nginx-ingress、traefik 等),按照官方文档安装对应的控制器及其依赖。

  3. 配置 Ingress Class
    如果使用了 IngressClass,确保 Ingress Controller 已经配置好处理相应的类,并在 Ingress 对象中明确指定。

  4. 验证路由规则
    创建完 Ingress 后,可以通过检查 Ingress Controller 的相关日志以及尝试访问定义的路由,确认规则是否生效。同时,也可以使用 kubectl describe ingress example-ingress 查看 Ingress 的详细状态。

注意,为了使 Ingress 正常工作,还需要确保集群内已有一个可用的 Ingress Controller 正在运行并监控着 Ingress 资源的变化。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值