一、Service
1.service基本介绍
service为一组提供服务的pod提供抽象的稳定的网络访问地址,主要用于网络服务,通过service定义,为客户端提供访问地址和负载均衡,屏蔽endport的变化。
在 kubernetes 中,pod 的IP 地址是动态变化的,因此无法直接通过 pod 的IP 地址进行访问。service的出现正式为了解决找个问题的。service 会为一组 pod 创建一个虚拟的 IP 地址,通过这个 IP 地址可以访问这组 pod 中的任意一个 pod。当客户端请求这个虚拟 IP 地址时,请求会被负载均衡到一组 pod 中的某一个 pod 上,从而完成对 pod 的访问。
service 的实现依赖于 kube-proxy 组件。kube-proxy 会在每个节点上监听 service 的变化,一旦有 service 发生变化,kube-proxy 会更新本地的 iptables 规则,从而实现流量的转发和负载均衡。
另外,service 还与 CoreDNS 有关。CoreDNS 是 kubernetes 集群中的 DNS 解析服务。在 kubernetes中 service 的虚拟 IP 地址还会注册到 coreDNS 中,从而使得客户端还可以通过service 名称访问service 的虚拟 IP 地址。在 service 的定义中,可以通过 spec,selector 字段指定哪些 pod 属于这个service,这样,就可以将请求负载均衡到这些 pod 中。
总之,service 是 kubernetes 中一种非常重要的资源对象,它可以让 pod 对外提供服务,并提供负载均衡、服务发现等功能。servie的实现依赖于kube-proxy 和CoreDNS组件,他们共同协作,将 service与 pod 连接起来