色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

各種網(wǎng)絡(luò)組件在 Kubernetes 集群中是如何交互的

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2023-05-23 09:49 ? 次閱讀

Kubernetes 網(wǎng)絡(luò)模型的核心要求之一是每個(gè) Pod 都擁有自己的 IP 地址并可以使用該 IP 地址進(jìn)行通信。很多人剛開(kāi)始使用 Kubernetes 時(shí),還不清楚如何為每個(gè) Pod 分配 IP 地址。他們了解各種組件如何獨(dú)立工作,但不清楚這些組件如何組合在一起使用。例如,他們了解什么是 CNI 插件,但是不知道它們是如何被調(diào)用的。本文就介紹了各種網(wǎng)絡(luò)組件在 Kubernetes 集群中是如何交互的,以及如何幫助每個(gè) Pod 都獲取 IP 地址。

在 Kubernetes 中有多種網(wǎng)絡(luò)設(shè)置方法,以及 container runtime 的各種選項(xiàng)。這篇文章將使用 Flannel 作為network provider,并使用 Containered 作為 container runtime。

背景概念

容器網(wǎng)絡(luò) 同一主機(jī)上的容器 在同一主機(jī)上運(yùn)行的容器通過(guò) IP 地址相互通信的方法之一是使用 Linux Bridge,即在 Kubernetes(和 Docker)世界中,創(chuàng)建 veth(虛擬以太網(wǎng))設(shè)備。該 veth 設(shè)備的一端連接在容器網(wǎng)絡(luò)命名空間,另一端連接到主機(jī)網(wǎng)絡(luò)上的 Linux Bridge。同一主機(jī)上的所有容器都將這 veth pair 的一端連接到 Linux Bridge,它們可以通過(guò) Bridge 使用 IP 地址相互通信。Linux Bridge 也被分配了一個(gè) IP 地址,它充當(dāng)從目的地到不同節(jié)點(diǎn)的 Pod 流出流量的網(wǎng)關(guān)。

2c0686b0-f8f4-11ed-90ce-dac502259ad0.png

不同主機(jī)上的容器 在不同主機(jī)上運(yùn)行的容器可以通過(guò)其 IP 地址相互通信的方式之一是使用數(shù)據(jù)包封裝(packet encapsulation)。Flannel 通過(guò) vxlan 使用該功能,vxlan 將原始數(shù)據(jù)包封裝在 UDP 數(shù)據(jù)包中并將其發(fā)送到目的地。 在 Kubernetes 集群中,F(xiàn)lannel 會(huì)在每個(gè)節(jié)點(diǎn)上創(chuàng)建一個(gè) vxlan 設(shè)備和一些路由表。每個(gè)發(fā)往不同主機(jī)上的容器的數(shù)據(jù)包都會(huì)通過(guò) vxlan 設(shè)備,并封裝在 UDP 數(shù)據(jù)包中。在目標(biāo)位置,它會(huì)提取封裝的數(shù)據(jù)包,然后將數(shù)據(jù)包路由到目的地 Pod。

2c357808-f8f4-11ed-90ce-dac502259ad0.png

注意:這只是配置容器之間網(wǎng)絡(luò)的方法之一。

CRI CRI(容器運(yùn)行時(shí)接口)是一個(gè)插件接口,允許 kubelet 使用不同的 container runtimes。各種 container runtimes 都實(shí)現(xiàn)了 CRI API,這使用戶可以在 Kubernetes 安裝中使用他們想要的 container runtimes。 CNI

CNI(容器網(wǎng)絡(luò)接口)項(xiàng)目包含一個(gè)為 Linux 容器提供基于通用插件網(wǎng)絡(luò)解決方案的規(guī)則。它由各種插件組成,這些插件在配置 Pod 網(wǎng)絡(luò)時(shí)執(zhí)行不同的功能。CNI 插件是遵循 CNI 規(guī)范的可執(zhí)行文件。

為節(jié)點(diǎn)子網(wǎng)分配 Pod IP 地址

如果要求所有 Pod 具有 IP 地址,那么就要確保整個(gè)集群中的所有 Pod 的 IP 地址是唯一的。這可以通過(guò)為每個(gè)節(jié)點(diǎn)分配一個(gè)唯一的子網(wǎng)來(lái)實(shí)現(xiàn),即從子網(wǎng)中為 Pod 分配節(jié)點(diǎn) IP 地址。

節(jié)點(diǎn) IPAM 控制器 當(dāng)nodeipam傳遞給 kube-controller-manager 的--controllers命令行標(biāo)志時(shí),它將為每個(gè)節(jié)點(diǎn)分配來(lái)自集群 CIDR(集群網(wǎng)絡(luò)的 IP 范圍)的專用子網(wǎng)(podCIDR)。由于這些 podCIDR 是不相交的子網(wǎng),因此它可以為每個(gè) Pod 分配唯一的 IP 地址。 當(dāng) Kubernetes 節(jié)點(diǎn)首次在集群上注冊(cè)時(shí),會(huì)被分配一個(gè) podCIDR。要更改分配給集群中節(jié)點(diǎn)的 podCIDR,需要先注銷節(jié)點(diǎn),然后使用應(yīng)用于 Kubernetes 控制平面的任何配置更改來(lái)重新注冊(cè)節(jié)點(diǎn)。podCIDR可以使用以下命令列出節(jié)點(diǎn)的名稱:

2c4821b0-f8f4-11ed-90ce-dac502259ad0.jpg

Kubelet、Container Runtime 和 CNI 插件交互

當(dāng)在節(jié)點(diǎn)上調(diào)度 Pod 時(shí),一啟動(dòng) Pod 就會(huì)發(fā)生很多事情。這里我們僅關(guān)注與 Pod 配置網(wǎng)絡(luò)有關(guān)的動(dòng)態(tài)。一旦在節(jié)點(diǎn)上調(diào)度了 Pod,將配置網(wǎng)絡(luò)并啟動(dòng)應(yīng)用程序容器。

2c644732-f8f4-11ed-90ce-dac502259ad0.png

參考:容器式 cri 插件架構(gòu) Container Runtime 與 CNI 插件的交互 每個(gè) network provider 都有一個(gè) CNI 插件,container runtime 會(huì)調(diào)用該插件,在 Pod 啟動(dòng)時(shí)配置網(wǎng)絡(luò)。使用容器化作為 container runtime,容器化 CRI 插件將調(diào)用 CNI 插件。每個(gè) network provider 都在每個(gè) Kubernetes 節(jié)點(diǎn)上安裝了一個(gè)代理,以配置 Pod 網(wǎng)絡(luò)。安裝 network provider agent 后,它會(huì)隨 CNI 一起配置或者在節(jié)點(diǎn)上創(chuàng)建,CRI 插件會(huì)使用它來(lái)確定要調(diào)用哪個(gè) CNI 插件。 CNI 配置文件的位置是可配置的,默認(rèn)值為/etc/cni/net.d/。集群管理員需要在每個(gè)節(jié)點(diǎn)上交付 CNI 插件。CNI 插件的位置也是可配置的,默認(rèn)值為/opt/cni/bin。 如果使用 containerd 作為 container runtime,則可以在 containerd config 部分下[plugins."io.containerd.grpc.v1.cri".cni]指定 CNI 配置和 CNI 插件的路徑。 本文中我們將 Flannel 作為 network provider,這里簡(jiǎn)單介紹一下 Flannel 的設(shè)置。Flanneld 是 Flannel 守護(hù)程序,通常 install-cni 作為帶有初始化容器的守護(hù)程序安裝在 Kubernetes 集群上。install-cni 容器創(chuàng)建 CNI 配置文件在每個(gè)節(jié)點(diǎn)上/etc/cni/net.d/10-flannel.conflist。Flanneld 創(chuàng)建一個(gè) vxlan 設(shè)備,從 apiserver 獲取網(wǎng)絡(luò)元數(shù)據(jù),并監(jiān)控 Pod 上的更新。創(chuàng)建 Pod 時(shí),它將在整個(gè)集群中為所有 Pod 分配路由,這些路由允許 Pod 通過(guò) IP 地址相互連接。 Containerd CRI 插件和 CNI 插件之間的交互可以如下所示:

2c98faa4-f8f4-11ed-90ce-dac502259ad0.png

如上所述,kubelet 調(diào)用 Containered CRI 插件創(chuàng)建容器,再調(diào)用 CNI 插件為容器配置網(wǎng)絡(luò)。Network provider CNI 插件調(diào)用其他基本 CNI 插件來(lái)配置網(wǎng)絡(luò)。CNI 插件之間的交互如下所述。 CNI 插件之間的交互 有多種 CNI 插件可幫助配置主機(jī)上容器之間的網(wǎng)絡(luò),本文主要討論以下 3 個(gè)插件。 Flannel CNI 插件 當(dāng)使用 Flannel 作為network provider時(shí),Containered CRI 插件使用 CNI 配置文件,調(diào)用 Flannel CNI 插件:/etc/cni/net.d/10-flannel.conflist。

2cb58480-f8f4-11ed-90ce-dac502259ad0.jpg

Fannel CNI 插件與 Flanneld 結(jié)合使用,當(dāng) Flanneld 啟動(dòng)時(shí),它將從 apiserver 中獲取 podCIDR和其他與網(wǎng)絡(luò)相關(guān)的詳細(xì)信息,并將它們存儲(chǔ)在文件中/run/flannel/subnet.env。

2cd00404-f8f4-11ed-90ce-dac502259ad0.jpg

Flannel CNI 插件使用/run/flannel/subnet.env的信息來(lái)配置和調(diào)用 Bridge CNI 插件。 Bridge CNI 插件 Flannel CNI 插件使用以下配置調(diào)用 Bridge CNI 插件:

2cdb8fae-f8f4-11ed-90ce-dac502259ad0.jpg

當(dāng) Bridge CNI 插件第一次調(diào)用時(shí),它會(huì)創(chuàng)建一個(gè) Linux Bridge"name": "cni0"在配置文件中,然后為每個(gè) Pod 創(chuàng)建 veth pair,其一端在容器的網(wǎng)絡(luò)命名空間中,另一端連接到主機(jī)網(wǎng)絡(luò)上的 Linux Bridge。使用 Bridge CNI 插件,主機(jī)上的所有容器都連接到主機(jī)網(wǎng)絡(luò)上的 Linux Bridge。 配置完 veth pair 后,Bridge 插件將調(diào)用主機(jī)本地 IPAM CNI 插件。我們可以在 CNI config 中配置要使用的 IPAM 插件,CRI 插件用于調(diào)用 Flannel CNI插件。 主機(jī)本地 IPAM CNI 插件 Bridge CNI 插件使用以下配置調(diào)用主機(jī)本地 IPAM CNI 插件:

2cf1609a-f8f4-11ed-90ce-dac502259ad0.jpg

主機(jī)本地 IPAM(IP 地址管理)插件從中返回容器的 IP 地址,subnet將分配的 IP 本地存儲(chǔ)在主機(jī)下dataDir指定的目錄中 /var/lib/cni/networks// /var/lib/cni/networks//文件包含 IP 分配到的容器 ID。 調(diào)用時(shí),主機(jī)本地 IPAM 插件返回以下有效負(fù)載: 2d136866-f8f4-11ed-90ce-dac502259ad0.jpg

總結(jié)

Kube-controller-manager 為每個(gè)節(jié)點(diǎn)分配一個(gè) podCIDR。從 podCIDR 中的子網(wǎng)值為節(jié)點(diǎn)上的 Pod 分配了 IP 地址。由于所有節(jié)點(diǎn)上的 podCIDR 是不相交的子網(wǎng),因此它允許為每個(gè) pod 分配唯一的IP地址。

Kubernetes 集群管理員可配置和安裝 kubelet、container runtime、network provider,并在每個(gè)節(jié)點(diǎn)上分發(fā) CNI 插件。Network provider agent 啟動(dòng)時(shí),將生成 CNI 配置。在節(jié)點(diǎn)上調(diào)度 Pod 后,kubelet 會(huì)調(diào)用 CRI 插件來(lái)創(chuàng)建 Pod。在容器情況下,容器的 CRI 插件調(diào)用 CNI 配置中指定的 CNI 插件來(lái)配置 Pod 網(wǎng)絡(luò)。所有這些都會(huì)影響 Pod 獲取 IP地址。

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

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209326
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    495

    瀏覽量

    22060
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    224

    瀏覽量

    8712

原文標(biāo)題:Kubernetes Pod 是如何獲取 IP 地址的?

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    阿里云上Kubernetes集群聯(lián)邦

    規(guī)模的上限等等。Federation集群聯(lián)邦可以一定程度上解決這些問(wèn)題。Federation是可以將分布多個(gè)Region或者多個(gè)云廠商的Kubernetes集群整合成一個(gè)大的
    發(fā)表于 03-12 17:10

    kubernetes集群配置

    基于v1104版本手動(dòng)搭建高可用kubernetes 集群
    發(fā)表于 08-19 08:07

    Kubernetes 從懵圈到熟練:集群服務(wù)的三個(gè)要點(diǎn)和一種實(shí)現(xiàn)

    通信員。熟悉服務(wù)網(wǎng)格的同學(xué)肯定對(duì)這個(gè)很熟悉了。但是可能比較少人注意到,其實(shí) Kubernetes 集群原始服務(wù)的實(shí)現(xiàn),也是基于 Sidecar 模式的。 Kubernetes
    發(fā)表于 09-24 15:35

    請(qǐng)問(wèn)鴻蒙系統(tǒng)上可以部署kubernetes集群嗎?

    鴻蒙系統(tǒng)上可以部署kubernetes集群
    發(fā)表于 06-08 11:16

    如何部署基于Mesos的Kubernetes集群

    的內(nèi)核。把Kubernetes運(yùn)行在Mesos集群之上,可以和其他的框架共享集群資源,提高集群資源的利用率。 本文是Kubernetes和M
    發(fā)表于 10-09 18:04 ?0次下載
    如何部署基于Mesos的<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    淺談Kubernetes集群的高可用方案

    還應(yīng)包含以下兩個(gè)層面的考慮:etcd數(shù)據(jù)存儲(chǔ)的高可用性和Kubernetes Master組件的高可用性。本文節(jié)選自龔正等所著的《kubernetes權(quán)威指南》。 1.etcd高可用性方案 etcd
    發(fā)表于 10-11 10:04 ?1次下載
    淺談<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>的高可用方案

    Kubernetes集群發(fā)生網(wǎng)絡(luò)異常時(shí)如何排查

    本文將引入一個(gè)思路:“ Kubernetes 集群發(fā)生網(wǎng)絡(luò)異常時(shí)如何排查”。文章將引入 Kubernetes
    的頭像 發(fā)表于 09-02 09:45 ?4781次閱讀

    Kubernetes集群內(nèi)服務(wù)通信機(jī)制介紹

    現(xiàn)在在 Kubernetes 集群,我們擁有構(gòu)成集群管理組件和一組工作機(jī)器(稱為節(jié)點(diǎn))的控制平面。這些節(jié)點(diǎn)托管 Pod,這些 Pod 將后
    發(fā)表于 10-04 10:13 ?548次閱讀

    Kubernetes集群的關(guān)閉與重啟

    日常對(duì) Kubernetes 集群運(yùn)行維護(hù)的過(guò)程,您可能需要臨時(shí)的關(guān)閉或者是重啟 Kubernetes
    的頭像 發(fā)表于 11-07 09:50 ?9921次閱讀

    Kubernetes集群部署

    Kubeadm是一種Kubernetes集群部署工具,通過(guò)kubeadm init命令創(chuàng)建master節(jié)點(diǎn),通過(guò) kubeadm join命令把node節(jié)點(diǎn)加入到集群
    的頭像 發(fā)表于 02-15 10:35 ?1721次閱讀

    Kubernetes的邏輯組件

    Kubernetes是生產(chǎn)級(jí)別的容器編排系統(tǒng),其物理集群有Master和Node兩種類型的節(jié)點(diǎn)
    的頭像 發(fā)表于 02-15 10:46 ?1230次閱讀
    <b class='flag-5'>Kubernetes</b><b class='flag-5'>中</b>的邏輯<b class='flag-5'>組件</b>

    Kubernetes Pod如何獨(dú)立工作

    在學(xué)習(xí) Kubernetes 網(wǎng)絡(luò)模型的過(guò)程,了解各種網(wǎng)絡(luò)組件的作用以及如何
    的頭像 發(fā)表于 05-16 14:29 ?621次閱讀
    <b class='flag-5'>Kubernetes</b> Pod如何獨(dú)立工作

    Kubernetes集群如何選擇工作節(jié)點(diǎn)

    簡(jiǎn)要概述: 本文討論了Kubernetes集群中選擇較少數(shù)量的較大節(jié)點(diǎn)和選擇較多數(shù)量的較小節(jié)點(diǎn)之間的利弊。
    的頭像 發(fā)表于 08-28 15:46 ?624次閱讀
    <b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b><b class='flag-5'>中</b>如何選擇工作節(jié)點(diǎn)

    使用Jenkins和單個(gè)模板部署多個(gè)Kubernetes組件

    持續(xù)集成和部署,我們通常需要部署多個(gè)實(shí)例或組件Kubernetes集群。通過(guò)Jenkin
    的頭像 發(fā)表于 01-02 11:40 ?759次閱讀
    使用Jenkins和單個(gè)模板部署多個(gè)<b class='flag-5'>Kubernetes</b><b class='flag-5'>組件</b>

    使用Velero備份Kubernetes集群

    Velero 是 heptio 團(tuán)隊(duì)(被 VMWare 收購(gòu))開(kāi)源的 Kubernetes 集群備份、遷移工具。
    的頭像 發(fā)表于 08-05 15:43 ?348次閱讀
    使用Velero備份<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>
    主站蜘蛛池模板: 9亚洲欧洲免费无码在线| xiah俊秀| 色呦呦人人视频| 精品视频免费在线| SM脚奴调教丨踩踏贱奴| 吃春药后的女教师| 999人在线精品播放视频| 亚洲另类国产综合在线| 日韩毛片大全| 女人18毛片| 快穿做妓女好爽H| 精品久久久久中文字幕日本| 精品一区二区三区免费毛片 | 性夜夜春夜夜爽AA片A| 蜜桃久久久亚洲精品成人| 久99re视频9在线观看| 美女脱精光让男生桶下面| 日本wwwxx| 伊人久久亚洲精品一区| 色多多旧版污污破解版| 97在线免费观看视频| a级老头和老太xxxx| 国产精品美女久久久久AV超清| xxxjapanese丰满奶水| 国产三级在线免费观看| PORN白嫩内射合集| 欧美97色伦综合网| 久久伊人青青| 色吧最新网址| 中国农村真实bbwbbwbbw| 亚洲永久精品AV在线观看| 亚洲AV无码久久流水呻蜜桃久色 | 久久天堂网| 久久久久久久电影| 麻豆成人AV久久无码精品| 玛雅成人网| 无限资源在线观看播放| 无限资源日本2019版| 97在线精品视频免费| 国语大学生自产拍在线观看| 国产三级视频在线|