在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Service在Kubernetes中的作用、使用方法及原理

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 作者:陳成 ? 2022-07-26 10:11 ? 次閱讀

【導(dǎo)讀】本文主要講述了K8S Service的基本概念,使用方式及實(shí)現(xiàn)原理。

故事的開始,讓我們先從一件生產(chǎn)故障說起。5月29日,內(nèi)部某系統(tǒng)出現(xiàn)大規(guī)模訪問Service故障,發(fā)現(xiàn)Pod容器內(nèi)無法正常訪問ServiceIP:Port,整個(gè)故障持續(xù)時(shí)間超過12h,相關(guān)運(yùn)維支撐人員沒有找到根本原因和解決辦法。

經(jīng)過復(fù)盤,我們發(fā)現(xiàn),大家對于K8S Service的原理不夠清晰,導(dǎo)致對問題的定位不能做得到快速準(zhǔn)確,如果當(dāng)時(shí)能夠按照如下的思路去思考問題,排查過程不至于花費(fèi)如此久的時(shí)間。

下面,我們就來細(xì)說一下Service在Kubernetes中的作用、使用方法及原理

Service是一種暴露一組Pod網(wǎng)絡(luò)的抽象方式,K8S Service提供了針對于一組Pod的負(fù)載均衡的暴露。通過這樣的方式,可以避免不同的pod之間訪問時(shí)需要知曉對應(yīng)pod網(wǎng)絡(luò)信息的痛苦。例如:前端->后端,由于前端POD IP隨時(shí)變動(dòng),后端亦如此,如何處理前端POD和后端POD的通信,就需要Service這一抽象,來保證簡單可靠。

Service的使用

1、典型服務(wù)配置方法

當(dāng)配置了selector之后,Service Controller會(huì)自動(dòng)查找匹配這個(gè)selector的pod,并且創(chuàng)建出一個(gè)同名的endpoint對象,負(fù)責(zé)具體service之后連接。

apiVersion: v1kind: Servicemetadata:  name: my-servicespec:  selector:    app: MyApp  ports:    - protocol: TCP      port: 80      targetPort: 9376

2、配置沒有selector的服務(wù)

沒有selector的service不會(huì)出現(xiàn)Endpoint的信息,需要手工創(chuàng)建Endpoint綁定,Endpoint可以是內(nèi)部的pod,也可以是外部的服務(wù)。

apiVersion: v1kind: Servicemetadata:  name: my-servicespec:  ports:    - protocol: TCP      port: 80      targetPort: 9376---apiVersion: v1kind: Endpointsmetadata:  name: my-servicesubsets:  - addresses:      - ip: 192.0.2.42    ports:      - port: 9376

Service的類型

1.CluserIP

kubectl expose pod nginx --type=CluserIP --port=80 --name=ng-svc apiVersion: v1kind: Servicemetadata:  name: ng-svc  namespace: defaultspec:  selector:      name: nginx  clusterIP: 11.254.0.2  ports:  - name: http    port: 80    protocol: TCP    targetPort: 1234  sessionAffinity: None  type: ClusterIP

2.LoadBalance

apiVersion: v1kind: Servicemetadata:  name: my-servicespec:  selector:    app: MyApp  ports:  - protocol: TCP    port: 80    targetPort: 9376  clusterIP: 10.0.171.239  type: LoadBalancerstatus:  loadBalancer:    ingress:    - ip: 192.0.2.127
3.NodePort

apiVersion: v1kind: Servicemetadata:name: my-servicespec:type: NodePortselector:  app: MyAppports:  - port: 80    targetPort: 80    nodePort: 30007
4.ExternalName 5.Headless

apiVersion: v1kind: Servicemetadata:  labels:    run: curl  name: my-headless-service  namespace: defaultspec:  clusterIP: None  ports:  - port: 80    protocol: TCP    targetPort: 80  selector:    run: curl  type: ClusterIP
對定義了選擇算符的無頭服務(wù),Endpoint 控制器在 API 中創(chuàng)建了 Endpoints 記錄, 并且修改 DNS 配置返回 A 記錄(IP 地址),通過這個(gè)地址直接到達(dá) Service 的后端 Pod 上。

# ping my-headless-servicePING my-headless-service (172.200.6.207): 56 data bytes64 bytes from 172.200.6.207: seq=0 ttl=64 time=0.040 ms64bytesfrom172.200.6.207:seq=1ttl=64time=0.063ms

對沒有定義選擇算符的無頭服務(wù),Endpoint 控制器不會(huì)創(chuàng)建 Endpoints 記錄。然而 DNS 系統(tǒng)會(huì)查找和配置,無論是:

對于 ExternalName 類型的服務(wù),查找其 CNAME 記錄

對所有其他類型的服務(wù),查找與 Service 名稱相同的任何 Endpoints 的記錄

Service的實(shí)現(xiàn)方式

1.用戶態(tài)代理訪問

5ef8eec8-0c23-11ed-ba43-dac502259ad0.png

即:當(dāng)對于每個(gè)Service,Kube-Proxy會(huì)在本地Node上打開一個(gè)隨機(jī)選擇的端口,連接到代理端口的請求,都會(huì)被代理轉(zhuǎn)發(fā)給Pod。那么通過Iptables規(guī)則,捕獲到達(dá)Service:Port的請求都會(huì)被轉(zhuǎn)發(fā)到代理端口,代理端口重新轉(zhuǎn)為對Pod的訪問

這種方式的缺點(diǎn)是存在內(nèi)核態(tài)轉(zhuǎn)為用戶態(tài),再有用戶態(tài)轉(zhuǎn)發(fā)的兩次轉(zhuǎn)換,性能較差,一般不再使用

2.Iptables模式

5f1bd4d8-0c23-11ed-ba43-dac502259ad0.png

3.Ipvs模式

5f43f0c6-0c23-11ed-ba43-dac502259ad0.png

Service Iptables實(shí)現(xiàn)原理

Iptables表和鏈及處理過程

5f66bebc-0c23-11ed-ba43-dac502259ad0.png

Service的Traffic流量將會(huì)通過prerouting和output重定向到kube-service鏈

-APREROUTING-mcomment--comment"kubernetesserviceportals"-jKUBE-SERVICES-APOSTROUTING-mcomment--comment"kubernetespostroutingrules"-jKUBE-POSTROUTING-A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES

KUBE-SERVICES->KUBE-SVC-XXXXXXXXXXXXXXXX->KUBE-SEP-XXXXXXXXXXXXXXXX represents a ClusterIP service

KUBE-NODEPORTS->KUBE-SVC-XXXXXXXXXXXXXXXX->KUBE-SEP-XXXXXXXXXXXXXXXX represents a NodePort service

幾種不同類型的Service在Kube-Proxy啟用Iptables模式下上的表現(xiàn)

ClusterIP

-A KUBE-SERVICES ! -s 172.200.0.0/16 -d 10.100.160.92/32 -p tcp -m comment --comment "default/ccs-gateway-clusterip:http cluster IP" -m tcp --dport 30080 -j KUBE-MARK-MASQ-A KUBE-SERVICES -d 10.100.160.92/32 -p tcp -m comment --comment "default/ccs-gateway-clusterip:http cluster IP" -m tcp --dport 30080 -j KUBE-SVC-76GERFBRR2RGHNBJ  

-A KUBE-SVC-76GERFBRR2RGHNBJ -m comment --comment "default/ccs-gateway-clusterip:http" -m statistic --mode random --probability 0.33333333349 -j KUBE-SEP-GBVECAZBIC3ZKMXB-A KUBE-SVC-76GERFBRR2RGHNBJ -m comment --comment "default/ccs-gateway-clusterip:http" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-PVCYYXEU44D3IMGK-A KUBE-SVC-76GERFBRR2RGHNBJ -m comment --comment "default/ccs-gateway-clusterip:http" -j KUBE-SEP-JECGZLHE32MEARRX-AKUBE-SVC-CEZPIJSAUFW5MYPQ-mcomment--comment"kubernetes-dashboard/kubernetes-dashboard"-jKUBE-SEP-QO6MV4HR5U56RP7M

-A KUBE-SEP-GBVECAZBIC3ZKMXB -s 172.200.6.224/32 -m comment --comment "default/ccs-gateway-clusterip:http" -j KUBE-MARK-MASQ-AKUBE-SEP-GBVECAZBIC3ZKMXB-ptcp-mcomment--comment"default/ccs-gateway-clusterip:http"-mtcp-jDNAT--to-destination172.200.6.224:80...

NodePort

apiVersion: v1kind: Servicemetadata:labels:  app: ccs-gatewayspec:clusterIP: 10.101.156.39externalTrafficPolicy: Clusterports:- name: http  nodePort: 30081  port: 30080  protocol: TCP  targetPort: 80selector:  app: ccs-gatewaysessionAffinity: Nonetype: NodePort

-AKUBE-NODEPORTS-ptcp-mcomment--comment"default/ccs-gateway-service:http"-mtcp--dport30081-jKUBE-MARK-MASQ-AKUBE-NODEPORTS-ptcp-mcomment--comment"default/ccs-gateway-service:http"-mtcp--dport30081-jKUBE-SVC-QYHRFFHL5VINYT2K############################-AKUBE-SVC-QYHRFFHL5VINYT2K-mcomment--comment"default/ccs-gateway-service:http"-mstatistic--moderandom--probability0.50000000000-jKUBE-SEP-2NPKETIWKKVUXGCL-AKUBE-SVC-QYHRFFHL5VINYT2K-mcomment--comment"default/ccs-gateway-service:http"-jKUBE-SEP-6O5FHQRN5IVNPW4Q##########################-AKUBE-SEP-2NPKETIWKKVUXGCL-s172.200.6.224/32-mcomment--comment"default/ccs-gateway-service:http"-jKUBE-MARK-MASQ-AKUBE-SEP-2NPKETIWKKVUXGCL-ptcp-mcomment--comment"default/ccs-gateway-service:http"-mtcp-jDNAT--to-destination172.200.6.224:80#########################-AKUBE-SEP-6O5FHQRN5IVNPW4Q-s172.200.6.225/32-mcomment--comment"default/ccs-gateway-service:http"-jKUBE-MARK-MASQ-A KUBE-SEP-6O5FHQRN5IVNPW4Q -p tcp -m comment --comment "default/ccs-gateway-service:http" -m tcp -j DNAT --to-destination 172.200.6.225:80

同時(shí),可以看到Service所申請的端口38081被Kube-proxy所代理和監(jiān)聽

# netstat -ntlp | grep 30081tcp       0      00.0.0.0:30081           0.0.0.0:*               LISTEN     3665705/kube-proxy

LoadBalancer

不帶有Endpoint的Service

kubectl create svc clusterip fake-endpoint --tcp=80 -A KUBE-SERVICES -d 10.101.117.0/32 -p tcp -m comment --comment "default/fake-endpoint:80 has no endpoints" -m tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable

帶有外部endpoint的Service

直接通過iptable規(guī)則轉(zhuǎn)發(fā)到對應(yīng)的外部ep地址

apiVersion: v1kind: Servicemetadata:  labels:    app: external  name: external  namespace: defaultspec:  ports:  - name: http    protocol: TCP    port: 80  sessionAffinity: None  type: ClusterIP---apiVersion: v1kind: Endpointsmetadata:  labels:    app: external  name: external  namespace: defaultsubsets:- addresses:  - ip: 10.124.142.43  ports:  - name: http    port: 80protocol: TCP

-A KUBE-SERVICES ! -s 172.200.0.0/16 -d 10.111.246.87/32 -p tcp -m comment --comment "default/external:http cluster IP" -m tcp --dport 80 -j KUBE-MARK-MASQ-A KUBE-SERVICES -d 10.111.246.87/32 -p tcp -m comment --comment "default/external:http cluster IP" -m tcp --dport 80 -j KUBE-SVC-LI2K5327B6J24KJ3 

-A KUBE-SEP-QTGIPNOYXN2CZGD5 -s 10.124.142.43/32 -m comment --comment "default/external:http" -j KUBE-MARK-MASQ-A KUBE-SEP-QTGIPNOYXN2CZGD5 -p tcp -m comment --comment "default/external:http" -m tcp -j DNAT --to-destination 10.124.142.43:80

總結(jié)

ClusterIP類型,KubeProxy監(jiān)聽Service和Endpoint創(chuàng)建規(guī)則,采用DNAT將目標(biāo)地址轉(zhuǎn)換為Pod的ip和端口,當(dāng)有多個(gè)ep時(shí),按照策略進(jìn)行轉(zhuǎn)發(fā),默認(rèn)RR模式時(shí),iptables采用:比如有4個(gè)實(shí)例,四條規(guī)則的概率分別為0.25, 0.33, 0.5和 1,按照順序,一次匹配完成整個(gè)流量的分配。

NodePort類型,將會(huì)在上述ClusterIP模式之后,再加上Kube-Proxy的監(jiān)聽(為了確保其他服務(wù)不會(huì)占用該端口)和KUBE-NODEPORT的iptable規(guī)則

審核編輯:彭靜

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16468

    瀏覽量

    179638
  • 網(wǎng)絡(luò)信息
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    10318
  • Service
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    13836

原文標(biāo)題:K8S Service 實(shí)戰(zhàn)與原理初探

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    精密空調(diào)操作使用方法詳解

    精密空調(diào)操作使用方法詳解
    的頭像 發(fā)表于 02-10 14:44 ?42次閱讀
    精密空調(diào)操作<b class='flag-5'>使用方法</b>詳解

    Kubernetes:構(gòu)建高效的容器化應(yīng)用平臺

    Kubernetes 作為容器編排的事實(shí)標(biāo)準(zhǔn),容器化應(yīng)用部署中發(fā)揮著關(guān)鍵作用。 搭建 Kubernetes 集群是應(yīng)用的基礎(chǔ)。可以使用kubeadm工具快速搭建。
    的頭像 發(fā)表于 01-23 15:22 ?101次閱讀

    AB伺服軟件使用方法

    AB伺服軟件使用方法
    發(fā)表于 12-24 14:45 ?0次下載

    西門子中繼器使用方法作用

    西門子中繼器工業(yè)自動(dòng)化和通信網(wǎng)絡(luò)扮演著重要角色,其主要使用方法作用如下: 使用方法 安裝 : 將中繼器插入電源插座,確保其供電正常。
    的頭像 發(fā)表于 09-05 09:45 ?979次閱讀

    基于DPU與SmartNIC的K8s Service解決方案

    1.? 方案背景 1.1. Kubernetes Service介紹 Kubernetes ServiceKubernetes
    的頭像 發(fā)表于 09-02 17:01 ?1035次閱讀
    基于DPU與SmartNIC的K8s <b class='flag-5'>Service</b>解決方案

    DC/DC模擬的基本使用方法和特性確認(rèn)方法

    本篇介紹了DC/DC模擬的基本使用方法及確認(rèn)基本特性的方法
    的頭像 發(fā)表于 08-20 17:08 ?843次閱讀
    DC/DC模擬的基本<b class='flag-5'>使用方法</b>和特性確認(rèn)<b class='flag-5'>方法</b>

    圖片動(dòng)畫控件和Video image控件的使用方法

    UI開發(fā)過程,序列幀基本是繞不開的,AWTK 支持多種方法實(shí)現(xiàn)序列幀顯示,本文介紹圖片動(dòng)畫控件和Video image控件的使用方法
    的頭像 發(fā)表于 08-06 16:44 ?1088次閱讀
    圖片動(dòng)畫控件和Video image控件的<b class='flag-5'>使用方法</b>

    淺談錫膏的儲存及使用方法

    錫膏(焊錫膏)是電子組裝過程中常用的材料,它的儲存和使用方法對保證焊接質(zhì)量和性能至關(guān)重要。以下是詳細(xì)的儲存及使用方法
    的頭像 發(fā)表于 06-27 10:02 ?1096次閱讀

    PLC中斷功能的作用使用方法

    PLC控制系統(tǒng)的一項(xiàng)關(guān)鍵技術(shù),對于提高系統(tǒng)的響應(yīng)速度和實(shí)時(shí)性具有至關(guān)重要的作用。本文將對PLC中斷功能的作用使用方法進(jìn)行詳細(xì)的闡述。
    的頭像 發(fā)表于 06-15 17:54 ?2289次閱讀

    可編程電源使用方法

    可編程電源使用方法 可編程電源使用方法 摘要:本文詳細(xì)介紹了可編程電源的使用方法,包括其基本概念、主要功能、選擇原則、操作步驟、注意事項(xiàng)以及實(shí)際應(yīng)用案例,旨在幫助讀者全面了解可編程電源
    的頭像 發(fā)表于 06-10 15:29 ?1177次閱讀

    蓄電池測試儀的作用使用方法

    領(lǐng)域,因此,準(zhǔn)確、快速地檢測蓄電池的性能對于保障設(shè)備的正常運(yùn)行具有重要意義。本文將詳細(xì)介紹蓄電池測試儀的作用使用方法以及相關(guān)的注意事項(xiàng)。
    的頭像 發(fā)表于 05-20 17:23 ?1949次閱讀

    手柄控制代碼及使用方法

    手柄控制代碼及使用方法
    的頭像 發(fā)表于 05-15 10:19 ?2156次閱讀

    網(wǎng)絡(luò)測試儀概述及作用 網(wǎng)絡(luò)測試儀的使用方法及注意事項(xiàng)

    隨著信息技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)已經(jīng)成為現(xiàn)代社會(huì)的基礎(chǔ)設(shè)施,其穩(wěn)定性、高效性和安全性對于個(gè)人、企業(yè)乃至國家都至關(guān)重要。為了保障網(wǎng)絡(luò)的正常運(yùn)行,網(wǎng)絡(luò)測試儀作為一種專業(yè)的網(wǎng)絡(luò)檢測工具,發(fā)揮著不可或缺的作用。本文將對網(wǎng)絡(luò)測試儀的概述、作用使用方
    的頭像 發(fā)表于 05-10 15:45 ?1796次閱讀

    集成芯片的使用方法

    需要注意的是,不同類型的集成芯片具有不同的使用方法和功能,因此實(shí)際應(yīng)用,需要仔細(xì)閱讀芯片的數(shù)據(jù)手冊和相關(guān)文檔,了解其具體的使用要求和步驟。此外,對于復(fù)雜的電路設(shè)計(jì)和系統(tǒng)應(yīng)用,可能需要具備相應(yīng)的電子技術(shù)和專業(yè)知識。
    的頭像 發(fā)表于 03-19 15:59 ?1627次閱讀

    RA MCU的CRC模塊和使用方法

    瑞薩RA單片機(jī)硬件CRC計(jì)算單元采用固定的多項(xiàng)式發(fā)生器來計(jì)算8位或者32位數(shù)據(jù)的CRC校驗(yàn)值,對數(shù)據(jù)傳輸或數(shù)據(jù)存儲的一致性、完整性進(jìn)行驗(yàn)證。這篇文章重點(diǎn)介紹RA MCU的CRC模塊和使用方法
    發(fā)表于 02-26 11:45 ?1068次閱讀
    RA MCU<b class='flag-5'>中</b>的CRC模塊和<b class='flag-5'>使用方法</b>
    主站蜘蛛池模板: 日本一视频一区视频二区 | 中日韩精品视频在线观看 | 香港日本三级在线播放 | 亚洲国产一区二区在线 | 日本加勒比黑人 | 九九热国产 | 日韩毛片免费视频 | 国产精品毛片久久久久久久 | 色综合美国色农夫网 | 国产成人系列 | 男人的天堂久久精品激情 | 宅男午夜 | 又色又污又爽又黄的网站 | 香港三级理论在线影院 | 在线电影你懂得 | 四虎影视最新 | 午夜国产精品福利在线观看 | 九色综合久久综合欧美97 | 涩涩97在线观看视频 | 日本污视频在线观看 | 91激情| 天天干天天操天天射 | 深爱五月激情五月 | 国产婷婷一区二区三区 | 爱爱小视频免费 | 成人一二 | 国内精品手机在线观看视频 | 开心激情五月网 | 操的好爽视频 | 特级a毛片 | 男人透女人超爽视频免费 | 久久婷人人澡人人爽 | 爱爱免费网站 | 亚洲欧洲日韩综合 | 中文字幕在线观看日剧网 | 午夜插| 哥也操| 日本不卡在线视频高清免费 | 日韩三级视频在线观看 | 亚洲成a人在线播放www | 久久久午夜精品理论片 |