Kubernetes Service 类型和会话亲和性

💡 原文中文,约6300字,阅读约需15分钟。
📝

内容提要

本文介绍 Kubernetes 中的 Service 类型和最佳实践,包括 ClusterIP、NodePort、LoadBalancer 和 ExternalName,以及使用 Headless Services 配合 StatefulSet、使用 Ingress 替代 NodePort Service 和为负载均衡器分配足够资源等最佳实践。

🎯

关键要点

  • Service 是一组或多组 Pod 的静态 IP 地址,负责转发请求到对应的 Pod。
  • Pod 是 Kubernetes 中应用运行的最小单位,EndPoint 定义了 Service 指向的具体 Pod 的 IP 地址和端口。
  • EndpointSlice 通过分组方式解决了单个 EndPoint 对象过大的问题,提高了大规模集群的性能和扩展性。
  • 在中大规模集群中,使用 EndpointSlice API 替换 Endpoints 是最佳实践。
  • Service 的类型包括 ClusterIP、NodePort、LoadBalancer 和 ExternalName。
  • ClusterIP 是默认类型,仅在集群内部可访问,可以使用 Headless Services 进行更灵活的 Pod 访问。
  • NodePort 允许集群外部访问,但需注意安全性和端口冲突问题。
  • LoadBalancer 由云服务提供商创建外部负载均衡器,需确保分配足够资源。
  • ExternalName 将 Service 映射到外部 CNAME 记录,适用于隐藏集群内部细节。
  • 会话亲和性可以通过设置 sessionAffinity 来确保单个客户端请求转发到同一 Pod。
  • 不同 Service 类型的优缺点和适用场景需根据具体需求选择。
➡️

继续阅读