【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
    

Kubernetes 使用 Ingress-Nginx 基于 Cookie 实现会话保持的负载均衡


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.pswp.cn/bicheng/88294.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SHA-256算法详解——Github工程结合示例和动画演示

近日笔者在学习区块链的相关知识,接触到SHA-256算法,这里做一个知识梳理和总结。 强烈推荐大家自行去学习下面链接github上的工程,作者的动画演示和解释做的非常出色,逻辑非常清晰,B站搬运的对应的油管的讲解视频也放…

C语言模块化编程思维以及直流电机控制(第四天)

👨‍💻个人主页:开发者-削好皮的Pineapple! 👨‍💻 hello 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 削好皮的Pineapple! 原创 👨‍&#x1f4…

【PTA】数据结构与算法0001:1025 反转链表

文章大纲写在前面测试用例ac代码学习代码知识点小结写在前面 实现思路 结构体封装数据 根据order重新排序k区间值迭代翻转 n整除k,则最后地址输出"-1"非整除,最后剩余区间,原序输出。最后地址输出"-1" 题目有难度&…

深入解析 .NET 泛型:从原理到实战优化

在现代软件开发中,代码复用性和性能优化是开发者永恒的追求。.NET 泛型作为一项强大的语言特性,不仅能够帮助我们消除重复代码,还能显著提升代码的类型安全性和运行效率。本文将带你全面了解 .NET 泛型,从基本概念到高级用法&…

Excel 处理软件 内容复制工具:工作表批量复制 + 合并拆分简洁操作零门槛

各位办公小能手们!今天给你们介绍一款超牛的软件——Excel内容复制工具。软件下载地址安装包 这可是专门为了让Excel数据处理效率蹭蹭往上涨而设计的辅助软件呢!它的主要功能可多啦,能批量复制工作表,还能把好多表格合并到同一个…

【机器学习实战笔记 14】集成学习:XGBoost算法(一) 原理简介与快速应用

《XGBoost算法》 推荐的学习路径: 【快速实现XGBoost、跑通代码】- 第一部分 【快速掌握XGBoost应用、达到自由调参水平】- 第一部分~第三部分 【快速掌握XGBoost原理、面试得以通关】- 第一部分1 第二部分1.2、2.2 第四部分 目录《XGBoost算法》一 XGBoost的基…

.NET AI 模板

引言 随着人工智能技术的快速发展,AI应用开发已成为开发者必备的技能之一。然而,对于许多.NET开发者来说,如何快速上手AI开发仍然是一个挑战。微软推出的.NET AI模板预览版正是为了解决这一问题而生,为开发者提供了构建智能聊天应…

EFK9.0.3 windows搭建

背景 最近某个功能要使用到ELK(ElasticSearch、Logstash、Kibana)采集日志,对数据进行分析,网上百度了一下,目前推荐不使用Logstash而使用Filebeat ,即EFK。 下载链接 Elasticsearch Kibana Filebeat 安装前提 …

上海新华医院奉贤院区:以元宇宙技术重构未来医疗生态

引言:当医疗遇上元宇宙在数字化转型的浪潮中,上海新华医院奉贤院区以"智慧医院"为定位,率先构建了"元宇宙医院"雏形。通过AI大模型、三维影像分析、AR手术导航等前沿技术的深度融合,医院正在打造一个覆盖全周…

知识竞赛答题pk小程序用户操作手册

知识竞赛答题 PK 小程序用户操作手册 一、注册与登录 用户首次使用答题pk小程序需上传头像,输入昵称,并选择加入团队。如果是企业内部人员使用可开启白名单功能。二、进入答题 PK 模式 登录后,在小程序首页,您可以看到 “单人挑战…

等大小谱聚类

聚类是一种将具有相似特征的数据点进行分组的方法。它广泛应用于探索性数据分析,并已被证明在模式识别、市场和客户细分、推荐系统、数据压缩以及生物数据分析等许多应用中都发挥着重要作用。 尽管聚类算法种类繁多,但没有一种能够生成点数均衡的聚类。…

〔从零搭建〕数据湖平台部署指南

🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨杭州奥零数据科技官网&#xff…

Java 导出pdf 写出demo 1、需要设置自定义页眉和文字 2、可以插入表格 3、可以插入图片

以下是一个使用 iText 7 库实现 PDF 导出的 Java 示例&#xff0c;包含自定义页眉、文字、表格和图片功能&#xff1a; 添加 Maven 依赖 <dependencies><!-- iText 7 Core --><dependency><groupId>com.itextpdf</groupId><artifactId>ite…

Ntfs!LfsReadRestart函数分析得到Ntfs!LFS_RESTART_PAGE_HEADER

第一部分&#xff1a;0: kd> p Ntfs!LfsPinOrMapData0x8c: f71797f6 ff15a40016f7 call dword ptr [Ntfs!_imp__CcPinRead (f71600a4)] 0: kd> t nt!CcPinRead: 80bf9a5a 6a2c push 2Ch 0: kd> kc# 00 nt!CcPinRead 01 Ntfs!LfsPinOrMapData 02 N…

skywalking-agent-docker镜像

FROM centos:7.9.2009 USER root# 定义 Arthas 目录环境变量 ENV ARTHAS_HOME/opt/arthas# 更改 YUM 源并清理缓存 RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak && \rm -rf /etc/yum.repos.d/* && \curl -o /etc/yum.rep…

数据库开发运维的集成:弥合开发与运维之间的鸿沟

在传统的软件开发工作流程中&#xff0c;数据库变更往往是事后才考虑的问题。应用程序代码遵循定义明确的开发运维实践&#xff0c;包括版本控制、自动测试和持续部署&#xff0c;而数据库变更则经常是由数据库管理员手动执行的高风险操作。这种脱节造成了瓶颈&#xff0c;带来…

PiscTrace应用:从 YOLO-Pose 到深蹲与引体向上计数:实时健身动作分析与实现

随着健身行业的发展&#xff0c;越来越多的智能应用涌现&#xff0c;用于帮助健身者更好地记录和分析运动情况。特别是在体能训练中&#xff0c;俯卧撑和引体向上是两个非常常见的动作&#xff0c;它们通常用来锻炼上半身力量和耐力。为了使训练更加科学和高效&#xff0c;实时…

【unity】webCanvas.enabled = false;和webCanvas.gameObject.SetActive(false);的优缺点比较

在 Unity 中&#xff0c;webCanvas.gameObject.SetActive(false) 和 webCanvas.enabled false 是两种不同的隐藏 UI 的方式&#xff0c;它们的核心区别在于作用范围和对组件状态的影响。理解这些差异能帮助你避免初始化失败、性能问题和逻辑错误。 1核心区别 gameObject.SetAc…

深入探索 pnpm:高效磁盘利用与灵活的包管理解决方案

引言 在现代 JavaScript 开发中&#xff0c;依赖管理效率直接影响开发体验。传统工具如 npm 和 yarn 在大型项目中常面临磁盘冗余和性能瓶颈。pnpm&#xff08;Performant npm&#xff09;通过创新的硬链接和符号链接机制&#xff0c;解决了这些痛点。本文将深入解析 pnpm 的核…

Hive MetaStore的实现和优化

在大数据领域&#xff0c;数据管理与存储至关重要&#xff0c;Hive MetaStore&#xff08;HMS&#xff09;作为 Hive 数据仓库的核心组件&#xff0c;承担着元数据管理的关键职责。随着数据规模不断膨胀&#xff0c;其性能与稳定性面临挑战。本文将深入剖析 HMS 的实现机制&…