随笔 - 378  文章 - 0  评论 - 5  阅读 - 6085

Ingress从入门到入地

Kubernetes生产实战:Ingress网关从入门到精通

作为Kubernetes的流量守门人,Ingress是每个开发者必须掌握的技能。本文将带你从零搭建生产级Ingress网关,揭秘大厂都在用的高级配置技巧!


一、Ingress初体验:5分钟快速入门

1. 选择你的武器(Ingress控制器)

控制器 特点 适用场景
Nginx 生态最强,功能全面 通用Web服务
Traefik 自动服务发现 微服务架构
Kong API网关功能丰富 企业级API管理
ALB 深度云集成 AWS环境

2. 安装Nginx Ingress(生产推荐)

# 使用Helm部署
helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx \
  --set controller.service.type=LoadBalancer

3. 第一个Ingress配置

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

二、生产环境六大核心配置

1. HTTPS全站加密

# 使用cert-manager自动签发证书
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx

2. 智能限流保护

annotations:
  nginx.ingress.kubernetes.io/limit-rpm: "6000"
  nginx.ingress.kubernetes.io/limit-burst: "30"
  nginx.ingress.kubernetes.io/limit-whitelist: "192.168.0.0/24"

3. 跨域访问控制

annotations:
  nginx.ingress.kubernetes.io/enable-cors: "true"
  nginx.ingress.kubernetes.io/cors-allow-origin: "https://*.example.com"
  nginx.ingress.kubernetes.io/cors-max-age: "600"

4. 金丝雀发布策略

annotations:
  nginx.ingress.kubernetes.io/canary: "true"
  nginx.ingress.kubernetes.io/canary-weight: "20"
  nginx.ingress.kubernetes.io/canary-by-header: "X-Env"

5. 日志监控体系

# 查看实时访问日志
kubectl logs -n ingress-nginx deploy/ingress-nginx-controller | grep "GET /"

6. 多团队域名管理

# 按团队划分IngressClass
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: team-a
spec:
  controller: nginx.org/ingress-controller

三、流量调度高级技巧

1. 基于地理位置的访问控制

annotations:
  nginx.ingress.kubernetes.io/geoip-country-code: "US"
  nginx.ingress.kubernetes.io/configuration-snippet: |
    if ($geoip_country_code != US) {
      return 403;
    }

2. 动态请求镜像

annotations:
  nginx.ingress.kubernetes.io/mirror-target: "http://debug-service.default.svc.cluster.local"
  nginx.ingress.kubernetes.io/mirror-body: "off"

3. WebSocket长连接优化

annotations:
  nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
  nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
  nginx.ingress.kubernetes.io/upstream-hash-by: "$remote_addr"

四、性能调优参数表

参数 默认值 生产建议值 作用
worker_processes auto 8 Nginx worker数量
keepalive_requests 100 10000 单连接最大请求数
client_max_body_size 1m 20m 最大上传文件大小
proxy_buffer_size 4k 16k 代理缓冲区大小
upstream-keepalive-connections 32 512 后端连接池大小
# 通过ConfigMap全局配置
controller:
  config:
    worker-processes: "8"
    upstream-keepalive-connections: "512"

五、故障排查指南

1. 路由不生效怎么办?

# 查看生成的Nginx配置
kubectl exec -it ingress-nginx-controller-xxx -- cat /etc/nginx/nginx.conf

# 检查事件日志
kubectl describe ingress frontend

2. HTTPS证书异常处理

# 查看证书状态
kubectl get certificaterequest -A

# 强制重新签发
kubectl delete secret tls-secret

3. 性能瓶颈分析

# 进入容器进行性能分析
kubectl exec -it ingress-nginx-controller-xxx -- bash
# 安装调试工具
apt update && apt install -y htop iftop
htop

六、架构演进建议

小型团队:单Nginx Ingress + NodePort
中型集群:双副本Ingress + 云负载均衡
大型架构

  • 按业务拆分多个Ingress控制器
  • 边缘节点专用Ingress集群
  • 智能DNS+多活部署

结语

Ingress是Kubernetes流量管理的瑞士军刀,掌握它需要:

  1. 理解原理:从HTTP协议到控制器工作原理
  2. 熟练工具:kubectl/Helm/监控系统
  3. 持续实践:定期压力测试和故障演练

现在,立刻检查你的Ingress配置是否存在以下问题:
🔸 未启用HTTPS
🔸 缺少限流保护
🔸 日志保留不足7天

记住:好的流量管理,是稳定性的第一道防线!

posted on   Leo-Yide  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示