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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

通過5張圖了解K8S的Service網(wǎng)絡

阿銘linux ? 來源:阿銘linux ? 2023-04-21 09:03 ? 次閱讀

在介紹Service這個api資源對象時,我們已經(jīng)匯總過Service的幾種類型:ClusterIP、NodePort、LoadeBalancer,其實除了這三個外還有其它的類型,在本章節(jié)我們暫且不去討論。

這三種類型的Service,LoadBalancer依賴NodePort,而NodePort通常要和ClusterIP一起使用,如果在Service的yaml文件里定義type為LoadBalancer,則它會自動創(chuàng)建NodePort,而NodePort也會自動創(chuàng)建ClusterIP。

5dd9765a-dfd8-11ed-bfe3-dac502259ad0.png

下面,再來演繹一下從Pod到Service的網(wǎng)絡變化情況:

1)單個Pod之間通信

單個Pod和Pod之間通信只能通過Pod的IP和Port來通信,如下圖

5ded2fc4-dfd8-11ed-bfe3-dac502259ad0.png

沒有多余的描述,只要知道對方Pod的IP以及服務的端口,直接去訪問就行了,簡單粗暴!

2)Pod有多個

當引入Deployment,并為Pod設置多個副本時,那么提供某一個服務(如Nginx服務)的Pod就不止一個了,此時即使知道了這些Pod的IP,那訪問起來也并不方便。所以,這里需要有一個統(tǒng)一入口,其它Pod通過這個統(tǒng)一入口去請求該服務(Nginx)對應的所有Pod。這時就有了Service這個資源對象,它主要作用就是用來提供統(tǒng)一入口,也就是說只需要一個IP就能訪問所有的Pod,而這個入口IP就是ClusterIP,也就是Service的IP。

5e01e2b6-dfd8-11ed-bfe3-dac502259ad0.png

3)外部資源訪問內(nèi)部Pod

有了Service,的確可以很方便為內(nèi)部的Pod提供入口,但是在集群外面訪問這個內(nèi)部的資源就沒辦法了。于是,就有了這個NodePort,使用Service的NodePort類型,可以將Service的ClusterIP對應的Port映射到每一個Node的IP上,映射出去的Port范圍為30000~32767

5e0d4ba6-dfd8-11ed-bfe3-dac502259ad0.png

4)借助公有云的負載均衡器

使用這個NodePort并不方便,畢竟它帶著一個長長的端口號,而且還有一個非常尷尬的問題,就是訪問時還得帶著Node的IP,如果這個Node掛掉,那么就無法訪問此資源,雖然可以通過另外一個Node去訪問,但這樣太麻煩在!所以,此時的解決方案是:借助三方的負載均衡器,將請求分發(fā)到所有的Node上,其底層還是NodePort。

5e335698-dfd8-11ed-bfe3-dac502259ad0.png

總結(jié):Service為內(nèi)部Pod的統(tǒng)一入口,內(nèi)部資源之間可以通過最簡單的ClusterIP進行通信,而外部資源訪問需要借助NodePort的形式,但是帶著長長端口不方便,于是又衍生了LoadBalancer的形式,這種形式需要借助三方的負載均衡器,將請求分發(fā)到每一個NodePort上。





審核編輯:劉清

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

    關(guān)注

    9

    文章

    215

    瀏覽量

    30363
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    151

    瀏覽量

    12189

原文標題:通過5張圖了解K8S的Service網(wǎng)絡

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    k8s volume中的本地存儲和網(wǎng)絡存儲

    八 、 k8s volume 本地存儲和網(wǎng)絡存儲
    發(fā)表于 03-25 08:44

    OpenStack與K8s結(jié)合的兩種方案的詳細介紹和比較

    OpenStack與K8S結(jié)合主要有兩種方案。一是K8S部署在OpenStack平臺之上,二是K8S和OpenStack組件集成。
    的頭像 發(fā)表于 10-14 09:38 ?2.7w次閱讀

    k8s容器運行時演進歷史

    在docker/k8s時代,經(jīng)常聽到CRI, OCI,containerd和各種shim等名詞,看完本篇博文,您會有個徹底的理解。 典型的K8S Runtime架構(gòu) 從最常見的Docker說起
    的頭像 發(fā)表于 02-02 13:50 ?1938次閱讀
    <b class='flag-5'>k8s</b>容器運行時演進歷史

    Docker不香嗎為什么還要用K8s

    Docker 雖好用,但面對強大的集群,成千上萬的容器,突然感覺不香了。 這時候就需要我們的主角 Kubernetes 上場了,先來了解一下 K8s 的基本概念,后面再介紹實踐,由淺入深步步為營
    的頭像 發(fā)表于 06-02 11:56 ?3456次閱讀

    簡單說明k8s和Docker之間的關(guān)系

    ,但最近發(fā)現(xiàn)k8s概念較多,命令也有些不夠用了,故想借此機會寫點東西,更全面認識并使用k8s。本篇文章目的:讓你更全面了解k8s概念,以及學到在工作中常用的操作。整體更偏向于原理和應用
    的頭像 發(fā)表于 06-24 15:48 ?3429次閱讀

    K8S集群服務訪問失敗怎么辦 K8S故障處理集錦

    問題1:K8S集群服務訪問失??? ? ? 原因分析:證書不能被識別,其原因為:自定義證書,過期等。 解決方法:更新證書即可。 問題2:K8S集群服務訪問失敗? curl: (7) Failed
    的頭像 發(fā)表于 09-01 11:11 ?1.6w次閱讀
    <b class='flag-5'>K8S</b>集群服務訪問失敗怎么辦 <b class='flag-5'>K8S</b>故障處理集錦

    K8S(kubernetes)學習指南

    K8S(kubernetes)學習指南
    發(fā)表于 06-29 14:14 ?0次下載

    mysql部署在k8s上的實現(xiàn)方案

    的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應用軟件之一。這里主要講 mysql 部署在 k8s 上,mysql 部署在 k8s 上的優(yōu)勢主要有以下幾點。
    的頭像 發(fā)表于 09-26 10:39 ?2529次閱讀

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    ),Kubernetes提供了應用部署,規(guī)劃,更新,維護的一種機制。 在Kubernetes中,我們可以創(chuàng)建多個容器,每個容器里面運行一個應用實例,然后通過內(nèi)置的負載均衡策略,實現(xiàn)對這一組應用實例的管理、發(fā)現(xiàn)、訪問,而這些細節(jié)都不需要運維人員去進行復雜的手工配置和處理。 kubernetes(
    發(fā)表于 07-19 13:14 ?1124次閱讀

    什么是K3sK8s?K3sK8s有什么區(qū)別?

    Kubernetes,通??s寫為 K8s,是領先的容器編排工具。該開源項目最初由 Google 開發(fā),幫助塑造了現(xiàn)代編排的定義。該系統(tǒng)包括了部署和運行容器化系統(tǒng)所需的一切。
    的頭像 發(fā)表于 08-03 10:53 ?7617次閱讀

    k8s生態(tài)鏈包含哪些技術(shù)

    1. Apache APISIX Ingress 定義 ? 在 K8s 生態(tài)中,Ingress 作為表示 K8s 流量入口的一種資源,想要讓其生效,就需要有一個 Ingress Controller
    的頭像 發(fā)表于 08-07 10:56 ?1261次閱讀
    <b class='flag-5'>k8s</b>生態(tài)鏈包含哪些技術(shù)

    常用的k8s容器網(wǎng)絡模式有哪些?

    常用的k8s容器網(wǎng)絡模式包括Bridge模式、Host模式、Overlay模式、Flannel模式、CNI(ContainerNetworkInterface)模式。K8s的容器網(wǎng)絡
    的頭像 發(fā)表于 09-19 11:29 ?259次閱讀

    k8s云原生開發(fā)要求

    IO性能。網(wǎng)絡要求穩(wěn)定,建議使用私有網(wǎng)絡VPC,并配置與Kubernetes兼容的網(wǎng)絡插件。操作系統(tǒng)需與K8s版本匹配,虛擬化平臺支持Docker等。此外,還需關(guān)注安全配置,如禁用Sw
    的頭像 發(fā)表于 10-24 10:03 ?236次閱讀
    <b class='flag-5'>k8s</b>云原生開發(fā)要求

    混合云部署k8s集群方法有哪些?

    混合云部署k8s集群方法是首先需在本地與公有云分別建立K8s集群,并確保網(wǎng)絡連接。接著,配置kubeconfig文件連接兩集群,并安裝云服務插件以實現(xiàn)資源互通。然后,編寫Deployment文件部署應用,并使用kubectl命令
    的頭像 發(fā)表于 11-07 09:37 ?158次閱讀

    k8s和docker區(qū)別對比,哪個更強?

    Docker和Kubernetes(K8s)是容器化技術(shù)的兩大流行工具。Docker關(guān)注構(gòu)建和打包容器,適用于本地開發(fā)和單主機管理;而K8s則提供容器編排和管理平臺,適用于多主機或云環(huán)境,具備自動化
    的頭像 發(fā)表于 12-11 13:55 ?120次閱讀