2022年10月更文挑战17-k8s中的service

118 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情

k8s中的service

前文

本文内容为对于k8s中的service相关知识的总结与整理,主要倾向于个人总结性质,内容不保证足够全面。

什么是service

service可以认为是一个或一组k8s中pod的整合访问的入口。当我们需要访问pod时,可能需要知道pod的IP及端口才能完成访问。而通过service,我们只需要了解service的信息即可完成对若干动态pod的访问,由于pod的ip地址及端口可能是动态变化的,每次创建都会产生新的ip地址,因此通过service进行访问,由于ip固定同时又可以利用servicename直接访问,也就带来了固定的访问地址,让程序更加稳定。

service与pod的对应关系

service及pod主要通过selector及标签进行匹配。通过在pod中提前进行标签的指定,进行对应pod的关联。通过关联也就可以在访问service时直接找到对应的pod,进行实际的服务处理。

几种类型的service

  • NodePort nodeport类型的service主要是在新建服务时,直接将端口的映射进行指定。外部直接通过端口进行访问,无需经过k8s系统中,直接用service所在服务的ip即可访问到对应的pod。
  • ClusterIP clusterip主要是通过k8s服务进行pod的访问。在k8s外部,无法直接进行pod中逻辑的访问。只有在k8s内部,才可以通过给定的ip及端口访问,或直接利用服务名进行访问。也就是该类型的service主要是针对k8s中部署的容器进行服务。
  • headless 这是另外一种类型的服务,主要是服务于有状态部署。它不像其他的通过ip及端口访问,而是对pod进行dns解析处理,通过dns找到对应的服务。我们可以直接通过pod名及service名进行对应pod的寻找,由于有状态服务的部署是有固定次序及要求的。
  • loadbalancer 这种服务由k8s底层直接进行负载均衡的处理,相当于在nodeport的基础上提供负载均衡器。

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。