日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Kubernetes 外部 HTTP 請(qǐng)求到達(dá) Pod 容器的全過(guò)程

來(lái)源: 責(zé)編: 時(shí)間:2024-01-02 09:26:53 220觀看
導(dǎo)讀Kubernetes 集群外部的 HTTP/HTTPS 請(qǐng)求是如何達(dá)到 Pod 中的 container 的?HTTP 請(qǐng)求流轉(zhuǎn)過(guò)程概述如上圖所示,全過(guò)程大致為:(1) 用戶從 web/mobile/pc 等客戶端發(fā)出 HTTP/HTTPS 請(qǐng)求。(2) 由于應(yīng)用服務(wù)通常是通過(guò)域名的

Kubernetes 集群外部的 HTTP/HTTPS 請(qǐng)求是如何達(dá)到 Pod 中的 container 的?H2n28資訊網(wǎng)——每日最新資訊28at.com

HTTP 請(qǐng)求流轉(zhuǎn)過(guò)程概述

H2n28資訊網(wǎng)——每日最新資訊28at.com

如上圖所示,全過(guò)程大致為:H2n28資訊網(wǎng)——每日最新資訊28at.com

(1) 用戶從 web/mobile/pc 等客戶端發(fā)出 HTTP/HTTPS 請(qǐng)求。H2n28資訊網(wǎng)——每日最新資訊28at.com

(2) 由于應(yīng)用服務(wù)通常是通過(guò)域名的形式對(duì)外暴露,所以請(qǐng)求將會(huì)先進(jìn)行 DNS 域名解析,得到對(duì)應(yīng)的公網(wǎng) IP 地址。H2n28資訊網(wǎng)——每日最新資訊28at.com

(3) 公網(wǎng) IP 地址通常會(huì)綁定一個(gè) Load Balancer 負(fù)載均衡器,此時(shí)請(qǐng)求會(huì)進(jìn)入此負(fù)載均衡器。H2n28資訊網(wǎng)——每日最新資訊28at.com

  • Load Balancer 負(fù)載均衡器可以是硬件,也可以是軟件,它通常會(huì)保持穩(wěn)定(固定的公網(wǎng) IP 地址),因?yàn)槿绻袚Q IP 地址會(huì)因?yàn)?DNS 緩存的原因?qū)е路?wù)某段時(shí)間內(nèi)不可達(dá)。
  • Load Balancer 負(fù)載均衡器是一個(gè)重要的中間層,對(duì)外承接公網(wǎng)流量,對(duì)內(nèi)進(jìn)行流量的管理和轉(zhuǎn)發(fā)。

(4) Load Balancer 再將請(qǐng)求轉(zhuǎn)發(fā)到 kubernetes 集群的某個(gè)流量入口點(diǎn),通常是 ingress。H2n28資訊網(wǎng)——每日最新資訊28at.com

  • ingress 負(fù)責(zé)集群內(nèi)部的路由轉(zhuǎn)發(fā),可以看成是集群內(nèi)部的網(wǎng)關(guān)。
  • ingress 只是配置,具體進(jìn)行流量轉(zhuǎn)發(fā)的是 ingress-controller,后者有多種選擇,比如 Nginx、HAProxy、Traefik、Kong 等等。

(5)  ingress 根據(jù)用戶自定義的路由規(guī)則進(jìn)一步轉(zhuǎn)發(fā)到 service。H2n28資訊網(wǎng)——每日最新資訊28at.com

  • 比如根據(jù)請(qǐng)求的 path 路徑或 host 做轉(zhuǎn)發(fā)。

H2n28資訊網(wǎng)——每日最新資訊28at.com

H2n28資訊網(wǎng)——每日最新資訊28at.com

(6) service 根據(jù) selector(匹配 label 標(biāo)簽)將請(qǐng)求轉(zhuǎn)發(fā)到 pod。H2n28資訊網(wǎng)——每日最新資訊28at.com

  • service 有多種類型,集群內(nèi)部最常用的類型就是 ClusterIP。
  • service 本質(zhì)上也只是一種配置,這種配置最終會(huì)作用到 node 節(jié)點(diǎn)上的 kube-proxy 組件,后者會(huì)通過(guò)設(shè)置 iptables/ipvs 來(lái)完成實(shí)際的請(qǐng)求轉(zhuǎn)發(fā)。
  • service 可能會(huì)對(duì)應(yīng)多個(gè) pod,但最終請(qǐng)求只會(huì)被隨機(jī)轉(zhuǎn)發(fā)到一個(gè) pod 上。

(7) pod 最后將請(qǐng)求發(fā)送給其中的 container 容器。H2n28資訊網(wǎng)——每日最新資訊28at.com

同一個(gè) pod 內(nèi)部可能有多個(gè) container,但是多個(gè)容器不能共用同一個(gè)端口,因此這里會(huì)根據(jù)具體的端口號(hào)將請(qǐng)求發(fā)給對(duì)應(yīng)的 container。H2n28資訊網(wǎng)——每日最新資訊28at.com

以上就是一種典型的集群外部 HTTP 請(qǐng)求如何達(dá)到 Pod 中的 container 的全過(guò)程。H2n28資訊網(wǎng)——每日最新資訊28at.com

需要注意的是,由于網(wǎng)絡(luò)配置靈活多變,以上請(qǐng)求流轉(zhuǎn)過(guò)程并不是唯一的方式,例如:H2n28資訊網(wǎng)——每日最新資訊28at.com

如果你使用的是云服務(wù),那么可以通過(guò)使用 LoadBalancer 類型的 service 直接綁定一個(gè)云服務(wù)商提供的負(fù)載均衡器,然后再接 ingress 或者其它 service。H2n28資訊網(wǎng)——每日最新資訊28at.com

你也可以通過(guò) NodePort 類型的 service 直接使用節(jié)點(diǎn)上的端口,通過(guò)這些節(jié)點(diǎn)自建負(fù)載均衡器。H2n28資訊網(wǎng)——每日最新資訊28at.com

如果你的服務(wù)特別簡(jiǎn)單,沒(méi)啥內(nèi)部流量需要管理的,這時(shí)不用 ingress 也是可以的。H2n28資訊網(wǎng)——每日最新資訊28at.com

容器技術(shù)的底座

容器技術(shù)的底座有三樣?xùn)|西:H2n28資訊網(wǎng)——每日最新資訊28at.com

  • Namespace(這里是指 Linux 系統(tǒng)內(nèi)核的命名空間)
  • Cgroups
  • UnionFS

正是 Linux 內(nèi)核的 namespace 實(shí)現(xiàn)了資源的隔離。因?yàn)槊總€(gè) pod 有各自的 Linux namespace,所以不同的 pod 是資源隔離的。namespace 有多種,包括 PID、IPC、Network、Mount、Time 等等。其中 PID namespace 實(shí)現(xiàn)了進(jìn)程的隔離,因此 pod 內(nèi)可以有自己的 1 號(hào)進(jìn)程。而 Network namespace 則讓每個(gè) pod 有了自己的網(wǎng)絡(luò)。H2n28資訊網(wǎng)——每日最新資訊28at.com

Pod 有自己的網(wǎng)絡(luò),node 節(jié)點(diǎn)也有自己的網(wǎng)絡(luò),那么流量是如何從 node 節(jié)點(diǎn)到 pod 的呢?H2n28資訊網(wǎng)——每日最新資訊28at.com

HTTP 請(qǐng)求流轉(zhuǎn)過(guò)程補(bǔ)充

H2n28資訊網(wǎng)——每日最新資訊28at.com

每個(gè) node 節(jié)點(diǎn)上都有:H2n28資訊網(wǎng)——每日最新資訊28at.com

(1)kubelet:節(jié)點(diǎn)的小管家。H2n28資訊網(wǎng)——每日最新資訊28at.com

(2)kube-proxy:操作節(jié)點(diǎn)的 iptables/ipvs 。H2n28資訊網(wǎng)——每日最新資訊28at.com

(3)plugins:H2n28資訊網(wǎng)——每日最新資訊28at.com

  • CRI:容器運(yùn)行時(shí)接口
  • CNI:容器網(wǎng)絡(luò)接口
  • CSI(可選):容器存儲(chǔ)接口

每個(gè) node 節(jié)點(diǎn)有自己的 root namespace,其中也包括網(wǎng)絡(luò)相關(guān)的 root netns,每個(gè) pod 有自己的 pod netns,從 node 到 pod 則可以通過(guò) veth pairs 的方式連通,流量也正是通過(guò)此通道進(jìn)行的流轉(zhuǎn)。而構(gòu)建 veth pairs、設(shè)置 pod network namespace、為 pod 分配 IP 地址等等工作則正是 CNI 的任務(wù)。H2n28資訊網(wǎng)——每日最新資訊28at.com

至此,一個(gè)典型的 kubernetes 集群外部的 HTTP/HTTPS 請(qǐng)求如何達(dá)到 Pod 中的 container 的全過(guò)程就是這樣了。H2n28資訊網(wǎng)——每日最新資訊28at.com

參考資料:H2n28資訊網(wǎng)——每日最新資訊28at.com

  • https://kubernetes.io/docs/concepts/services-networking/
  • https://learnk8s.io/kubernetes-network-packets

本文鏈接:http://www.www897cc.com/showinfo-26-54983-0.htmlKubernetes 外部 HTTP 請(qǐng)求到達(dá) Pod 容器的全過(guò)程

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Koin輕量級(jí)依賴注入框架,輕松集成到Android應(yīng)用開發(fā)中

下一篇: 我們一起聊聊枚舉規(guī)范化

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 尼玛县| 蕲春县| 丹寨县| 五华县| 永寿县| 聊城市| 上杭县| 攀枝花市| 彭州市| 南安市| 天气| 巢湖市| 阿拉善盟| 武鸣县| 景洪市| 开化县| 崇信县| 牡丹江市| 资兴市| 黔南| 大城县| 汤阴县| 安国市| 乡宁县| 安达市| 德化县| 西藏| 比如县| 光泽县| 浙江省| 乌拉特前旗| 随州市| 望奎县| 广安市| 阜阳市| 门源| 长海县| 湖口县| 家居| 土默特右旗| 平阴县|