111111

深入理解Service

8.1 Service存在的意义

  • 防止Pod失联(服务发现)

  • 定义一组Pod的访问策略(负载均衡)

8.2 Pod与Service的关系

  • 通过label-selector相关联

  • 通过Service实现Pod的负载均衡( TCP/UDP 4层)

  •  

     

    8.2 Service三种类型

    • ClusterIP:集群内部使用,默认分配一个稳定的IP地址,即VIP,只能在集群内部访问(同Namespace内的Pod)。

    • NodePort:对外暴露应用。在每个节点上启用一个端口来暴露服务,可以在集群外部访问。也会分配一个稳定内部集群IP地址。访问地址:<NodeIP>:<NodePort>

    • LoadBalancer:对外暴露应用,适用公有云、与NodePort类似,在每个节点上启用一个端口来暴露服务。除此之外,Kubernetes会请求底层云平台上的负载均衡器,将每个Node([NodeIP]:[NodePort])作为后端添加进去。

     

     8.3 Service代理模式

 

 

Iptables:

  • 灵活,功能强大

  • 规则遍历匹配和更新,呈线性时延

IPVS:

  • 工作在内核态,有更好的性能

  • 调度算法丰富:rr,wrr,lc,wlc,ip hash...

启用ipvs:

1
2
3
4
lsmod|grep ip_vs
kubectl edit configmap kube-proxy -n kube-system
kubectl delete pod xxx -n kube-system
ipvsadm -ln

 

Service DNS名称

DNS服务监视Kubernetes API,为每一个Service创建DNS记录用于域名解析。

ClusterIP A记录格式:<service-name>.<namespace-name>.svc.cluster.local

示例:my-svc.my-namespace.svc.cluster.local

小结

  1. 采用NodePort对外暴露应用,前面加一个LB实现统一访问入口

  2. 优先使用IPVS代理模式

  3. 集群内应用采用DNS名称访问

 

 

posted @   赵SIR  阅读(241)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示