kubernetes的基本概念6 service 深入探讨
基本概念5中简单的介绍了一下 service,但是感觉还是不是很清晰,下边根据一位台湾网友的博客深化一下:
A Kubernetes Service is an abstraction which defines a logical set of Pods and a policy by which to access them.
service是一个定义了一组逻辑上Pods和如何访问这组Pods的抽象概念

三个问题:
谁会使用 Service ?
什么是逻辑上的一群 Pod?
什麼是访问规则?
==
1.谁会使用 Service ?
集群内部其他的Pod 访问路径3->2
集群外部的访问者 访问路径1->2
2.什么是逻辑上的一群 Pod?
如何上图中,颜色不同的Pod
3.什么是访问规则?
就是如何访问的规则,比方說 TCP/UDP、Port 等等相关规则。
Service 定义三个主要的模块儿:
1.服務元資料 (Metadata)
2.被存取的應用之標籤 (Label)
3.存取該服務的方式

接着上边说,其实一个service就像一个路由器,它有两个IP,外部IP和内部IP。
例如:
当外部访问Pod的时候,走的路线是 1->2 iptables NAT 將 destination 替換成Pod IP
当内部访问Pod的时候,走的路线是 3->2 iptables NAT 將 destination 替換成Pod IP
label selector 的作用:
label selector配合service 可以对Pod进行筛选:
Example1: 流量會流向全部帶有svc: http-server標籤的 Pod

Example2: 流量會流向全部帶有svc: http-server且 (AND) 擁有lang: python 的 Pod

Reference:
Kubernetes Service 概念詳解 | Kubernetes
Kubernetes Service 深度剖析 - 存取路徑差異 | Kubernetes
Kubernetes Service 深度剖析 - 標籤對於 Service 的影響 | Kubernetes
全文完