当前位置: 首页 > news >正文

【K8S】在 Kubernetes 上配置安装 Nginx Ingress 控制器指南

文章目录

      • 架构概览
      • 先决条件
      • 部署方案选择
        • 方案一:手动 YAML 部署
          • 核心组件详解
        • 方案二:Helm快速部署(生产推荐)
      • 验证部署
      • DNS配置策略
        • 方案A:单域名映射
        • 方案B:通配符映射(推荐)
      • 应用实战:部署示例服务
      • 最佳实践总结

本文将指导您通过两种方式部署 Kubernetes 社区版 Nginx Ingress 控制器,并配置DNS实现流量路由。目前存在两种 Nginx Ingress 控制器:

  1. Kubernetes社区版
  2. Nginx Inc开发版

配置文件 Nginx Ingress k8s 配置


架构概览

下图展示了 Nginx Ingress 控制器在 Kubernetes 中的核心架构:


先决条件

  1. 运行中的Kubernetes集群
  2. 已安装并认证的kubectl
  3. 集群管理员权限
  4. 指向Ingress控制器负载均衡器IP的有效域名(可选

部署方案选择

方案一:手动 YAML 部署

下载 Nginx Ingress k8s 配置

分步部署以下关键组件:

kubectl create ns ingress-nginx
cd nginx-ingress-controller/manifests
kubectl apply -f .
核心组件详解
  1. 准入控制器(ValidatingWebhook)

在这里插入图片描述

防止错误Ingress配置破坏集群,工作流程:

  • 拦截Ingress创建请求
  • API服务器转发配置到Webhook服务
  • Nginx控制器验证配置(8443端口)
  • 返回验证结果
  1. 证书生成Job
    使用kube-webhook-certgen自动生成CA证书:

    apiVersion: batch/v1
    kind: Job
    metadata:name: ingress-nginx-admission-createnamespace: ingress-nginx
    spec:template:spec:containers:- args: [create, --host=ingress-nginx-controller-admission,...]image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0
    
  2. Controller核心部署
    Deployment关键配置:

    containers:
    - args:- /nginx-ingress-controller- --publish-service=$(POD_NAMESPACE)/ingress-nginx-controllerimage: registry.k8s.io/ingress-nginx/controller:v1.9.5ports:- containerPort: 80  # HTTP- containerPort: 443 # HTTPS- containerPort: 8443 # Webhook
    
方案二:Helm快速部署(生产推荐)
helm upgrade --install ingress-nginx ingress-nginx \--repo https://kubernetes.github.io/ingress-nginx \--namespace ingress-nginx --create-namespace

验证部署

  1. 获取负载均衡器IP:
    kubectl -n ingress-nginx get svc ingress-nginx-controller
    
  2. 测试默认后端(应返回404):
    curl YOUR_LOADBALANCER_IP
    
  3. 健康检查(应返回200):
    curl YOUR_LOADBALANCER_IP/healthz
    

DNS配置策略

方案A:单域名映射
www.example.com --> LoadBalancer IP

适用路径路由:

http://www.example.com/app1
http://www.example.com/app2/api
方案B:通配符映射(推荐)
*.apps.example.com --> LoadBalancer IP

在这里插入图片描述

实现动态路由:

http://demo1.apps.example.com
http://grafana.apps.example.com

应用实战:部署示例服务

  1. 创建示例应用

    # hello-app.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: hello-appnamespace: dev
    spec:replicas: 2template:containers:- name: helloimage: "gcr.io/google-samples/hello-app:2.0"
    
  2. 创建ClusterIP服务

    # hello-service.yaml
    kind: Service
    metadata:name: hello-servicenamespace: dev
    spec:ports: [{ port: 80, targetPort: 8080 }]selector: { app: hello }
    
  3. 配置Ingress路由规则

    # ingress.yaml
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:name: demo-ingressnamespace: dev
    spec:ingressClassName: nginxrules:- host: "demo.apps.yourdomain.com"http:paths:- path: /backend:service:name: hello-serviceport: { number: 80 }
    
  4. 访问测试:

在这里插入图片描述


最佳实践总结

  1. 生产环境建议:使用Helm部署并启用ValidatingWebhook
  2. DNS配置:通配符域名简化路由管理
  3. 安全加固
    • 限制Controller权限(RBAC)
    • 定期轮转Webhook证书
  4. 性能优化:通过ConfigMap调整Nginx参数
    # 示例:调优keepalive连接
    apiVersion: v1
    kind: ConfigMap
    metadata:name: nginx-confignamespace: ingress-nginx
    data:keep-alive: "75"keep-alive-requests: "100"
    

完整配置参考 Nginx Ingress官方文档

http://www.dtcms.com/a/271352.html

相关文章:

  • 使用LLaMA-Factory微调Qwen2.5-VL-3B 的目标检测任务-LLaMA-Factory训练数据配置
  • 图像处理中的霍夫变换:直线检测与圆检测
  • 【软件运维】前后端部署启动的几种方式
  • 区块链系统开发技术应用构建可信数字生态链
  • 股指期货交割日避坑指南
  • 【MkDocs踩坑】图片路径问题的排查与解决
  • 由 DB_FILES 参数导致的 dg 服务器无法同步问题
  • 【动手学深度学习】4.10 实战Kaggle比赛:预测房价
  • Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
  • 深度学习预备知识
  • MyBatisPlus-03-扩展功能
  • 基于Matlab多特征融合的可视化指纹识别系统
  • 常见 HTTP 方法的成功状态码200,204,202,201
  • whitt算法之特征向量的尺度
  • 利用编码ai工具cursor写单元测试
  • springMVC06-注解+配置类实现springMVC
  • Java位运算
  • Electron的setContentProtection()会被哪个层级的API捕获?
  • 【TCP/IP】3. IP 地址
  • 储能系统防孤岛保护测试:电网安全的“守门人”
  • C#字符串相关库函数运用梳理总结 + 正则表达式详解
  • 基于YOLOv11的CF-YOLO,如何突破无人机小目标检测?
  • 光伏无人机3D建模:毫秒级精度设计
  • HarmonyOS从入门到精通:自定义组件开发指南(六):组件生命周期详解
  • vue3.2 前端动态分页算法
  • [Python] 区分方法 函数
  • 企业级智能体平台怎么选?字节、腾讯、360、FastGPT选哪个?
  • 【牛客刷题】小欧的选数乘积
  • K8S使用命令多集群管理配置
  • EUDR法案的核心内容,EUDR未来展望,EUDR对全球供应链的影响