目录

  • 壹、k8s Ingress 样例大全
      • 🔧 一、基础路由与 TLS 终止
      • 🔄 二、高级路由控制
        • 1. **URL 重写**(适用后端服务路径与入口路径不一致)
        • 2. **多路径路由到不同服务**
      • 🚦 三、流量治理策略
        • 1. **金丝雀发布(灰度发布)**
        • 2. **粘性会话(会话保持)**
      • 🔐 四、安全增强配置
        • 1. **强制 HTTPS 跳转**
        • 2. **通配符域名证书**
      • 🌐 五、跨命名空间路由
      • ⚙️ 六、云厂商集成(华为云 CCI 示例)
      • 💎 总结对比表:按场景选择配置
  • 贰、k8s Service 样例大全
      • 🔧 一、ClusterIP(默认类型)
      • 🌐 二、NodePort
      • ☁️ 三、LoadBalancer(云厂商集成)
      • 🔗 四、ExternalName(CNAME 代理)
      • ⚙️ 高级配置样例
        • 1. **多端口 Service(如 Web + Metrics)**
        • 2. **会话保持(Session Affinity)**
        • 3. **指定静态 ClusterIP**
      • 💎 四类 Service 核心对比
      • 🔧 调试命令

在这里插入图片描述

壹、k8s Ingress 样例大全

以下为 Kubernetes Ingress 的典型配置样例大全,涵盖常见生产场景,结合最佳实践和关键注释说明,便于直接复用或调整:


🔧 一、基础路由与 TLS 终止

场景:将不同路径的 HTTP/HTTPS 流量路由到后端服务,并启用 TLS 加密。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: basic-ingress
spec:tls:                            # TLS 配置部分- hosts:- example.comsecretName: example-tls-secret  # 证书需提前存入 Secretrules:- host: example.com              # 域名匹配http:paths:- path: /app1                # 路径匹配pathType: Prefixbackend:service:name: app1-service      # 后端服务名port: number: 80- path: /app2pathType: Prefixbackend:service:name: app2-serviceport: number: 8080

关键点

  • tls.secretName 需提前通过 kubectl create secret tls 创建证书
  • 若无域名可省略 host 字段,匹配所有域名请求

🔄 二、高级路由控制

1. URL 重写(适用后端服务路径与入口路径不一致)
metadata:annotations:nginx.ingress.kubernetes.io/rewrite-target: /$1  # 重写路径
spec:rules:- host: go-app.example.comhttp:paths:- path: /api(/|$)(.*)       # 捕获路径参数pathType: Prefixbackend:service:name: go-serviceport: number: 80

效果
请求 go-app.example.com/api/user → 后端实际接收路径 /user


2. 多路径路由到不同服务
spec:rules:- host: foo.bar.comhttp:paths:- path: "/foo"backend:serviceName: service-foo  # 服务1servicePort: 80- path: "/bar"backend:serviceName: service-bar  # 服务2servicePort: 80

适用场景
微服务架构按功能拆分路径


🚦 三、流量治理策略

1. 金丝雀发布(灰度发布)
metadata:annotations:nginx.ingress.kubernetes.io/canary: "true"nginx.ingress.kubernetes.io/canary-weight: "15"  # 15%流量到新版本
spec:rules:- host: canary.example.comhttp:paths:- path: /backend:service:name: new-service      # 新版本服务port: 80

说明
剩余 85% 流量仍走旧服务


2. 粘性会话(会话保持)
metadata:annotations:nginx.ingress.kubernetes.io/affinity: "cookie"nginx.ingress.kubernetes.io/session-cookie-name: "user-route"nginx.ingress.kubernetes.io/session-cookie-expires: "172800"  # 有效期2天
spec:rules:- host: shop.example.comhttp:paths:- path: /backend:service:name: cart-serviceport: 80

适用场景
购物车、用户登录态保持


🔐 四、安全增强配置

1. 强制 HTTPS 跳转
metadata:annotations:nginx.ingress.kubernetes.io/force-ssl-redirect: "true"  # HTTP自动跳HTTPS
spec:tls:- hosts:- secure.example.comsecretName: tls-secretrules:- host: secure.example.comhttp:paths:- path: /backend: ...

2. 通配符域名证书
spec:tls:- hosts:- "*.example.com"           # 支持所有子域名secretName: wildcard-tls-secretrules:- host: app1.example.com        # 子域名1http: ...- host: app2.example.com        # 子域名2http: ...

注意
证书需包含通配符 *


🌐 五、跨命名空间路由

场景:将流量路由到其他 Namespace 的服务

spec:rules:- host: cross-ns.example.comhttp:paths:- path: /backend:service:name: other-service   port: 80namespace: dev-team  # 指定目标命名空间

权限要求
Ingress Controller 需有访问目标 Namespace 的权限


⚙️ 六、云厂商集成(华为云 CCI 示例)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:annotations:kubernetes.io/elb.id: "2d48d034-..."  # 绑定云 ELB 实例 IDkubernetes.io/elb.port: '6071'         # ELB 监听端口labels:isExternal: "true"                    # 必填标识
spec:rules:- http:paths:- path: /backend:serviceName: nginxservicePort: 8080

适用场景
公有云托管 Kubernetes 服务


💎 总结对比表:按场景选择配置

场景配置要点关键注解/字段
基础 HTTPS 路由TLS 证书 + 路径匹配tls.secretName, spec.rules.paths
灰度发布按权重分流流量canary: "true", canary-weight
会话保持基于 Cookie 的亲和性affinity: "cookie", session-cookie-name
跨命名空间访问指定后端服务 Namespacebackend.service.namespace
云厂商 ELB 集成绑定云负载均衡器 ID 和端口kubernetes.io/elb.id, kubernetes.io/elb.port
通配符域名泛域名证书 + 多 host 规则tls.hosts: ["*.domain.com"]

💡 调试提示

  • 使用 kubectl describe ingress <name> 查看事件及错误
  • 若配置未生效,检查 Ingress Controller 日志(如 kubectl logs -n ingress-nginx <pod>
  • 生产环境推荐托管 Ingress 控制器(如 AWS ALB、GCE L7)降低运维成本

贰、k8s Service 样例大全

以下是 Kubernetes Service 四种核心类型(ClusterIPNodePortLoadBalancerExternalName)的配置样例大全,附带使用场景和关键参数解析:

🔧 一、ClusterIP(默认类型)

场景:集群内服务间通信(东西流量)

apiVersion: v1
kind: Service
metadata:name: redis-service  # 集群内访问地址:redis-service:6379
spec:type: ClusterIP      # 可省略(默认类型)selector:app: redis         # 关联标签为 app=redis 的 Podports:- name: tcp-port   # 端口命名(可选)protocol: TCPport: 6379       # Service 暴露的端口targetPort: 6379 # Pod 监听端口

特点

  • 分配一个集群内部虚拟 IP(如 10.96.0.1
  • 仅限集群内访问,无法从外部直接连接
  • 服务发现:通过 DNS 名称 <service-name>.<namespace>.svc.cluster.local

🌐 二、NodePort

场景:通过节点 IP 暴露服务(开发测试常用)

apiVersion: v1
kind: Service
metadata:name: web-nodeport
spec:type: NodePortselector:app: nginxports:- port: 80          # Service 端口(集群内访问)targetPort: 80     # Pod 端口nodePort: 30080    # 节点开放端口(范围 30000-32767)

访问方式

  • 集群内:web-nodeport:80
  • 集群外:<任意节点IP>:30080 → 自动路由到后端 Pod
    注意:生产环境需配合负载均衡器使用

☁️ 三、LoadBalancer(云厂商集成)

场景:公有云环境自动创建外部负载均衡器

apiVersion: v1
kind: Service
metadata:name: api-loadbalancerannotations:service.beta.kubernetes.io/aws-load-balancer-type: "nlb" # AWS NLB 注解
spec:type: LoadBalancerselector:app: api-serverports:- protocol: TCPport: 443         # LB 监听端口targetPort: 8080   # Pod 端口externalTrafficPolicy: Local # 保留客户端真实 IP

云厂商行为

  • AWS → 创建 NLB/ALB
  • GCP → 创建 Network LB
  • Azure → 创建 Azure LB
    访问方式
  • 通过云厂商分配的 LB 公网 IP 访问(如 https://<LB-IP>:443

🔗 四、ExternalName(CNAME 代理)

场景:将服务映射到外部 DNS 名称(如云数据库)

apiVersion: v1
kind: Service
metadata:name: mysql-external
spec:type: ExternalNameexternalName: mysql.prod.example.com  # 外部服务地址

访问方式

  • 集群内访问 mysql-external → 自动解析为 mysql.prod.example.com
    典型用途
  • 代理 RDS、ElastiCache 等托管服务
  • 简化迁移(无需修改应用配置)

⚙️ 高级配置样例

1. 多端口 Service(如 Web + Metrics)
apiVersion: v1
kind: Service
metadata:name: multi-port-svc
spec:type: ClusterIPselector:app: monitoringports:- name: httpport: 80targetPort: 8080- name: metricsport: 9100targetPort: 9100
2. 会话保持(Session Affinity)
spec:type: NodePortsessionAffinity: ClientIP  # 基于客户端 IP 会话保持sessionAffinityConfig:clientIP:timeoutSeconds: 3600   # 会话保持超时
3. 指定静态 ClusterIP
spec:type: ClusterIPclusterIP: 10.96.0.100     # 手动指定固定 IP

💎 四类 Service 核心对比

类型访问范围典型场景网络层外部依赖
ClusterIP集群内部微服务间通信L4
NodePort节点IP + 端口开发测试、临时暴露L4节点网络可达
LoadBalancer云厂商 LB 公网 IP生产环境对外暴露L4云厂商 LB 服务
ExternalName集群内部代理外部服务(如 RDS)L7 (DNS)外部 DNS 解析

🔧 调试命令

# 查看 Service 详情
kubectl describe svc <service-name># 检查 Endpoints 是否正常
kubectl get endpoints <service-name># 集群内访问测试
kubectl run curl --image=curlimages/curl -it --rm -- \curl http://<service-name>:<port>

💡 生产建议

  • 优先使用 Ingress + ClusterIP 管理 HTTP 流量(L7 路由)
  • LoadBalancer 用于 TCP/UDP 服务(如数据库)
  • 避免直接用 NodePort 暴露生产服务(安全风险高)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/86220.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/86220.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/86220.shtml

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

相关文章

领域驱动设计(DDD)【10】之DDD战术模式:工厂模式与表意接口模式

文章目录 引言&#xff1a;DDD战术模式的重要性一、DDD中的工厂模式1.1 工厂模式的核心概念1.2 工厂模式的三种实现方式1.2.1 简单工厂方法1.2.2 工厂类1.2.3 抽象工厂模式 1.3 工厂模式的适用场景1.4 实际案例&#xff1a;电商订单系统 二、表意接口模式2.1 表意接口2.2 表意接…

鸿蒙ArkTS---登录逻辑,数据持久化,ArkUI,网络请求等基础内容记录

该内容是在【博学谷】学习过程中的代码记录&#xff0c;如有任何问题请与作者联系。 也欢迎同在学习鸿蒙开发的小伙伴的留言&#xff0c;一同学习&#xff0c;一同进步。 功能实现&#xff08;只记录代码&#xff0c;没有相关配置&#xff0c;跑不起来&#xff09;&#xff…

没有公网ip可以实现跨网p2p互通吗?内网让公网直连访问常用工具

没有公网IP的情况下仍然可以实现P2P通信&#xff0c;但需要借助NAT穿透技术或类似nat123同端口映射等第三方工具实现内网穿透‌。‌‌‌‌ 一、什么是P2P通信&#xff1f; P2P网络&#xff08;Peer-to-Peer Network&#xff09;是一种去中心化的网络架构&#xff0c;其中每个…

云服务器安装宝塔面板(BT Panel)

安装宝塔面板&#xff08;BT Panel&#xff09;是很多服务器管理员常用的操作&#xff0c;尤其适合用于管理网站、数据库、FTP等。以下是基于 Linux 系统&#xff08;推荐 CentOS 或 Ubuntu&#xff09;的宝塔面板安装步骤。 安装前准备 云服务器一台 可以订购服务器 海外云主…

mongoose解析http字段值

最近在使用mongoose开发嵌入式web后端时&#xff0c;会遇到要解析js前端发送过来的http消息&#xff0c;比如传递用户名&#xff0c;密码过来&#xff0c;后端要解析出来并判断是否登录成功。 前端http有两种组装字段的方式。 第一种是 $.ajax({url: /upgradePackage,method: P…

高德地图地址解析获取经纬度失败原因JSAPI

高德地图地址解析获取经纬度失败原因JSAPI 地图加载的时候老是报异常码&#xff0c;地图是可以加载出来的&#xff0c;但是在地图上的操作老是有异常码&#xff0c;找了好久不知道什么问题&#xff0c;异常码会报两种&#xff0c;一种是说什么key的问题&#xff0c;但是我当时…

极速JavaScript:全面性能优化实战指南

在现代Web开发中&#xff0c;JavaScript性能直接影响用户体验。一个优化良好的应用能带来更流畅的交互、更快的加载速度和更低的资源消耗。本文将深入探讨实用的JavaScript性能优化技术&#xff0c;帮助您打造高性能Web应用。 一、性能瓶颈分析与诊断工具 性能问题的常见来源&…

【开源模型】高考数学139分!小米MiMo开源模型:7B参数突出重围

小米 MiMo&#xff1a;7 B 参数撬动推理巅峰&#xff0c;开源模型的技术突围 70 亿参数超越 320 亿对手&#xff0c;高考数学 139 分的背后是训练策略的全面革新。 2025 年 4 月 30 日&#xff0c;小米开源的首个推理大模型 Xiaomi MiMo-7 B 横空出世&#xff0c;以​​仅 7 B …

用vscode破解最新typora1.10.8

1.下载格式化插件防止打开文件一团乱 1&#xff09;下载vscode&#xff1a; Download Visual Studio Code - Mac, Linux, Windows 2&#xff09;vscode下载中文插件重启 如果没变中文&#xff0c;在vscode界面按下&#xff1a; ctrl shift p 调出命令行 再输入&#xff…

在 CI/CD 流程中使用 Jenkins 与 Docker 集成

在 CI/CD 流程中&#xff0c;Jenkins 与 Docker 的集成可以实现自动构建、测试、打包、发布容器镜像&#xff0c;并部署到测试/生产环境。下面是从概念到落地操作的完整集成方案。 一、常见的集成方式有哪些&#xff1f; 方式描述1️⃣ Jenkins 主机安装 DockerJenkins 可以直…

闲庭信步使用SV搭建图像测试平台:第十课——继续说说类

&#xff08;本系列只需要modelsim即可完成数字图像的处理&#xff0c;每个工程都搭建了全自动化的仿真环境&#xff0c;只需要双击top_tb.bat文件就可以完成整个的仿真&#xff0c;大大降低了初学者的门槛&#xff01;&#xff01;&#xff01;&#xff01;如需要该系列的工程…

如何改进复杂推理 - 从提示词设计入手

引言&#xff08;动机&#xff09; 在使用大语言模型&#xff08;如 GPT-4、Claude、DeepSeek 等&#xff09;构建智能问答、辅助决策或复杂任务代理系统时&#xff0c;可能遇到这些问题&#xff1a; 模型回答跳步骤、思路混乱同样问题&#xff0c;模型表现高度不稳定新任务一…

如何解决和各个经销商不同软件对接的问题?汤臣案例分享

一、项目背景 汤臣倍健作为健康产品行业的领军企业&#xff0c;其营销云系统与全国经销商 ERP 系统的数据无缝对接&#xff0c;对于提升业务运营效率和营销精准度至关重要。传统数据集成方法在面对经销商 ERP 系统的多样性和复杂性时&#xff0c;暴露出诸多问题&#xff0c;如…

Wordvice AI:Wordvice 推出的免费,基于先进的 AI 技术帮助用户提升英文写作质量

Wordvice AI&#xff1a;智能写作助手&#xff0c;助力高效英文写作 在当今全球化时代&#xff0c;英文写作已成为众多学生、研究人员、职场人士必备技能。然而&#xff0c;语法错误、表达不流畅、词汇匮乏等问题常困扰着大家。别担心&#xff0c;今天就来给大家介绍一款强大的…

【UE5】如何开发安卓项目的udp客户端

1关于如何打包安卓项目这里就不赘述了 2代码举例。最重要的就是这两句 #if PLATFORM_ANDROID #endif#if PLATFORM_WINDOWS #endif全部代码如下&#xff1a; Button_Sheng.h: // Fill out your copyright notice in the Description page of Project Settings.#pragma once#in…

2025年6月21和22日复习和预习(python)

一、作业内容 &#xff08;一&#xff09;知识点回顾 用户输入处理 使用input()函数获取用户输入的字符串&#xff0c;并存储到变量中。 条件判断语句 if-elif-else结构&#xff1a;根据不同条件执行相应代码块&#xff0c;适用于多分支判断。 语音合成技术 导入pyttsx3库实现…

Vue 样式穿透语法大全(涵盖 Vue2、Vue3、Less、Scss 等)

1. 什么是样式穿透&#xff1f; 样式穿透是在使用 Vue 组件时&#xff0c;为了修改子组件或第三方组件的样式而使用的一种特殊语法。当我们使用 scoped 样式时&#xff0c;由于样式被限制在当前组件内&#xff0c;要修改子组件的样式就需要使用样式穿透。 2. 为什么需要样式穿…

Python 属性查找:深入理解__getattribute__与__getattr__

目录 一、__getattribute__方法详解 1.1 基本概念 1.2 示例分析 1.3 注意事项 二、__getattr__方法详解 2.1 基本概念 2.2 示例分析 2.3 注意事项 三、__getattribute__与__getattr__的区别对比 3.1 调用时机 3.2 应用场景 3.3 性能影响 四、属性查找顺序 属性查找…

打表法从原理到实战详解

打表法结合经典案例从原理到实战详解 一、打表法基本信息1.1 打表法定义1.2 打表法适用场景1.3 打表法的优缺点 二、打表法经典案例解析2.1 快速计算斐波那契数列2.1.1 问题描述2.1.2 打表思路2.1.3 Java代码实现2.1.4 复杂度分析 2.2 快速判断质数&#xff08;埃氏筛法结合打表…

(LeetCode 面试经典 150 题 )121. 买卖股票的最佳时机 (遍历)

题目&#xff1a;121. 买卖股票的最佳时机 思路&#xff1a;遍历&#xff0c;维护已遍历过的元素中的最小值&#xff0c;时间复杂度0(n)。 C版本&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int mnprices[0];int mx0;for(int i1;i&…