Kubernetes Service

2024-05-21 20:27:19 浏览数 (1)

Hi~朋友,关注置顶防止错过消息

Service的作用

用来降Pod集合在网络上公开出去,如果流量来自外部可能还需要配合Ingress。Service控制器会不断扫描与其选择符相匹配的集合,然后对Service的EndpointSlice集合进行更新。

EndpointSlice

EndpointSlice的名称在一个命名空间下必须唯一,通过kubernetes.io/service-name标签来指定EndpointSlice链接到哪个Service上。

有选择符和无选择符Service的区别

有选择符的运算符会自动创建对应的EndpointSlice,无选择运算符的Service不会自动创建EndpointSlice,需要手动创建,其中 type为ExternalName的可以不用创建EndpointSlice 。

关于有选择符的运算符的Service的工作原理可以参考Kubernetes Service工作原理分析

Service的类型

  1. ClusterIp:只能在集群内部访问,默认值
  2. NodePort:通过Node的端口进行访问
  3. LoadBalancer:依赖于云平台提供的负载均衡器
  4. ExternalName:将服务映射到externalName字段的内容

关于负载均衡器也可以利用云供应商提供的内部负载均衡器,需要通过对Service定义注解来实现,每家供应商的该字段不一样。

什么是无头服务(Headless Service)

无头服务是spec.clusterIP被指定为None的Service。

带选择运算符的无头服务,会创建EndpointSlice对象,并且修改 DNS配置返回A记录,这些A记录指向Service的后端Pod集合。

对于没有选择运算符的无头服务,port和targetPort必须匹配,不会创建EndpointSlice对象,但是会执行以下操作:

  • type为ExternalName查找配置其DNS CNAME记录
  • 其他类型的Service,针对Service就绪端点的IP地址查找和配置DNS A记录

0 人点赞