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

如何通过公网IP访问部署在kubernetes中的服务?

背景说明

我们有些私有化部署的项目,使用k8s来承载服务,通过ingress-nginx转发外部的请求到集群。有时候业主的域名没有申请下来,我们会配置临时的域名,测试同事配置主机hosts来完成功能验证,等功能验证完毕后,交给业主使用,业主配置hosts比较麻烦,这里通过配置Nginx直接使用公网IP访问服务。

拓扑架构

上面是访问的路径图。在k8s集群上配置了域名为“www.example.com”,

配置实现

在自建k8s集群中,通过IP访问k8s中的服务可以使用NodePort类型的Service来实现,因为集群部署了ingress-nginx ingress controller,这里没有采用NodePort类型的Service。

客户端访问服务时直接使用公网IP地址,请求到达Nginx时没有携带主机头“Host”,请求到达后端k8s集群返回是404状态码,技巧就是在Nginx将请求转发到后端k8s集群时,人为配置上“Host”主机头,这样请求就可以路由到正确的Pod,

Nginx的配置,

upstream k8s-entry {server 192.168.0.2:80; # ingress controller监听地址
}server {listen       80;server_name  _;  # 捕获全部的请求access_log  /var/log/nginx/host.access.log  main;location / {proxy_pass http://k8s-entry;proxy_set_header Host www.example.com; # 手动加入Host主机头proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Connection "";proxy_request_buffering off;}}

这样客户端就可以直接通过公网IP来访问服务了,等正式的域名完成备案,替换掉www.example.com就可以了。

 

 

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

相关文章:

  • AVL平衡二叉树
  • 为什么必须掌握Java异常处理机制?——从代码健壮性到面试必考题全解析
  • 阿里云服务器,CentOS7.9上安装YApi 接口管理平台
  • Linux修炼:权限
  • vue2往vue3升级需要注意的点(个人建议非必要别直接升级)
  • 基于规则匹配的文档标题召回
  • Leaflet面试题及答案(21-40)
  • PHT-CAD 笔记
  • 【每日算法】专题八_分治_归并排序
  • k8s新增jupyter服务
  • 7.11 dp 图
  • 企业IT管理——医院数据备份与存储制度模板
  • spring-ai RAG(Retrieval-Augmented Generation)
  • 【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_max
  • 【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_buckets
  • 基于深度学习的人类活动识别模型研究:HAR-DeepConvLG的设计与应用
  • C++,从汇编角度看《虚拟继承的邪恶》
  • 多模态联邦学习
  • STM32F103ZET6 TFTLCD显示图片
  • Docker构建银河麒麟arm架构redis镜像
  • Windows下基于docker desktop 使用Claude code
  • MySQL中使用group_concat遇到的问题及解决
  • 容器管理: 单机用Docker Compose,多机用Kubernetes
  • Docker高级管理--Dockerfile 镜像制作
  • 8.卷积神经网络基础
  • CSS 版本迭代历史和版本特性
  • ffmpeg-api记录
  • 8、鸿蒙Harmony Next开发:相对布局 (RelativeContainer)
  • PortsWiggerLab: Blind OS command injection with output redirection
  • 2D下的几何变换(C#实现,持续更新)