LinuxKubernetes服务发现教程_Service与Ingress实践
发布时间 - 2026-01-06 00:00:00 点击率:次Service是Kubernetes中为Pod提供稳定访问的核心机制,通过固定虚拟IP和DNS将流量负载均衡至后端健康Pod;Ingress则在Service之上实现HTTP层七层路由,二者协同完成从外部请求到具体Pod的解耦式转发。
Service:让Pod可被稳定访问的核心机制
Pod是Kubernetes中最小的调度单元,但它的IP地址会随着重建、扩缩容而频繁变化。直接依赖Pod IP通信不可靠。Service就是为解决这个问题而生——它提供一个固定的虚拟IP(ClusterIP)和DNS名称,将流量负载均衡到后端一组健康Pod上。
常见Service类型有:
- ClusterIP:默认类型,仅在集群内部可达,适合服务间调用
-
NodePort:在每个节点的固定端口暴露服务,外部可通过
访问,适合测试或小规模部署: - LoadBalancer:云厂商自动创建外部负载均衡器,映射到Service,适合生产环境对外暴露
- ExternalName:通过CNAME将Service映射到外部域名,不代理流量,仅做DNS别名
定义一个简单的ClusterIP Service示例:
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80注意selector必须与后端Pod的label
严格匹配,否则Endpoint不会生成,kubectl get endpoints nginx-svc会显示。
Ingress:统一入口,按HTTP规则路由流量
Service只能基于IP+端口转发,无法识别URL路径、Host头等HTTP层信息。Ingress作为API对象,配合Ingress Controller(如Nginx Ingress、Traefik),实现七层路由能力,是Web类应用对外暴露的标准方式。
它不替代Service,而是“站在Service前面”——Ingress规则最终把请求转发给某个Service。
一个基础Ingress示例(需确保Ingress Controller已部署):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-svc
port:
number: 80
- path: /
pathType: Prefix
backend:
service:
name: frontend-svc
port:
number: 80关键点:
-
pathType推荐用Prefix或Exact,避免模糊匹配引发意外路由 - Ingress本身不处理TLS;需通过
tls字段声明证书,并挂载Secret,Controller才会启用HTTPS - 单个Ingress资源可定义多Host、多路径,但实际路由能力取决于所用Controller的功能支持
Service与Ingress协作的典型流程
用户访问https://app.example.com/orders,实际经过三层转发:
- DNS解析到Ingress Controller所在节点(或云LB VIP)
- Ingress Controller根据Host和Path匹配规则,将请求转发给对应Service(如
orders-svc) - Service通过iptables或IPVS,将请求负载均衡到后端带
app: orders标签的Pod
这个链路里每一环都可独立管理:Pod扩缩不影响Service,Service变更不影响Ingress规则,Ingress升级也不影响后端服务。这种解耦正是Kubernetes服务发现设计的精髓。
排错与验证建议
服务不通?按顺序检查:
- 确认Pod运行正常:
kubectl get pods -l app=xxx,状态为Running且Ready为1/1 - 确认Endpoints已就绪:
kubectl get endpoints xxx-svc,应列出Pod IP和端口 - 确认Service能被集群内解析:
kubectl run test --image=busybox:1.35 --rm -it -- nslookup xxx-svc - 对Ingress,先查Ingress资源是否生效:
kubectl get ingress看ADDRESS列是否有IP;再查Ingress Controller日志,确认规则是否加载成功 - 用
kubectl describe ingress xxx查看Events,常有配置错误提示(如Service不存在、端口不匹配)
不复杂但容易忽略。
# linux
# node
# nginx
# app
# 端口
# 后端
# 路由
# dns
# kubernetes
# trae
# 对象
# http
# https
# 负载均衡
# 均衡器
# 转发给
# 七层
# 也不
# 站在
# 才会
# 不存在
# 可达
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在橙子建站上传落地页?操作指南详解
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
如何在企业微信快速生成手机电脑官网?
Angular 表单中正确绑定输入值以确保提交与验证正常工作
bootstrap日历插件datetimepicker使用方法
Laravel如何创建自定义Artisan命令?(代码示例)
焦点电影公司作品,电影焦点结局是什么?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
北京的网站制作公司有哪些,哪个视频网站最好?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Bootstrap整体框架之CSS12栅格系统
什么是javascript作用域_全局和局部作用域有什么区别?
如何用5美元大硬盘VPS安全高效搭建个人网站?
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
佛山网站制作系统,佛山企业变更地址网上办理步骤?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
如何确保FTP站点访问权限与数据传输安全?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
如何快速查询域名建站关键信息?
Thinkphp 中 distinct 的用法解析
微信小程序 wx.uploadFile无法上传解决办法
如何快速辨别茅台真假?关键步骤解析
Python进程池调度策略_任务分发说明【指导】
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何将凡科建站内容保存为本地文件?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
详解MySQL数据库的安装与密码配置
米侠浏览器网页背景异常怎么办 米侠显示修复
如何快速搭建高效香港服务器网站?
🚀拖拽式CMS建站能否实现高效与个性化并存?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
浅谈redis在项目中的应用
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
网站制作报价单模板图片,小松挖机官方网站报价?
如何在Windows虚拟主机上快速搭建网站?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Android okhttputils现在进度显示实例代码
香港网站服务器数量如何影响SEO优化效果?

