【K8s 精選】Kubernetes Service 介紹

1.Service 背景

問題1:為什么需要服務(wù)發(fā)現(xiàn)
① 容器 Pod 生命周期短暫,容器 IP 地址隨時變化
② Deployment 中的 Pod 組需要統(tǒng)一的訪問入口和負載均衡
③ 應(yīng)用在不同部署環(huán)境需要統(tǒng)一部拓撲和訪問方式

問題2:如何提供外部訪問和負載均衡的能力
Kubernetes Service 具備服務(wù)發(fā)現(xiàn)和負載均衡的功能坐求,即一方面提供了統(tǒng)一的訪問入口蚕泽,另一方面負載均衡到后端 Pod。下圖是 Service 的簡約架構(gòu)圖桥嗤,左側(cè)表示 Service 提供了外部訪問和 Pod 網(wǎng)絡(luò)訪問 须妻,右側(cè)表示對接了一組 Pod,同時把請求負載均衡到這組 Pod泛领。

Service 的簡約架構(gòu)圖.JPG

2.Service 架構(gòu)

Master 節(jié)點:Kubernetes 管理節(jié)點荒吏,負責(zé)管理和控制整個集群,包含的組件是 APIServer师逸、Controller Manager 和Scheduler司倚。
Worker 節(jié)點:Kubernetes 工作負載節(jié)點,包含的組件主要有 Kubelet篓像、Kube-proxy动知。

Kubernetes 服務(wù)發(fā)現(xiàn)架構(gòu).JPG

2.1 Service 的關(guān)鍵組件

APIServer:Kubernetes 所有對象都會注冊到 APIServer上,監(jiān)聽這些對象的變化员辩,例如 Pod盒粮、StatefulSet、Service 等奠滑。
Controller Manager:負責(zé)配置 LoadBalance 的一個負責(zé)均衡器給外部訪問丹皱。
Coredns:負責(zé)把 Service 名字(類似域名)解析為 Service 虛擬 IP 即 ClusterIP,同時觀測 Service 的變化宋税。
Kube-proxy:負責(zé)把 Service 虛擬 IP 即 ClusterIP 轉(zhuǎn)換為后端 Pod IP摊崭,同時觀測后端 Pod 的變化。

2.2 訪問鏈路分析

2.2.1 集群內(nèi)部訪問

如上架構(gòu)圖示例杰赛,Client Pod3 訪問 Service 的步驟:
Coredns 解析出 CluserIP:Client Pod3 拿著 Service name (域名)請求 Coredns呢簸,Coredns 解析域名后返回 ClusterIP。
Kube-proxy 攔截后負載均衡到后端 Pod:Client Pod3 拿著 ClusterIP 請求宿主機網(wǎng)絡(luò)后乏屯,被 Kube-proxy 所配置的 iptables 攔截了根时,隨后負債均衡轉(zhuǎn)發(fā)到后端 Pod。

2.2.2 集群外部訪問

LoaderBalancer 轉(zhuǎn)發(fā)請求到某節(jié)點的 NodePort:外部請求通過 LoaderBalancer 轉(zhuǎn)發(fā)到某節(jié)點的 NodePort辰晕,同時 LoaderBalander 通過 Controller Manager 監(jiān)聽 Service 的變化蛤迎。
Kube-proxy 把 NodePort 轉(zhuǎn)換為 ClusterIP 并轉(zhuǎn)發(fā)到后端 Pod:NodePort 的請求被 Kube-proxy 所配置的 iptables 攔截并轉(zhuǎn)發(fā)到 CluserIP,最終轉(zhuǎn)發(fā)到后端 Pod含友。

3.Service 示例

3.1 創(chuàng)建和查看 Service

# 創(chuàng)建 service
$kubectl apply -f service.yaml

# 查看 service
$kubectl describe service my-service
Name:              my-service
Namespace:         default
Labels:            app=my-service
Selector:          app=MyApp
Type:              ClusterIP
IP:                172.29.3.27   # Service 虛擬 IP
Port:              80/TCP
TargetPort:        9376/TCP
Endpoints:         192.168.115.236:9376,192.168.115.237:9376,192.168.115.238:9376   # Selector 匹配到的后端 Pod 地址
Session Affinity:  None

3.2 集群內(nèi)訪問 Service

3.2.1 ClusterIP 訪問

集群內(nèi)訪問Service.JPG

直接使用 ClusterIP

# 查詢 ClusterIP
$kubectl get svc |grep my-service

直接使用 Service Name替裆,Codedns 解析
{servicename}.{namespace}.svc.cluster.local

使用環(huán)境變量訪問

MY_SERVICE_PORT_80_TCP_PROTO=tcp
MY_SERVICE_PORT=tcp://172.29.3.27:80
MY_SERVICE_SERVICE_PORT=80
MY_SERVICE_PORT_80_TCP_PORT=80
MY_SERVICE_PORT_80_TCP=tcp://172.29.3.27:80
MY_SERVICE_SERVICE_PORT=80
MY_SERVICE_SERVICE_HOST=172.29.3.27
MY_SERVICE_PORT_80_TCP_ADDR=172.29.3.27

3.2.1 Headless Service

Headless訪問.JPG
apiVersion: v1
kind: Service
metadata:
  name: my-service
  label:
    app: my-service
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
  selector:
    app: myApp
  clusterIP: None    # 作用是讓 Service 不再通過虛擬 IP 來負載均衡

通過 Service Name 可以直接解析到所有后端 Pod IP
客戶端可以自主選擇需要訪問的 Pod IP

3.3 集群外訪問 Service

集群外訪問Service.JPG
apiVersion: v1
kind: Service
metadata:
  name: my-service
  label:
    app: my-service
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 30080
  selector:
    app: myApp
  type: NodePort
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末校辩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辆童,更是在濱河造成了極大的恐慌召川,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胸遇,死亡現(xiàn)場離奇詭異,居然都是意外死亡汉形,警方通過查閱死者的電腦和手機纸镊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來概疆,“玉大人逗威,你說我怎么就攤上這事〔砑剑” “怎么了凯旭?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長使套。 經(jīng)常有香客問我罐呼,道長,這世上最難降的妖魔是什么侦高? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任嫉柴,我火速辦了婚禮,結(jié)果婚禮上奉呛,老公的妹妹穿的比我還像新娘计螺。我一直安慰自己,他們只是感情好瞧壮,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布登馒。 她就那樣靜靜地躺著,像睡著了一般咆槽。 火紅的嫁衣襯著肌膚如雪陈轿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天罗晕,我揣著相機與錄音济欢,去河邊找鬼。 笑死小渊,一個胖子當(dāng)著我的面吹牛法褥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播酬屉,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼半等,長吁一口氣:“原來是場噩夢啊……” “哼揍愁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起杀饵,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤莽囤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后切距,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朽缎,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年谜悟,在試婚紗的時候發(fā)現(xiàn)自己被綠了话肖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡葡幸,死狀恐怖最筒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔚叨,我是刑警寧澤床蜘,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蔑水,受9級特大地震影響邢锯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搀别,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一火的、第九天 我趴在偏房一處隱蔽的房頂上張望化借。 院中可真熱鬧傀履,春花似錦搀玖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至单刁,卻和暖如春灸异,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背羔飞。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工肺樟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逻淌。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓么伯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卡儒。 傳聞我的和親對象是個殘疾皇子田柔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容