kubernetes的服務發現(二)

如前面的文章我們說了,kubernetes的服務發現是服務端發現模式。它有一個服務注冊中心,使用DNS作為服務的注冊表。每個集群都會運行一個DNS服務,默認是CoreDNS服務。每個服務都會在這個DNS中注冊。注冊的大致過程:
1、向kube-apiserver提交一個新服務對象的定義
2、創建服務對象,并分配它一個ClusterIP,保存服務對象數據到etcd中
3、DNS服務監聽kube-apiserver,一旦有新服務對象創建就創建一個從服務對象名稱映射到ClusterIP的域名記錄。服務就是不需要主動去DNS中注冊,靠DNS的控制器就能完成服務的自動注冊。

一旦注冊完成后,服務對象后面的Pod列表就會被更新。服務對象中的label selector字段與選擇器中定義的標簽相匹配的Pod就會納入當前服務對象的Pod列表中。服務對象的選擇控制器會持續掃描和服務對象的標簽相匹配的Pod,然后更新到EndPoint對象中。

在kubernetes中,Pod列表對應一個EndPoint對象,這個對象負責保存一個和服務標簽選擇器相配匹的Pod列表。

每個Pod都要知道集群DNS服務地址,Pod容器的/etc/resolv.conf文件都被配置為使用集群的DNS進行解析。

在kubernetes中的DNS服務查詢過程如下:
1、調用者向DNS服務發起域名(服務名稱)查詢,如果本地沒有緩存就會被提交到DNS服務,DNS服務返回對應的ClusterIP。ClusterIP是服務對象的IP地址,并不是具體提供服務的Pod的IP地址。
2、通過返回的ClusterIP訪問對應的Pod。kubernetes的每個節點(Node)上都有一個kube-proxy代理服務,這個代理會通過服務對象和Pod的對應關系創建iptables或IPVS路由規則,節點Node會基于這些規則將請求轉發到具體的Pod上。

順便提一下服務網格中邊車代理(sidecar proxy),流量會首先被這個代理劫持,這是通過修改iptables路由規則來做到這一點的。其次服務網格也會監聽集群內服務對象的變化情況,從而獲得最的服務地址。最后一點是關于負載均衡,服務網絡是基于服務對象而不是基于Pod的。它給服務對象前加上一層負載均衡,這樣才能實現基于服務層面的流量管理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208962.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208962.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208962.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF使用WebBrowser報腳本錯誤問題處理

前言 WPF使用WebBrowser報腳本錯誤問題處理,我們都知道WPF自帶的WebBrowser都用的IE內核,但是在特殊的條件下我們還需要用到它,比如展示純html簡單的頁面。再展示主流頁面的時候比如用到Jquery高級庫或者VUE等當前主流站點時經常就會報JS腳本錯誤,在Winform里面我們一句代…

【精選】設計模式——工廠設計模式

工廠設計模式是一種創建型設計模式,其主要目的是通過將對象的創建過程封裝在一個工廠類中來實現對象的創建。這樣可以降低客戶端與具體產品類之間的耦合度,也便于代碼的擴展和維護。 工廠設計模式: 以下是Java中兩個常見的工廠設計模式示例…

C++ 關于結構體struct的一些總結

文章目錄 一、 結構體(struct)是什么?(1)概念(2)struct 與 calss 的區別 二、定義、聲明與初始化(1)三種定義結構體的方法:(2)結構體變量初始化 三、結構體嵌…

C++實現進程端口網絡數據接收系統設計示例程序

一、問題描述 最近做了一道簡單的系統設計題&#xff0c;大概描述如下&#xff1a; 1.一個進程可以綁定多個端口&#xff0c;用于監聽接收網絡中的數據&#xff0c;但是一個端口只能被一個進程占用 2.1 < pid < 65535, 1 < port < 100000, 1 < topNum < 5, …

ros2/ros安裝ros-dep||rosdep init錯誤

第一個錯誤的做法&#xff1a; sudo apt-get install python3-pip sudo pip3 install 6-rosdep sudo 6-rosdep 如果使用上述代碼將會摧毀整個系統&#xff0c;不重裝系統反正我是搞不定啊&#xff0c;因為我不知道那個寫軟件的人到底做了什么。因為這個我安裝的版本是humble&…

AlexNet 閱讀筆記

“ImageNet Classification with Deep Convolutional Neural Networks” (Krizhevsky 等, 2012, p. 1) 使用深度卷積神經網絡進行 ImageNet 分類 3公式&#xff0c;26個引用&#xff0c;4張圖片&#xff0c;2個簡單表格 Abstract 我們訓練了一個大型深度卷積神經網絡&#…

Leetcode刷題詳解——環繞字符串中唯一的子字符串

1. 題目鏈接&#xff1a;467. 環繞字符串中唯一的子字符串 2. 題目描述&#xff1a; 定義字符串 base 為一個 "abcdefghijklmnopqrstuvwxyz" 無限環繞的字符串&#xff0c;所以 base 看起來是這樣的&#xff1a; "...zabcdefghijklmnopqrstuvwxyzabcdefghijklm…

卷積之后通道數為什么變了

通道數增多與卷積之后得到的圖像特征數量有關 卷積層的作用本來就是把輸入中的特征分離出來變成新的 feature map&#xff0c;每一個輸出通道就是一個卷積操作提取出來的一種特征。在此過程中ReLU激活起到過濾的作用&#xff0c;把負相關的特征點去掉&#xff0c;把正相關的留…

C++:vector增刪查改模擬實現

C:vector增刪查改模擬實現 前言一、迭代器1.1 非const迭代器&#xff1a;begin()、end()1.2 const迭代器&#xff1a;begin()、end() 二、構造函數、拷貝構造函數、賦值重載、析構函數模擬實現2.1 構造函數2.1.1 無參構造2.1.2 迭代器區間構造2.1.3 n個值構造 2.2 拷貝構造2.3 …

vue路由導航守衛(全局守衛、路由獨享守衛、組件內守衛)

目錄 一、什么是Vue路由導航守衛&#xff1f; 二、全局守衛 1、beforeEach 下面是一個beforeEach的示例代碼&#xff1a; 2、beforeResolve 下面是一個beforeResolve的示例代碼&#xff1a; 3、afterEach 下面是一個afterEach的示例代碼&#xff1a; 三、路由獨享守衛…

Shell - 學習筆記 - 1.14 - 如何編寫自己的Shell配置文件(配置腳本)?

第1章 Shell基礎(開胃菜) 14 - 如何編寫自己的Shell配置文件(配置腳本)? 學習了《Shell配置文件的加載》一節,讀者應該知道 Shell 在登錄和非登錄時都會加載哪些配置文件了。對于普通用戶來說,也許 ~/.bashrc 才是最重要的文件,因為不管是否登錄都會加載該文件。 我們…

【數據處理】NumPy數組的合并操作,如何將numpy數組進行合并?

&#xff0c;NumPy中的合并操作是指將兩個或多個數組合并成一個數組的操作。這種操作可以通過不同的函數來實現。 一、橫向合并&#xff08;水平合并&#xff09; 橫向合并是指將兩個具有相同行數的數組按列方向合并成一個數組的操作。在NumPy中&#xff0c;可以使用hstack()…

044:vue中引用json數據的方法

第044個 查看專欄目錄: VUE ------ element UI 專欄目標 在vue和element UI聯合技術棧的操控下&#xff0c;本專欄提供行之有效的源代碼示例和信息點介紹&#xff0c;做到靈活運用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安裝、引用&#xff0c;模板使…

多相Buck的工作原理

什么是多相Buck電源&#xff1f; 多相電源控制器是一種通過同時控制多個電源相位的設備&#xff0c;以提供穩定的電力供應。相位是指電源中的電流和電壓波形。多相控制器的設計旨在最大程度地減小電力轉換系統的紋波&#xff0c;并提高整體能效。它通常包含一系列的功率級聯&a…

我的創作紀念日1024天紀念

機緣 經歷的1024天&#xff0c;突然有一種驚奇&#xff0c;日子一天天過&#xff0c;有種恍惚的感覺 收獲 從最開始的隨筆&#xff0c;慢慢向著筆記總結轉變&#xff0c;不經意間積累了好多 憧憬 雖不知最終會怎樣發展&#xff0c;但堅持與向前是一定的&#xff0c;未來一…

結構化布線系統

滿足下列需求&#xff1a; 1.標準化&#xff1a;國際、國家標準。 2.實用性&#xff1a;針對實際應用的需要和特點來建設系統。 3.先進性&#xff1a;采用國際最新技術。5-10年內技術不落后。 4.開放性&#xff1a;整個系統的開放性。 5.結構化、層次化&#xff1a;易于管理和維…

Matplotlib數據可視化

繪圖基礎語法 &#xff11; 創建畫布并且創建子圖 首先創建一個空白的畫布&#xff0c;并且可以將畫布分為幾個部分&#xff0c;這樣就可以在同一附圖上繪制多個圖像。 plt.figure 創建一個空白畫布&#xff0c;可以指定畫布大小、像素 figure.add_subplot 創建并且選中子…

docker鏡像、容器管理與遷移

鏡像管理 搜索鏡像&#xff1a; 這種方法只能用于官方鏡像庫 搜索基于 centos 操作系統的鏡像 # docker search centos 按星級搜索鏡像&#xff1a; 查找 star 數至少為 100 的鏡像&#xff0c;默認不加 s 選項找出所有相關 ubuntu 鏡像&#xff1a; …

【web安全】文件讀取與下載漏洞

前言 菜某整理僅供學習&#xff0c;有誤請賜教。 概念 個人理解&#xff1a;就是我們下載一個文件會傳入一個參數&#xff0c;但是我們可以修改參數&#xff0c;讓他下載其他的文件。因為是下載文件&#xff0c;所以我們可以看到文件里面的源碼&#xff0c;內容。 文件讀取…

Python嗅探和解析網絡數據包

網絡工具解釋 Scapy是Python2和Python3都支持的庫。 它用于與網絡上的數據包進行交互。 它具有多種功能&#xff0c;通過這些功能我們可以輕松偽造和操縱數據包。 通過 scapy 模塊&#xff0c;我們可以創建不同的網絡工具&#xff0c;如 ARP Spoofer、網絡掃描儀、數據包轉儲器…