K8S Ingress、IngressController 快速开始

假设有如下三个节点的 K8S 集群:

k8s31master 是控制节点

k8s31node1、k8s31node2 是工作节点

容器运行时是 containerd

一、理论介绍

1)什么是 Ingress

  • 定义:Ingress 是 Kubernetes 中的一种资源对象,它定义了外部访问集群内服务的规则。可以将其理解为一个智能的 “流量路由器”,根据接收到的 HTTP/HTTPS 请求的不同规则,将流量转发到集群内不同的服务上。
  • 作用
    • 统一入口:为集群内的多个服务提供一个统一的外部入口点,使得外部用户可以通过一个固定的 IP 地址或域名来访问不同的服务,而不需要为每个服务都暴露独立的 IP 和端口。
    • 规则定义:支持基于域名、URL 路径等条件来定义路由规则。例如,可以配置让域名 www.example.com 的请求被路由到服务 A,而 api.example.com 的请求被路由到服务 B。还能根据 URL 路径进行更精细的路由,如 /app1/* 路径的请求转发到服务 C,/app2/* 路径的请求转发到服务 D。

2)什么是 IngressController

  • 定义:Ingress Controller 是实际负责执行 Ingress 资源中定义的路由规则的组件。它是一个运行在 Kubernetes 集群中的服务,通常以 Pod 的形式存在,不断监听 Ingress 资源的变化,并根据最新的规则来配置和更新负载均衡器或代理服务器。
  • 作用
    • 流量转发:根据 Ingress 规则,将接收到的外部流量准确地转发到对应的后端服务。它会与底层的网络基础设施进行交互,实现数据包的正确路由。
    • 负载均衡:在将流量转发到后端服务时,Ingress Controller 可以实现负载均衡功能,将请求均匀地分配到多个后端 Pod 上,以提高服务的可用性和性能。常见的负载均衡算法有轮询、加权轮询、最少连接数等。
    • 安全防护:许多 Ingress Controller 还支持 TLS/SSL 加密功能,用于对传输中的数据进行加密,确保通信安全。同时,它也可以进行一些基本的安全防护,如防止常见的网络攻击。
  • 常见类型
    • Nginx Ingress Controller:基于 Nginx 服务器的 Ingress Controller,具有高性能、丰富的功能和良好的稳定性,广泛应用于 Kubernetes 集群中。
    • Traefik Ingress Controller:专注于提供自动化的服务发现和动态配置功能,能够根据 Kubernetes 集群中的服务和端点的变化自动更新路由规则。
    • HAProxy Ingress Controller:基于 HAProxy 负载均衡器,具有出色的性能和可靠性,适用于大规模流量的场景。

3)局限性

4)总结

简单点说,Ingress 类似于 nginx 的配置文件,它里面定义了路由规则。

IngressController 类似于 nginx,它不断监听 Ingress 资源的变化,并根据最新的规则来配置和更新它所包装的负载均衡器或代理服务器。

二、安装 Ingress Nginx Controller

Ingress-Nginx GitHub:https://github.com/kubernetes/ingress-nginx

裸金属部署yml:https://github.com/kubernetes/ingress-nginx/blob/release-1.12/deploy/static/provider/baremetal/deploy.yaml

  • 版本兼容性

因为我的 K8S 是 1.31,所以 Ingress-Nginx 可以选择 1.12.2、1.12.1、1.12.0。

  •  裸金属

baremetal

适用于 裸金属(Bare Metal)或本地环境(如物理服务器、本地 Kubernetes 集群、无云厂商集成的环境)。通常需要手动管理外部访问(如 NodePort、HostNetwork 或外部负载均衡器)。依赖 Kubernetes 的 NodePort 或 LoadBalancer 类型 Service,但需要自行配置外部负载均衡(如 MetalLB、HAProxy 等)。

  •  镜像准备

整个部署只依赖两个镜像:

registry.k8s.io/ingress-nginx/controller:v1.12.2

registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.3

找个国内的镜像站,提前下载好镜像。

[root@k8s31node1 ~]# ctr -n=k8s.io images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/ingress-nginx/controller:v1.12.2
[root@k8s31node1 ~]# ctr -n=k8s.io images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/ingress-nginx/controller:v1.12.2  registry.k8s.io/ingress-nginx/controller:v1.12.2
# 查看导入情况
[root@k8s31node1 ~]# crictl images ls|grep ingress
[root@k8s31node1 ~]# ctr -n=k8s.io images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.3
[root@k8s31node1 ~]# ctr -n=k8s.io images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.3  registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.3
# 查看导入情况
[root@k8s31node1 ~]# crictl images ls|grep webhook

[root@k8s31node2 ~]# ctr -n=k8s.io images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值