chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

Kubernetes Pod多網(wǎng)卡方案MULTUS

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2022-06-22 10:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在 Kubernetes中,網(wǎng)絡是非常重要的一個領域。Kubernetes 本身不提供網(wǎng)絡解決方案,但是提供了 CN I規(guī)范。這些規(guī)范被許多 CNI 插件(例如 WeaveNet,F(xiàn)lannel,Calico 等)遵守。這些插件中任何一個都可以在集群上使用和部署以提供網(wǎng)絡解決方案。該網(wǎng)絡稱為集群的默認網(wǎng)絡。此默認網(wǎng)絡使 Pods 不僅可以在同一節(jié)點上而且可以在群集中的各個節(jié)點之間相互通信

隨著發(fā)展,Kubernetes 缺乏支持 VNF 中多個網(wǎng)絡接口的所需功能。傳統(tǒng)上,網(wǎng)絡功能使用多個網(wǎng)絡接口分離控制,管理和控制用戶/數(shù)據(jù)的網(wǎng)絡平面。他們還用于支持不同的協(xié)議,滿足不同的調(diào)整和配置要求。

為了解決這個需求,英特爾實現(xiàn)了 MULTUS 的 CNI 插件,其中提供了將多個接口添加到 Pod 的功能。這允許 POD 通過不同的接口連接到多個網(wǎng)絡,并且每個接口都將使用其自己的 CNI 插件。

下面是 Multus CNI 提供的連接到 Pod 的網(wǎng)絡接口的圖示。該圖顯示了具有三個接口的容器:eth0net0net1eth0連接 Kubernetes 集群網(wǎng)絡以連接kubernetes服務器/服務(例如 Kubernetes api-server,kubelet 等)。net0net1是其他網(wǎng)絡附件,并通過使用其他 CNI 插件(例如vlan / vxlan / ptp)連接到其他網(wǎng)絡。

2f234896-f167-11ec-ba43-dac502259ad0.jpg

MULTUS 工作原理

Kubernetes 當前沒有提供為POD添加額外的接口選項的規(guī)定,或支持多個 CNI 插件同時工作的規(guī)定,但是它確實提供了一種由 API 服務器擴展受支持的API的機制。使用 "自定義資源定義" 可以做到這一點。MULTUS依賴于 "自定義資源定義" 來存儲其他接口和CNI插件所需的信息。

2f33682a-f167-11ec-ba43-dac502259ad0.jpg

我們首先需要確保將 MULTUS 二進制文件放置在 /opt/cni/bin 位置的所有節(jié)點上,并在/etc/cni/net.d位置創(chuàng)建一個新的配置文件。與 MULTUS 使用的 kubeconfig 文件一起使用。

/etc/cni/net.d中創(chuàng)建的新配置文件基于集群中已經(jīng)存在的默認網(wǎng)絡配置。

在此之后,CRD 用于定義新的種類名稱 "NetworkAttachmentDefinition",以及服務帳戶和 MULTUS 的集群角色以及相應的綁定。這個新的集群角色將提供對隨 CRD 添加的新 API 組以及默認 API 組中 Pod 資源的訪問權(quán)限。

然后創(chuàng)建類型為 "NetworkAttachmentDefinition" 的客戶資源實例,該實例稍后將在創(chuàng)建具有多個接口的 Pod 時使用。

部署示例

在本文中,我們將多次提及兩件事:

  • "默認網(wǎng)絡" - 這是您的Pod到Pod網(wǎng)絡。這就是集群中 Pod 之間相互通信的方式,以及它們之間的連通性。一般而言,這被稱為名為 eth0 的接口。此接口始終連接到您的 Pod,以便它們之間可以相互連接。除此之外,我們還將添加接口。
  • “ CRD” - 自定義資源定義。自定義資源是擴展 Kubernetes API 的一種方式。我們在這里使用這些存儲 Multus 可以讀取的一些信息。首先,我們使用它們來存儲附加到您的 Pod 的每個其他接口的配置。

目前支持 Kubernetes 1.16+ 版本。

安裝

我們建議的用于部署 Multus 的快速入門方法是使用 Daemonset(在群集中的每個節(jié)點上運行 Pod 的方法)進行部署,該 Pod 會安裝 Multus 二進制文件并配置 Multus 以供使用。

首先,克隆此 GitHub 存儲庫。

$gitclonehttps://github.com/intel/multus-cni.git&&cdmultus-cni

我們將在此存儲庫中使用帶有kubectl的YAML文件。

$cat./images/multus-daemonset.yml|kubectlapply-f-

Multus daemonset 完成了那些工作?

  • 啟動 Multus 守護程序集,這會在每個節(jié)點上運行一個pod,從而在/opt/cni/bin中的每個節(jié)點上放置一個 Multus 二進制文件
  • 按照字母順序讀取/etc/cni/net.d中的第一個配置文件,并為 Multus 創(chuàng)建一個新的配置文件,即/etc/cni/net.d/00-multus.conf,此配置是自動生成并基于默認網(wǎng)絡配置(假定是按字母順序排列的第一個配置)
  • 在每個節(jié)點上創(chuàng)建一個/etc/cni/net.d/multus.d目錄,其中包含用于 Multus 訪問 Kubernetes API 的身份驗證信息。

創(chuàng)建其他接口

我們要做的第一件事是為我們附加到Pod的每個其他接口創(chuàng)建配置。我們將通過創(chuàng)建自定義資源來做到這一點??焖偃腴T安裝的一部分會創(chuàng)建一個 "CRD" (自定義資源定義,它是我們保留這些自定義資源的位置),我們將在其中存儲每個接口的配置。

CNI 配置

我們將添加的每個配置都是CNI配置。如果您不熟悉它們,讓我們快速分解它們。這是一個示例CNI配置:

{
"cniVersion":"0.3.0",
"type":"loopback",
"additional":"information"
}

CNI配置是 JSON,我們這里有一個結(jié)構(gòu),其中包含一些我們感興趣的東西:

  • cniVersion:告訴每個 CNI 插件正在使用哪個版本,如果使用的版本太晚(或太早),則可以提供插件信息。
  • type:告訴 CNI 在磁盤上調(diào)用哪個二進制文件。每個 CNI 插件都是一個二進制文件。通常,這些二進制文件存儲在每個節(jié)點上的/opt/cni/bin中,并且 CNI 執(zhí)行此二進制文件。在這種情況下,我們指定了loopback二進制文件(它將創(chuàng)建一個loopback類型的網(wǎng)絡接口)。如果這是您首次安裝 Multus,則可能需要驗證 "type" 字段中的插件是否確實在/opt/cni/bin目錄中。
  • additional:此字段以此處為例,每個 CNI 插件都可以在JSON中指定所需的任何配置參數(shù)。這些特定于您在 "type" 字段中調(diào)用的二進制文件。

當 CNI 配置更改時,您不需要重新加載或刷新 Kubelets。每次創(chuàng)建和刪除 Pod 時都會讀取這些內(nèi)容。因此,如果您更改配置,它將在下一次創(chuàng)建 Pod 時應用。如果現(xiàn)有 Pod 需要新配置,則可能需要重新啟動。

將配置存儲為自定義資源

因此,我們要創(chuàng)建一個附加接口。讓我們創(chuàng)建一個 macvlan 接口供 Pod 使用。我們將創(chuàng)建一個自定義資源,該資源定義接口的 CNI 配置。

請注意,在以下命令中有一種:NetworkAttachmentDefinition。這是我們配置的名字-它是 Kubernetes 的自定義擴展,定義了我們?nèi)绾螌⒕W(wǎng)絡連接到 Pod。

其次,注意配置字段。您將看到這是一個 CNI 配置,就像我們前面解釋的那樣。

最后但非常重要的一點是,在元數(shù)據(jù)下注意 name 字段-在這里我們?yōu)樵撆渲弥付Q,這是我們告訴 pod 使用此配置的方式。這里的名稱是macvlan-conf-我們正在為 macvlan 創(chuàng)建配置。

這是創(chuàng)建此示例配置的命令:

apiVersion:"k8s.cni.cncf.io/v1"
kind:NetworkAttachmentDefinition
metadata:
name:macvlan-conf
spec:
config:'{
"cniVersion":"0.3.0",
"type":"macvlan",
"master":"eth0",
"mode":"bridge",
"ipam":{
"type":"host-local",
"subnet":"192.168.1.0/24",
"rangeStart":"192.168.1.200",
"rangeEnd":"192.168.1.216",
"routes":[
{"dst":"0.0.0.0/0"}
],
"gateway":"192.168.1.1"
}
}'

本示例使用 eth0 作為主參數(shù),此主參數(shù)應與集群中主機上的接口名稱匹配。

您可以查看使用 kubectl 創(chuàng)建的配置,方法如下:

$kubectlgetnetwork-attachment-definitions

您可以通過描述它們來獲得更多詳細信息:

$kubectldescribenetwork-attachment-definitionsmacvlan-conf

創(chuàng)建一個附加附加接口的Pod

我們將創(chuàng)建一個 pod。就像您之前可能創(chuàng)建的任何pod一樣,它看起來都很熟悉,但是,我們將有一個特殊的注釋字段-在這種情況下,我們將有一個名為k8s.v1.cni.cncf.io/networks的注釋。如上創(chuàng)建的,該字段以逗號分隔的列表列出了 NetworkAttachmentDefinitions 的名稱。請注意,在下面的命令中,我們具有 k8s.v1.cni.cncf.io/networks 的注釋:macvlan-conf其中macvlan-conf是我們在創(chuàng)建配置時使用的名稱。

讓我們繼續(xù)使用以下命令創(chuàng)建一個 pod:

apiVersion:v1
kind:Pod
metadata:
name:samplepod
annotations:
k8s.v1.cni.cncf.io/networks:macvlan-conf
spec:
containers:
-name:samplepod
command:["/bin/ash","-c","trap:TERMINT;sleepinfinity&wait"]
image:alpine

您現(xiàn)在可以檢查Pod并查看連接了哪些接口,如下所示:

$kubectlexec-itsamplepod--ipa

您應該看到,有 3 個接口:

  • lo環(huán)回接口
  • eth0我們的默認網(wǎng)絡
  • net1是我們使用macvlan配置創(chuàng)建的新接口

網(wǎng)絡狀態(tài) Annotations

為了確認,請使用kubectl describe pod pod samplepod,然后會有一個注釋部分,類似于以下內(nèi)容:

Annotations:k8s.v1.cni.cncf.io/networks:macvlan-conf
k8s.v1.cni.cncf.io/networks-status:
[{
"name":"cbr0",
"ips":[
"10.244.1.73"
],
"default":true,
"dns":{}
},{
"name":"macvlan-conf",
"interface":"net1",
"ips":[
"192.168.1.205"
],
"mac":"869655:0d",
"dns":{}
}]

該元數(shù)據(jù)告訴我們,我們有兩個成功運行的 CNI 插件。

如果我想要更多接口怎么辦?

您可以通過創(chuàng)建更多的自定義資源,然后在pod的注釋中引用它們,來向pod添加更多接口。您還可以重復使用配置,例如,要將兩個 macvlan 接口附加到 Pod,可以創(chuàng)建如下 Pod:

apiVersion:v1
kind:Pod
metadata:
name:samplepod
annotations:
k8s.v1.cni.cncf.io/networks:macvlan-conf,macvlan-conf
spec:
containers:
-name:samplepod
command:["/bin/ash","-c","trap:TERMINT;sleepinfinity&wait"]
image:alpine

請注意,注釋現(xiàn)在讀取為k8s.v1.cni.cncf.io/networks:macvlan-conf,macvlan-conf。如果我們有兩次使用相同的配置,并用逗號分隔。


審核編輯 :李倩


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

原文標題:Kubernetes Pod 多網(wǎng)卡方案 Multus

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用NVIDIA Grove簡化Kubernetes上的復雜AI推理

    過去幾年,AI 推理的部署已經(jīng)從單一模型、單一 Pod 演變?yōu)閺碗s的多組件系統(tǒng)。如今,一個模型部署可能包含多個不同的組件——預填充 (prefill)、解碼 (decode)、視覺編碼
    的頭像 發(fā)表于 11-14 10:25 ?4756次閱讀
    使用NVIDIA Grove簡化<b class='flag-5'>Kubernetes</b>上的復雜AI推理

    香港服務器支持Docker和Kubernetes嗎?

    在云原生技術(shù)成為主流的今天,Docker和Kubernetes(K8s)已成為現(xiàn)代化應用開發(fā)和部署的事實標準。對于選擇香港服務器的開發(fā)者與企業(yè)而言,一個核心問題是:香港服務器能否完美支持Docker
    的頭像 發(fā)表于 10-21 15:47 ?345次閱讀

    網(wǎng)融合時代:4G/Wi-Fi/以太網(wǎng)/虛擬網(wǎng)卡配置實戰(zhàn)!

    在物聯(lián)網(wǎng)與邊緣計算快速發(fā)展的今天,掌握多種網(wǎng)絡接口的配置至關重要。本文以實戰(zhàn)為導向,詳解4G、Wi-Fi、以太網(wǎng)和虛擬網(wǎng)卡的接入與協(xié)同策略。 網(wǎng)絡適配器,它的一個更廣為人知的名字是——網(wǎng)卡。 ? 在
    的頭像 發(fā)表于 10-09 18:25 ?121次閱讀
    <b class='flag-5'>多</b>網(wǎng)融合時代:4G/Wi-Fi/以太網(wǎng)/虛擬<b class='flag-5'>網(wǎng)卡</b>配置實戰(zhàn)!

    生產(chǎn)環(huán)境中Kubernetes容器安全的最佳實踐

    隨著容器化技術(shù)的快速發(fā)展,Kubernetes已成為企業(yè)級容器編排的首選平臺。然而,在享受Kubernetes帶來的便利性和可擴展性的同時,安全問題也日益凸顯。本文將從運維工程師的角度,深入探討生產(chǎn)環(huán)境中Kubernetes容器
    的頭像 發(fā)表于 07-14 11:09 ?465次閱讀

    詳解Kubernetes中的Pod調(diào)度親和性

    Kubernetes(K8s)中,Pod 調(diào)度親和性(Affinity) 是一種高級調(diào)度策略,用于控制 Pod 與節(jié)點(Node)或其他 Pod 之間的關聯(lián)(親和)或反關聯(lián)(反親和
    的頭像 發(fā)表于 06-07 13:56 ?700次閱讀

    Kubernetes Helm入門指南

    Helm 是 Kubernetes 的包管理工具,它允許開發(fā)者和系統(tǒng)管理員通過定義、打包和部署應用程序來簡化 Kubernetes 應用的管理工作。Helm 的出現(xiàn)是為了解決在 Kubernetes
    的頭像 發(fā)表于 04-30 13:42 ?2883次閱讀
    <b class='flag-5'>Kubernetes</b> Helm入門指南

    Kubernetes負載均衡器MetalLB介紹

    Kubernetes中一個應用服務會有一個或多個實例,每個實例(Pod)的IP地址由網(wǎng)絡插件動態(tài)隨機分配(Pod重啟后IP地址會改變)。為屏蔽這些后端實例的動態(tài)變化和對實例的負載均衡
    的頭像 發(fā)表于 03-18 16:24 ?705次閱讀
    <b class='flag-5'>Kubernetes</b>負載均衡器MetalLB介紹

    Kubernetes中部署MySQL集群

    一般情況下 Kubernetes 可以通過 ReplicaSet 以一個 Pod 模板創(chuàng)建多個 pod 副本,但是它們都是無狀態(tài)的,任何時候它們都可以被一個全新的 pod 替換。
    的頭像 發(fā)表于 03-18 16:22 ?598次閱讀
    <b class='flag-5'>Kubernetes</b>中部署MySQL集群

    Kubernetes包管理工具Helm的安裝和使用

    Helm 可以幫助我們管理 Kubernetes 應用程序 - Helm Charts 可以定義、安裝和升級復雜的 Kubernetes 應用程序,Charts 包很容易創(chuàng)建、版本管理、分享和分布。
    的頭像 發(fā)表于 03-13 16:06 ?1907次閱讀

    Kubernetes Pod常用管理命令詳解

    Kubernetes Pod常用管理命令詳解
    的頭像 發(fā)表于 02-17 14:06 ?966次閱讀
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>常用管理命令詳解

    徹底移除Calico網(wǎng)絡插件

    的CNI接口來允許插件的接入,所以它又稱之為CNI網(wǎng)絡插件。 為了解決跨主機容器間通信問題,市面上存在很多解決方案,為了兼容和規(guī)范這些解決方案,Kubernetes僅設計了網(wǎng)絡模型,卻將Pod
    的頭像 發(fā)表于 01-23 17:26 ?1776次閱讀
    徹底移除Calico網(wǎng)絡插件

    Kubernetes:構(gòu)建高效的容器化應用平臺

    init初始化集群,按照提示配置kubeconfig文件,它包含集群連接信息。從節(jié)點通過kubeadm join命令加入集群。 PodKubernetes 中最小的可部署單元,一個 Pod 可以包含一
    的頭像 發(fā)表于 01-23 15:22 ?562次閱讀

    使用 Flexus 云服務器 X 實例部署 Kubernetes 圖形化管理平臺

    Kubernetes 作為當今最流行的容器編排平臺,隨著云計算、微服務架構(gòu)和 DevOps 文化的普及,Kubernetes 在自動化部署、擴展和管理容器化應用程序方面扮演著越來越重要的角色。未來
    的頭像 發(fā)表于 01-21 16:14 ?546次閱讀
    使用 Flexus 云服務器 X 實例部署 <b class='flag-5'>Kubernetes</b> 圖形化管理平臺

    Kubernetes的CNI網(wǎng)絡插件之flannel

    Kubernetes設計了網(wǎng)絡模型,但卻將它的實現(xiàn)講給了網(wǎng)絡插件,CNI網(wǎng)絡插件最重要的功能就是實現(xiàn)Pod資源能夠跨主機通信。
    的頭像 發(fā)表于 01-02 09:43 ?1185次閱讀

    艾體寶與Kubernetes原生數(shù)據(jù)平臺AppsCode達成合作

    虹科姐妹公司艾體寶宣布與Kubernetes 原生數(shù)據(jù)平臺 AppsCode達成正式合作,致力于將其核心產(chǎn)品KubeDB引入中國市場,為企業(yè)提供專業(yè)、高效的云原生數(shù)據(jù)庫管理解決方案
    的頭像 發(fā)表于 12-16 15:07 ?880次閱讀