☰
K8s集群生产环境Kong路由配置集成
2026/10/8 4:42:31 网站建设 项目流程

K8s集群生产环境Kong路由配置集成实操

技术栈:Kong Gateway v3.5.x + Kubernetes v1.32.13 + Rocky Linux 8.6 + PostgreSQL 15 + Kong Ingress Controller 2.12

操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案

K8s集群生产环境Kong路由配置集成实操

操作环境

  • Kong Gateway v3.5.x,已部署在 kong 命名空间

  • K8s 集群 v1.32.13,Rocky Linux 8.6

  • PostgreSQL 15 作为配置存储(或DBless模式)

  • Kong Ingress Controller (KIC) v2.12.x 已安装

  • Konga Dashboard 已部署用于Web管理

  • 后端微服务部署在 default 命名空间

  • kubectl v1.32.13,Kong Admin API 已配置

对接原理

Kong Gateway 是开源 API 网关,基于 OpenResty(Nginx + LuaJIT),支持插件扩展、负载均衡、限流、认证。两种部署模式:DB模式(PostgreSQL/Cassandra存储配置,支持多节点)和 DBless 模式(配置通过声明式YAML加载,适合K8s)。核心概念:Service(后端服务抽象)、Route(路由规则,关联Service)、Consumer(消费者)、Plugin(插件,全局/服务/路由/消费者级别)、Upstream(上游负载均衡)、Target(上游节点)。Kong Ingress Controller 监听 K8s Ingress/HTTPRoute/KongPlugin/KongConsumer 等 CRD,自动配置 Kong 路由和插件。流量处理:客户端 -> Kong -> 路由匹配 -> 插件链 -> Service -> Upstream负载均衡 -> 后端Pod。Kong 企业版提供更多高级插件(Vitals、Dev Portal、RBAC),开源版已覆盖常用网关功能。高可用:Kong 多副本无状态,PostgreSQL 主从或外部托管,K8s Service 前置负载均衡。

详细步骤

1. 配置Service与Route

# Admin API创建Service curl -i -X POST http://localhost:8001/services/ \ --data name=myapp-service \ --data url='http://myapp.default.svc.cluster.local:8080' # 创建Route curl -i -X POST http://localhost:8001/services/myapp-service/routes \ --data 'paths[]=/api' \ --data 'methods[]=GET' \ --data 'methods[]=POST' \ --data 'hosts[]=api.example.com' # 查看 curl http://localhost:8001/services curl http://localhost:8001/routes # 通过Ingress(KIC) cat > kong-ingress.yaml << 'EOF' apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: myapp-ingress namespace: default annotations: konghq.com/strip-path: "true" spec: ingressClassName: kong rules: - host: api.example.com http: paths: - path: /api pathType: Prefix backend: service: name: myapp port: number: 8080 EOF kubectl apply -f kong-ingress.yaml # HTTPRoute(Gateway API) cat > kong-httproute.yaml << 'EOF' apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: myapp-route spec: parentRefs: - name: kong hostnames: - api.example.com rules: - matches: - path: type: PathPrefix value: /api backendRefs: - name: myapp port: 8080 EOF # 测试 curl -v -H "Host: api.example.com" http://kong-proxy/api/test

验证流程

# 1. 验证Kong运行 kubectl get pods -n kong # 2. 验证路由 curl -v -H "Host: api.example.com" http://kong-proxy/api/test # 3. 验证插件 # 限流:超过限制返回429 # 认证:无key返回401,有key返回200 # 4. 验证负载均衡 for i in {1..20}; do curl -s http://kong-proxy/api/version; done | sort | uniq -c # 5. 验证健康检查 curl http://localhost:8001/upstreams/<name>/health # 6. 验证灰度 curl -H "x-canary: true" http://kong-proxy/api/version # 7. 查看监控 curl http://localhost:8001/metrics | grep kong

排错方案

  • 路由404:检查Route的paths/methods/hosts是否匹配请求,Service是否关联Route,strip-path配置,KIC是否同步配置,Kong日志查看路由匹配

  • 上游502:检查Service host是否正确,Upstream target是否健康,后端Pod是否Running,端口是否正确,网络策略,DNS解析

  • 插件不生效:检查插件是否绑定到正确的Service/Route/Consumer,插件配置参数,插件是否启用,插件优先级,Kong错误日志

  • 认证失败:检查Consumer是否创建,凭证是否正确,请求header名称,JWT算法/密钥/过期时间,插件配置key_names

  • DBless配置不更新:检查ConfigMap是否更新,Kong是否reload,declarative_config路径,KIC是否推送配置,Kong启动日志

  • KIC不同步:检查Ingress Class是否为kong,CRD是否安装,KIC日志,RBAC权限,Kong Admin API连通性,annotations格式

  • 性能问题:增加Kong副本,调整nginx worker_processes/worker_connections,启用缓存,上游keepalive,分析access_log耗时,升级实例规格

  • HTTPS错误:检查证书Secret,Kong TLS配置,SNI匹配,证书链完整,私钥匹配,强

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询