成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

必知必會,七張圖輕松理解 Kubernetes 集群內服務通信

網絡 通信技術
通過本文,我們看到了使服務到服務通信成為可能的原生 Kubernetes 對象,這些細節對應用程序層是隱藏的。

?深入了解支持服務間通信的 3 個原生 k8s 對象:ClusterIP Service、DNS 和 Kube-Proxy。

圖片概述

傳統的服務到服務通信

在進入 Kubernetes 生態系統之前,快速了解一下傳統的服務到服務通信:通信是通過 IP 地址進行的,因此為了讓服務 A 調用服務 B,一種方法是為服務 B 分配一個靜態 IP 地址。現在,服務 A 已經知道該 IP 地址(這在處理極少數服務時可能會起作用)或服務 B 使用域名注冊自己,并且服務 A 通過 DNS 查找獲取服務 B 的聯系地址。

圖片

傳統的服務到服務通信

Kubernetes 網絡模型

現在在 Kubernetes 集群中,我們擁有構成集群管理組件和一組工作機器(稱為節點)的控制平面。這些節點托管 Pod,這些 Pod 將后端微服務作為容器化服務運行。

圖片

集群內的 Pod 到 Pod 通信

根據 Kubernetes 網絡模型:

  • 集群中的每個 pod 都有自己唯一的集群范圍 IP 地址
  • 所有 pod 都可以與集群內的每個 pod 通信
  • 通信在沒有 NAT 的情況下發生,這意味著目標 pod 可以看到源 pod 的真實 IP 地址。Kubernetes 認為容器網絡或在其上運行的應用程序是可信的,不需要在網絡級別進行身份驗證。

ClusterIP 服務 ~ 基于 Pod 的抽象

既然集群中的每個 pod 都有自己的 IP 地址,那么一個 pod 與另一個 pod 通信應該很容易吧?

不,因為 Pod 是易變的,每次創建 pod 時都會獲得一個新的 IP 地址。所以客戶端服務必須以某種方式切換到下一個可用的 pod。

圖片

Pod 直接相互交談的問題是另一個目標 Pod 的短暫性(隨時可能銷毀),其次是發現新 Pod IP 地址。

因此 Kubernetes 可以在一組 Pod 之上創建一個層,該層可以為該組提供單個 IP 地址并可以提供基本的負載平衡。

圖片

通過持久 IP 地址上的 ClusterIP 服務公開的 Pod,客戶端與服務對話,而不是直接與 Pod 對話。

這種抽象是由 Kubernetes 中一個名為ClusterIP service的服務對象提供的。它在多個節點上產生,從而在集群中創建單個服務。它可以接收任何端口上的請求并將其轉發到 pod 上的任何端口。

因此,當應用服務 A 需要與服務 B 對話時,它會調用服務 B 對象的 ClusterIP 服務,而不是運行該服務的單個 pod。

ClusterIP 使用 Kubernetes 中標簽和選擇器的標準模式來不斷掃描匹配選擇標準的 pod。Pod 有標簽,服務有選擇器來查找標簽。使用它,可以進行基本的流量拆分,其中新舊版本的微服務在同一個 clusterIP 服務后共存。

CoreDNS ~ 集群內的服務發現

現在服務 B 已經獲得了一個持久的 IP 地址,服務 A 仍然需要知道這個 IP 地址是什么,然后才能與服務 B 通信。

Kubernetes 支持使用 CoreDNS 進行名稱解析。服務 A 應該知道它需要與之通信的 ClusterIP 的名稱(和端口)。

圖片

  • CoreDNS 掃描集群,每當創建 ClusterIP 服務時,它的條目就會添加到 DNS 服務器(如果已配置,它還會為每個 pod 添加一個條目,但它與服務到服務的通信無關)。
  • 接下來,CoreDNS 將自己暴露為 cluster IP 服務(默認稱為 kube-dns),并且該服務被配置為 pod 中的 nameserver。
  • 發起請求的 Pod 從 DNS 獲取 ClusterIP 服務的 IP 地址,然后可以使用 IP 地址和端口發起請求。

Kube-proxy 打通 Service 和后端 Pod 之間(DNAT)

到目前為止,從本文來看,似乎是 ClusterIP 服務將請求調用轉發到后端 Pod。但實際上,它是由 Kube-proxy 完成的。

Kube-proxy 在每個節點上運行,并監視 Service 及其選擇的 Pod(實際上是 Endpoint 對象)。

  • 當節點上運行的 pod 向 ClusterIP 服務發出請求時,kube-proxy 會攔截它。
  • 通過查看目的 IP 地址和端口,可以識別目的 ClusterIP 服務。并將此請求的目的地替換為實際 Pod 所在的端點地址。

如何協同工作?

圖片ClusterIP Service、CoreDNS、客戶端 Pod、Kube-Proxy、EndPoint的交互

  • 目標的 ClusterIP 服務在 CoreDNS 中注冊。
  • DNS 解析:每個 pod 都有一個 resolve.conf 文件,其中包含 CoreDNS 服務的 IP 地址,pod 執行 DNS 查找。
  • Pod 使用它從 DNS 收到的 IP 地址和它已經知道的端口來調用 clusterIP 服務。
  • 目標地址轉換:Kube-proxy 將目標 IP 地址更新為服務 B 的 Pod 可用的地址。

責任編輯:趙寧寧 來源: Linux云計算網絡
相關推薦

2020-07-10 07:58:14

Linux

2024-11-15 11:11:48

2021-11-29 07:47:56

RocketMQ分布式消息

2024-01-03 07:56:50

2023-09-20 22:52:12

Kubernetes快捷方式

2022-05-18 09:01:19

JSONJavaScript

2022-04-15 09:23:29

Kubernetes面試題

2022-08-19 10:31:32

Kafka大數據

2022-06-23 13:31:21

數據科學機器學習

2015-10-20 09:46:33

HTTP網絡協議

2019-01-30 14:14:16

LinuxUNIX操作系統

2018-10-26 14:10:21

2023-04-20 14:31:20

Python開發教程

2024-06-13 09:10:22

2015-08-17 16:05:35

javascript對象編程

2024-01-09 13:58:22

PandasPython數據分析

2023-12-26 12:10:13

2023-05-08 15:25:19

Python編程語言編碼技巧

2023-10-19 21:30:36

架構CQRS模式

2023-09-12 11:25:15

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品99精品久久免费 | 亚洲国产欧美在线 | 日韩色图在线观看 | 日本三级全黄三级三级三级口周 | 欧美一区二区三区在线视频 | 毛片电影| 九九热在线免费观看 | 国产一区在线看 | 男女久久久 | 91国产视频在线 | 成人在线视频免费播放 | 中文字幕一区二区三区乱码在线 | 亚洲欧美精品 | 极品国产视频 | 亚洲精品一区二区三区中文字幕 | 日韩中文字幕在线视频观看 | 亚洲麻豆| 免费成人高清在线视频 | 国产精品视频一区二区三区不卡 | 91久久久久 | 精品一区二区三区免费视频 | 一级黄a视频| 欧美日本高清 | 国产精品免费高清 | 久久精品久久久久久 | 亚洲第1页| 性一交一乱一透一a级 | 免费观看一区二区三区毛片 | 99re热精品视频国产免费 | 久草精品视频 | h视频在线免费观看 | 欧美精品第一区 | 亚洲交性| 精品久久香蕉国产线看观看亚洲 | 麻豆视频在线免费看 | 免费看色 | 一本色道久久综合亚洲精品高清 | 青草久久免费视频 | 成人免费视频播放 | 久久天堂 | 亚洲精品视频在线看 |