本文档风哥主要介绍Rancher Ingress与负载均衡配置实战,包括Rancher数据库Ingress概念、Rancher数据库Ingress Controller概念、Rancher数据库负载均衡概念、Rancher数据库Ingress准备、Rancher数据库Ingress要求、Rancher数据库Ingress规划、Rancher数据库安装Ingress Controller、Rancher数据库配置Ingress、Rancher数据库使用Ingress、Rancher数据库配置SSL、Rancher数据库配置URL重写、Rancher数据库优化Ingress等内容,风哥教程参考Rancher官方文档Ingress、负载均衡、Nginx等内容,适合运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 Rancher数据库Ingress概念
Rancher数据库Ingress是Kubernetes中用于管理外部访问集群内服务的API对象。Ingress定义了HTTP和HTTPS路由规则,将外部流量路由到集群内的Service。Ingress可以配置域名、路径、SSL证书等,实现灵活的流量管理。更多视频教程www.fgedu.net.cn
- 路由管理:管理HTTP/HTTPS路由
- 域名管理:支持域名配置
- SSL支持:支持SSL证书
- 路径管理:支持路径配置
- 负载均衡:支持负载均衡
1.2 Rancher数据库Ingress Controller概念
Rancher数据库Ingress Controller是实现Ingress功能的控制器,负责监听Ingress对象的变化,并配置负载均衡器。常见的Ingress Controller有Nginx、Traefik、HAProxy等。Ingress Controller负责将Ingress规则转换为实际的负载均衡配置。学习交流加群风哥微信: itpux-com
- 自动配置:自动配置负载均衡
- 实时更新:实时更新路由规则
- 多种类型:支持多种Controller
- 高可用:支持高可用部署
- 可扩展:支持插件扩展
1.3 Rancher数据库负载均衡概念
Rancher数据库负载均衡是指将流量分发到多个后端服务,提高系统的可用性和性能。负载均衡可以分为四层负载均衡(L4)和七层负载均衡(L7)。Kubernetes Service提供了四层负载均衡,Ingress提供了七层负载均衡。学习交流加群风哥QQ113257174
- 流量分发:分发流量到多个后端
- 健康检查:检查后端健康状态
- 会话保持:支持会话保持
- 多种算法:支持多种负载均衡算法
- 高可用:支持高可用部署
Part02-生产环境规划与建议
2.1 Rancher数据库Ingress准备
Rancher数据库Ingress准备:
# 1. Rancher Server准备
– Rancher Server已部署
– Rancher Server可访问
– Rancher Server配置正确
# 2. Ingress需求分析
– 确定Ingress Controller类型
– 确定域名配置
– 确定SSL证书
– 确定路由规则
# 3. 网络准备
– 网络带宽:>= 1Gbps
– 网络延迟:< 10ms
- 端口开放:80、443等
# 4. DNS准备
- DNS服务器:>= 2个
– DNS解析:配置域名解析
– DNS TTL:<= 300s
# 5. SSL证书准备
- SSL证书:有效证书
- 证书类型:TLS证书
- 证书有效期:>= 1年
2.2 Rancher数据库Ingress要求
Rancher数据库Ingress要求:
# Ingress Controller要求
– 版本:>= v1.8.0
– 资源:CPU >= 1核,内存 >= 1GB
– 副本数:>= 2个
– 高可用:支持高可用
# 网络要求
– 网络带宽:>= 1Gbps
– 网络延迟:< 10ms
- 端口开放:80、443等
- 网络互通:集群网络互通
# DNS要求
- DNS服务器:>= 2个
– DNS解析:配置域名解析
– DNS TTL:<= 300s
- DNS缓存:配置DNS缓存
# SSL证书要求
- SSL证书:有效证书
- 证书类型:TLS证书
- 证书有效期:>= 1年
– 证书加密:>= 2048位
# 负载均衡要求
– 负载均衡算法:轮询、最少连接等
– 健康检查:配置健康检查
– 会话保持:配置会话保持
– 超时设置:配置超时设置
2.3 Rancher数据库Ingress规划
Rancher数据库Ingress规划:
# Ingress Controller规划
Controller类型:Nginx Ingress Controller
副本数:3个
资源限制:CPU 2核,内存 2GB
高可用:是
# 域名规划
应用域名:app.fgedu.net.cn
管理域名:admin.fgedu.net.cn
API域名:api.fgedu.net.cn
# SSL证书规划
应用证书:app.fgedu.net.cn
管理证书:admin.fgedu.net.cn
API证书:api.fgedu.net.cn
# 路由规则规划
应用路由:/app -> fgedu-app-service
管理路由:/admin -> fgedu-admin-service
API路由:/api -> fgedu-api-service
# 负载均衡规划
负载均衡算法:轮询
健康检查:TCP检查
会话保持:否
超时设置:60s
Part03-生产环境项目实施方案
3.1 Rancher数据库安装Ingress Controller
3.1.1 Rancher数据库通过Helm安装Nginx Ingress Controller
[root@rancher ~]# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
“ingress-nginx” has been added to your repositories
[root@rancher ~]# helm repo update
Hang tight while we grab the latest from your chart repositories…
…Successfully got an update from the “ingress-nginx” chart repository
Update Complete. ⎈Happy Helming!⎈
# 安装Nginx Ingress Controller
[root@rancher ~]# helm install ingress-nginx ingress-nginx/ingress-nginx \
–namespace ingress-nginx \
–create-namespace \
–set controller.replicaCount=3 \
–set controller.resources.requests.cpu=1 \
–set controller.resources.requests.memory=1Gi \
–set controller.resources.limits.cpu=2 \
–set controller.resources.limits.memory=2Gi \
–set controller.service.type=LoadBalancer \
–set controller.service.annotations.”service\.beta\.kubernetes\.io/aws-load-balancer-type”=nlb
NAME: ingress-nginx
LAST DEPLOYED: Fri Apr 10 10:00:00 2026
NAMESPACE: ingress-nginx
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running ‘kubectl –namespace ingress-nginx get services -o wide -w ingress-nginx-controller’
# 查看Ingress Controller状态
[root@rancher ~]# kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-1234567890-abcde 1/1 Running 0 2m
ingress-nginx-controller-1234567890-fghij 1/1 Running 0 2m
ingress-nginx-controller-1234567890-klmno 1/1 Running 0 2m
# 查看Ingress Controller Service
[root@rancher ~]# kubectl get svc -n ingress-nginx
NAME TYPE EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 192.168.1.200 80:31234/TCP,443:31235/TCP 2m
3.2 Rancher数据库配置Ingress
3.2.1 Rancher数据库通过Web界面配置Ingress
# 步骤1:登录Rancher管理界面
# 步骤2:点击”集群” – 选择集群 – 点击”服务” – “Ingress”
# 步骤3:点击”创建Ingress”按钮
# 步骤4:填写Ingress信息:
# Ingress名称:fgedu-app-ingress
# Ingress描述:Rancher数据库应用Ingress
# 命名空间:fgedu-dev
# 域名:app.fgedu.net.cn
# 路径:/app
# 目标服务:fgedu-app-service
# 目标端口:80
# 步骤5:点击”创建”按钮
# 通过kubectl配置Ingress
[root@rancher ~]# cat <
Annotations: nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: false
Ingress Class: nginx
Default backend:
Rules:
Host Path Backends
—- —- ——–
app.fgedu.net.cn
/app fgedu-app-service:80 (10.244.0.5:80,10.244.0.6:80,10.244.0.7:80)
Events:
Type Reason Age From Message
—- —— —- —- ——-
Normal Sync 1m (x2 over 1m) nginx-ingress-controller Scheduled for sync
3.3 Rancher数据库使用Ingress
3.3.1 Rancher数据库测试Ingress访问
# 在DNS服务器中添加A记录:
# app.fgedu.net.cn -> 192.168.1.200
# 测试DNS解析
[root@rancher ~]# nslookup app.fgedu.net.cn
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: app.fgedu.net.cn
Address: 192.168.1.200
# 测试HTTP访问
[root@rancher ~]# curl -I http://app.fgedu.net.cn/app
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 10 Apr 2026 10:00:00 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 10 Apr 2026 10:00:00 GMT
Connection: keep-alive
ETag: “6071234567890”
Accept-Ranges: bytes
# 查看访问日志
[root@rancher ~]# kubectl logs -n ingress-nginx ingress-nginx-controller-1234567890-abcde | tail -20
192.168.1.100 – – [10/Apr/2026:10:00:00 +0000] “GET /app HTTP/1.1” 200 612 “-” “curl/7.76.1” 123 0.123 [fgedu-dev/fgedu-app-service] 10.244.0.5:80 0.123 200 1234567890abcdef 1234567890
# 查看Ingress Controller状态
[root@rancher ~]# kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-1234567890-abcde 1/1 Running 0 5m
ingress-nginx-controller-1234567890-fghij 1/1 Running 0 5m
ingress-nginx-controller-1234567890-klmno 1/1 Running 0 5m
Part04-生产案例与实战讲解
4.1 Rancher数据库配置SSL
4.1.1 Rancher数据库配置SSL证书
[root@rancher ~]# kubectl create secret tls fgedu-app-tls \
–cert=/path/to/app.fgedu.net.cn.crt \
–key=/path/to/app.fgedu.net.cn.key \
-n fgedu-dev
secret/fgedu-app-tls created
# 查看Secret
[root@rancher ~]# kubectl get secret fgedu-app-tls -n fgedu-dev
NAME TYPE DATA AGE
fgedu-app-tls kubernetes.io/tls 2 1m
# 更新Ingress配置SSL # 优化参数 # 重启Ingress Controller # 查看Ingress Controller状态 # 查看Ingress Controller性能 Rancher数据库Ingress最佳实践: Rancher数据库Ingress问题排查: # 问题1:Ingress无法访问 # 问题2:SSL证书错误 # 问题3:URL重写失败 # 问题4:Ingress性能差 Rancher数据库Ingress维护: # 1. 定期检查 # 2. 定期优化 # 3. 定期备份 # 4. 定期清理 # 5. 定期审计 本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
[root@rancher ~]# cat <4.2 Rancher数据库配置URL重写
4.2.1 Rancher数据库配置URL重写规则
[root@rancher ~]# cat <4.3 Rancher数据库优化Ingress
4.3.1 Rancher数据库优化Ingress性能
[root@rancher ~]# kubectl edit configmap ingress-nginx-controller -n ingress-nginx
data:
keep-alive: “75”
keep-alive-requests: “100”
upstream-keepalive-connections: “100”
upstream-keepalive-timeout: “60”
upstream-keepalive-requests: “1000”
client-max-body-size: “50m”
proxy-body-size: “50m”
proxy-connect-timeout: “60”
proxy-send-timeout: “60”
proxy-read-timeout: “60”
[root@rancher ~]# kubectl rollout restart deployment ingress-nginx-controller -n ingress-nginx
deployment.apps/ingress-nginx-controller restarted
[root@rancher ~]# kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-1234567890-abcde 1/1 Running 0 1m
ingress-nginx-controller-1234567890-fghij 1/1 Running 0 1m
ingress-nginx-controller-1234567890-klmno 1/1 Running 0 1m
[root@rancher ~]# kubectl top pod -n ingress-nginx
NAME CPU(cores) MEMORY(bytes)
ingress-nginx-controller-1234567890-abcde 0.5 512Mi
ingress-nginx-controller-1234567890-fghij 0.5 512Mi
ingress-nginx-controller-1234567890-klmno 0.5 512Mi
Part05-风哥经验总结与分享
5.1 Rancher数据库Ingress最佳实践
5.2 Rancher数据库Ingress问题排查
# 现象:无法通过域名访问应用
# 原因:DNS配置错误、Ingress配置错误、Service配置错误
# 解决:
[root@rancher ~]# nslookup app.fgedu.net.cn
[root@rancher ~]# kubectl get ingress -n fgedu-dev
[root@rancher ~]# kubectl describe ingress fgedu-app-ingress -n fgedu-dev
[root@rancher ~]# kubectl get svc -n fgedu-dev
# 现象:HTTPS访问时提示证书错误
# 原因:证书过期、证书配置错误、域名不匹配
# 解决:
[root@rancher ~]# kubectl get secret fgedu-app-tls -n fgedu-dev
[root@rancher ~]# kubectl describe secret fgedu-app-tls -n fgedu-dev
[root@rancher ~]# openssl x509 -in /path/to/app.fgedu.net.cn.crt -text -noout
[root@rancher ~]# curl -v https://app.fgedu.net.cn/app
# 现象:URL重写不生效
# 原因:重写规则配置错误、正则表达式错误
# 解决:
[root@rancher ~]# kubectl get ingress -n fgedu-dev
[root@rancher ~]# kubectl describe ingress fgedu-app-ingress -n fgedu-dev
[root@rancher ~]# kubectl logs -n ingress-nginx ingress-nginx-controller-1234567890-abcde
[root@rancher ~]# curl -v https://app.fgedu.net.cn/app/index.html
# 现象:访问应用时响应慢
# 原因:Ingress Controller资源不足、配置不当、网络延迟高
# 解决:
[root@rancher ~]# kubectl top pod -n ingress-nginx
[root@rancher ~]# kubectl describe pod -n ingress-nginx ingress-nginx-controller-1234567890-abcde
[root@rancher ~]# kubectl logs -n ingress-nginx ingress-nginx-controller-1234567890-abcde
[root@rancher ~]# ab -n 1000 -c 10 https://app.fgedu.net.cn/app
5.3 Rancher数据库Ingress维护
– 检查Ingress Controller状态
– 检查Ingress配置
– 检查SSL证书
– 检查DNS解析
– 优化Ingress Controller配置
– 优化Ingress性能
– 优化负载均衡
– 优化URL重写
– 备份Ingress配置
– 备份SSL证书
– 备份DNS配置
– 备份Ingress Controller配置
– 清理无用Ingress
– 清理过期证书
– 清理无用DNS记录
– 清理过期日志
– 审计Ingress配置
– 审计SSL证书
– 审计DNS解析
– 审计访问日志
