日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面

發(fā)布時間:2025/3/20 81 豆豆
生活随笔 收集整理的這篇文章主要介紹了 与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:若禾、昱晟、瑜佳

記者: 各位阿里巴巴云原生的讀者朋友們大家好,歡迎再次來到探究身世之謎系列專訪欄目,今天邀請來的還是大家的老朋友,『阿里云容器服務(wù) ACK 發(fā)行版』,上次的訪談中它為我們介紹了阿里巴巴開源集群鏡像技術(shù) sealer,以及它們是如何相互配合來達成阿里云 ACK 服務(wù)的快速穩(wěn)定交付。錯過的讀者不要忘記去回顧一下哦~那么這次做客,它又會為我們介紹哪位小伙伴呢?

阿里云容器服務(wù) ACK 發(fā)行版(簡稱 ACK Distro) :大家好,我們又見面了!相信經(jīng)過上次的自我介紹,你們對我已經(jīng)有了大概的了解,這次就不多贅述了。本次采訪我將繼續(xù)為大家詳細講解我的好伙伴:阿里巴巴的開源 Kubernetes 容器網(wǎng)絡(luò)解決方案 hybridnet,以及我是如何借助它來構(gòu)建混合云統(tǒng)一網(wǎng)絡(luò)平面。

記者: 好的,那您請先談一下 hybridnet 是什么以及項目組成員是出于怎樣的設(shè)計理念才誕生了 hybridnet。

hybridnet 的定義及其設(shè)計理念

ACK Distro: 好的,首先 hybridnet 是阿里巴巴開源的一款面向混合云場景的 Kubernetes 容器網(wǎng)絡(luò)解決方案。它可以幫助用戶在物理機和虛擬機的異構(gòu)環(huán)境之上,構(gòu)建一層 underlay + overlay 的統(tǒng)一網(wǎng)絡(luò)平面,并提供豐富的管控運維能力。同時為混合云場景下集群部署和應(yīng)用交付過程中出現(xiàn)的容器網(wǎng)絡(luò)部署及運維問題,提出了一種全新的解決思路。

它的基本設(shè)計準則是:

  • 為了確定統(tǒng)一網(wǎng)絡(luò)模型,降低認知與維護成本,并且保證穩(wěn)定的長期演進
  • 屏蔽底層異構(gòu)基礎(chǔ)設(shè)施,提升交付落地魯棒性,降低生產(chǎn)交付、PoC 成本
  • 在統(tǒng)一模型的約束下,既能提供 underlay 高性能直通網(wǎng)絡(luò)方案,來滿足網(wǎng)絡(luò)打通和性能的雙重需求,又能支持在某些性能不敏感的場景下提供 overlay 虛擬網(wǎng)絡(luò)方案
  • 盡量降低對于外部環(huán)境的依賴,保證數(shù)據(jù)面的簡單
  • 與 Kubernetes 深度集成,提供雙棧、IP 保持、IP 固定等高階 IPAM 能力,保證用戶上云后使用習(xí)慣不變
  • 不同于與單一 IaaS 廠商的公有云或?qū)S性频鬃壎ㄝ敵龅?terway、aws-cni 等容器網(wǎng)絡(luò)方案,項目組成員希望 hybridnet 能夠解決多云混合云場景下異構(gòu)底座帶來的一致性和適配性難題,在不同的基礎(chǔ)網(wǎng)絡(luò)環(huán)境上提供敏捷、通用和穩(wěn)定的交付能力,并且通過統(tǒng)一視角的模型約束和運維管控,解決復(fù)雜場景下的網(wǎng)絡(luò)規(guī)劃、管理及運維等問題。

    記者: 那我是不是可以這么理解,hybridnet 力求做到“underlay/overlay 混合部署” 和“underlay/overlay 統(tǒng)一管理運維”。

    ACK Distro: 是的沒錯,hybridnet 也確實做到了。我可以再拓展描述下,在一個使用了 hybridnet 的 Kubernetes 集群中,同一個節(jié)點上可以同時有 underlay 和 overlay的 Pod,所有 Pod 之間的集群內(nèi)部訪問行為完全一致不需要任何額外感知。這樣,用戶可以在“純 overlay 集群”、“純 underlay 集群”、“underlay 混合集群” 之間進行自由選擇和轉(zhuǎn)化,同時享受 underlay 網(wǎng)絡(luò)帶來的高性能和網(wǎng)絡(luò)直通能力,以及 overlay 網(wǎng)絡(luò)的資源無限和高適配性。而且在統(tǒng)一模型的約束下,underlay 網(wǎng)絡(luò)和 overlay 網(wǎng)絡(luò)在管理、運維上也保持了概念一致。

    記者: 除了它的設(shè)計理念,您可以用更直觀的方法讓讀者明白 hybridnet 可以做什么嗎?

    ACK Distro: 當然,我從介紹它的核心模型入手闡釋其功能屬性吧~為了使 hybridnet 的使用者可以通過初始化不同的核心模型來對基礎(chǔ)網(wǎng)絡(luò)環(huán)境進行靈活多樣地描述,讓容器網(wǎng)絡(luò)以不同的形態(tài)運行,項目組成員通過對經(jīng)典網(wǎng)絡(luò)中的概念進行抽象,引入了下面三個核心 CRD 模型來對網(wǎng)絡(luò)資源進行抽象和管理。

    hybridnet 的核心模型

    Network

    在 hybridnet 中,每個 Network 表示一個“調(diào)度域“,一個調(diào)度域表示一組具有相同網(wǎng)絡(luò)性質(zhì)的節(jié)點,Network 是環(huán)境拓撲信息傳入的主要入口。一個特定的 IP 可以在其所屬調(diào)度域內(nèi)的各個節(jié)點間自由遷移。

    Network 通過 nodeSelector 與節(jié)點相關(guān)聯(lián),對于一些特殊的 Network,比如 overlay 的 Network,nodeSelector 可能為空,這種 Network 的調(diào)度域為集群內(nèi)的所有節(jié)點。

    Subnet

    在 hybridnet 中,Subnet 表示一個調(diào)度域內(nèi)可以分配的 IP 資源,Subnet 是環(huán)境網(wǎng)絡(luò) IP 資源規(guī)劃信息傳入的主要入口。每個 Subnet 必須屬于一個 Network。Subnet 具有比較靈活的屬性:

    • 支持 cidr 可分配地址范圍的選擇,通過 spec.range.start 和 spec.range.end 可以從一個 cidr 中再精確地劃分出一個小的網(wǎng)段

    • 支持保留離散的 IP 地址不分配,當網(wǎng)段中已經(jīng)有 IP 地址被使用了的時候,可以通過將已經(jīng)被使用了的 IP 填寫入 spec.range.excludeIPs 的數(shù)組字段,hybridnet 將不會再將這些 IP 分配給 Pod

    • 支持保留指定的 IP 不被使用,當網(wǎng)段中需要保留某些 Pod 的 IP,僅被特定的 Pod 指定使用時,可以通過將這些 IP 填寫入 spec.range.reservedPs 的數(shù)組字段,hybridnet 將不會再把這些 IP 用于非指定 IP 的分配

    IPInstance

    IPInstance 目前只用作監(jiān)控,每個 IPInstance 代表一個實際已經(jīng)被分配出容器網(wǎng)絡(luò)的 IP。能夠通過 kubectl get IPInstance 看到其對應(yīng)的 Pod、所屬 Subnet、Pod 對應(yīng)的節(jié)點等等信息。

    記者:那么 hybridnet 的優(yōu)勢如何在您身上體現(xiàn)呢?換句話說,您怎樣管理 hybridnet 以達到最佳實踐呢?

    如何在 ACK Distro 中管理 hybridnet

    ACK Distro: 我通過操作上述的 CRD 模型來為大家進行網(wǎng)絡(luò)管理操作示例吧~其中,hybridnet 會作為我唯一內(nèi)置的網(wǎng)絡(luò)插件部署。(當然啦,通過 sealer 的能力,自定義第三方的網(wǎng)絡(luò)插件也是可行的,大家可以參考本系列第一篇文章。)

    默認行為

    作為我的固定行為,初始化一定會存在一個 overlay 的 Network,并且此時默認網(wǎng)絡(luò)類型是 overlay,通過下面命令可以查看此時的 Network 和 Subnet 信息:

    [root@iZf8zdygpbo4hx57g2wahaZ ~]# kubectl get network NAME NETID SWITCHID network-0 4 virtual-switch [root@iZf8zdygpbo4hx57g2wahaZ ~]# kubectl get subnet NAME VERSION CIDR START END GATEWAY TOTAL USED AVAILABLE NETID NETWORK subnet-0-network-0 4 100.64.0.0/16 100.64.0.1 65533 2 65531 network-0

    大家可以看到,用默認配置初始化的我會創(chuàng)建一個名叫 network-0 的 Network 和 subnet-0-network-0 的 Subnet,容器網(wǎng)段的 CIDR 為 100.64.0.0/16,此時新創(chuàng)建的 Pod 都會以 overlay 的方式拉起。

    因為我的基礎(chǔ)組件本身沒有特別的網(wǎng)絡(luò)訴求,這樣最大的好處是,overlay 網(wǎng)絡(luò)幫助我屏蔽了底層基礎(chǔ)網(wǎng)絡(luò)設(shè)施,換言之,我可以借助 hybridnet 以相同的配置在任何網(wǎng)絡(luò)環(huán)境中一鍵拉起,同時并不影響后續(xù)網(wǎng)絡(luò)擴展的可能性。

    從混合云環(huán)境的交付經(jīng)驗來看,這種方式能將網(wǎng)絡(luò)規(guī)劃(主要是 underlay 網(wǎng)絡(luò))延后到“運維”的階段,可以最小化“交付”階段的落地成本,提升部署效率。

    添加 underlay 網(wǎng)絡(luò)

    如果存在部分 underlay 網(wǎng)絡(luò)訴求(比如出于“overlay 性能瓶頸” 或者 “Pod IP 對外直接透出能力”的考慮),underlay Pod 占比較少,特別是您不希望占用基礎(chǔ)網(wǎng)絡(luò)環(huán)境中的 IP 資源時,可以選擇在默認行為創(chuàng)建的 overlay Network 之外,額外添加一個 underlay 的 Network 以及對應(yīng)的 Subnet。(新舊 overlay/underlay Network 在模型上沒有任何依賴順序關(guān)系)

    在這次示例的實驗環(huán)境中,節(jié)點網(wǎng)段為 192.168.56.0/24(所有節(jié)點在一個經(jīng)典二層網(wǎng)絡(luò)中),因為節(jié)點 IP 只用了 192.168.56.1、192.168.56.2、192.168.56.3、192.168.56.4,我們考慮將未被使用的 192.168.56.100~192.168.56.150 地址范圍留給容器使用,搭建一個最簡單的 underlay 網(wǎng)絡(luò)。這種情況我們只需要應(yīng)用如下 yaml:

    --- apiVersion: networking.alibaba.com/v1 kind: Network metadata:name: underlay-network1 spec:netID: 0nodeSelector:network: network1type: Underlay--- apiVersion: networking.alibaba.com/v1 kind: Subnet metadata:name: underlay-subnet1 spec:network: underlay-network1netID: 0range:version: "4"cidr: "192.168.56.0/24"gateway: "192.168.56.254"start: "192.168.56.100"end: "192.168.56.150"

    因為 Network 通過 nodeSelector 關(guān)聯(lián) Node,我們需要給想要部署 underlay Pod 的節(jié)點打上對應(yīng) Network nodeSelector 的標簽,這里我們只希望在節(jié)點 izf8zdygpbo4hx57g2wah8z 上有 underlay 類型的 Pod:

    kubectl label node izf8zdygpbo4hx57g2wah8z network=network1

    此時默認網(wǎng)絡(luò)類型仍然是 overlay 網(wǎng)絡(luò),創(chuàng)建 underlay 的 Pod 只需要簡單通過給 Pod 添加 networking.alibaba.com/network-type: Underlay 的 annotation 指定。效果如圖:

    [root@iZf8zdygpbo4hx57g2wahaZ ~]# kubectl get po -owide -n test NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES curl-deployment-1-5cfb5dcb8c-65fr7 1/1 Running 0 11m 100.64.0.29 izf8zdygpbo4hx57g2wahbz <none> <none> curl-deployment-1-5cfb5dcb8c-hp626 1/1 Running 0 11m 100.64.0.26 izf8zdygpbo4hx57g2wahbz <none> <none> curl-deployment-1-5cfb5dcb8c-qbr6w 1/1 Running 0 11m 100.64.0.27 izf8zdygpbo4hx57g2wah7z <none> <none> curl-deployment-1-5cfb5dcb8c-zclv2 1/1 Running 0 11m 100.64.0.31 izf8zdygpbo4hx57g2wahbz <none> <none> curl-deployment-1-5cfb5dcb8c-zfqkp 1/1 Running 0 11m 100.64.0.28 izf8zdygpbo4hx57g2wah7z <none> <none> curl-ss-0 1/1 Running 0 6m24s 192.168.56.140 izf8zdygpbo4hx57g2wah8z <none> <none> curl-ss-1 1/1 Running 0 6m5s 192.168.56.141 izf8zdygpbo4hx57g2wah8z <none> <none> curl-ss-2 1/1 Running 0 6m1s 192.168.56.142 izf8zdygpbo4hx57g2wah8z <none> <none>

    修改默認網(wǎng)絡(luò)類型為 underlay

    如果您 underlay 的網(wǎng)絡(luò)訴求占絕大多數(shù),希望默認創(chuàng)建出來的就是 overlay 的 Pod,也可以修改默認網(wǎng)絡(luò)類型為 underlay,修改完之后,默認會以 underlay 的網(wǎng)絡(luò)創(chuàng)建 Pod,并且仍然可以通過給 Pod 添加 annotation 的方式指定 Pod 以 overlay 的網(wǎng)絡(luò)被創(chuàng)建。已經(jīng)創(chuàng)建的 overlay Pod 不會受到影響。

    修改默認網(wǎng)絡(luò)類型需要分別 kubectl edit deploy hybridnet-webhook -n kube-system 和 kubectl edit deploy hybridnet-manager -n kube-system,修改容器啟動的 DEFAULT_NETWORK_TYPE 環(huán)境變量為 Underlay:

    spec:containers:- name: hybridnet-[manager|webhook] command:- /hybridnet/hybridnet-[manager|webhook]env:- name: DEFAULT_NETWORK_TYPE# "Overlay" or "Underlay", # default "Underlay" if environment variable not configured. value: Underlay

    這樣修改完之后,Pod 將會默認以 underlay 的方式被創(chuàng)建,新的 underlay Pod 與原有 overlay Pod 的網(wǎng)絡(luò)連通性不受影響(簡單來說,相當于 underlay Pod 會有一個與其他 overlay Pod 通信的 overlay 的身份)。****

    添加/刪除網(wǎng)絡(luò)資源

    就如同上面示例中展示的,添加 Network/Subnet 的網(wǎng)絡(luò)資源只需要應(yīng)用對應(yīng) CR 的 yaml 即可,一旦 Network/Subnet 被應(yīng)用,hybridnet 會認為環(huán)境中已經(jīng)完成基礎(chǔ)網(wǎng)絡(luò)配置,并且使用對應(yīng) CR 進行網(wǎng)絡(luò)資源分配。

    出于安全角度考慮,刪除 Network/Subnet 的操作是有基本約束的。只有當 Subnet 中沒有 IP 在被使用時,Subnet 本身才能被刪除;同理,只用先刪除 Network 中的所有 Subnet,Network 本身才能被刪除。

    ACK Distro:總而言之,借助 hybridnet ,我可以使阿里云容器服務(wù) ACK 在異構(gòu)環(huán)境之上,構(gòu)建一層 underlay + overlay 的統(tǒng)一網(wǎng)絡(luò)平面,提高管控運維能力,為廣大的開發(fā)者帶來更好的容器服務(wù)體驗。

    記者: 好的,十分感謝您這次的細心講解,第二彈深度訪談到這里又要跟大家說再見了,期待下次與讀者朋友們的相遇。

    ACK Distro: 我們下次再見!

    相關(guān)鏈接?

    [1] hybridnet 開源倉庫地址

    ?https://github.com/alibaba/hybridnet??

    [2] hybridnet 社區(qū)文檔

    ?https://github.com/alibaba/hybridnet/wiki??

    [3]ACK Distro 官網(wǎng)

    ?https://www.aliyun.com/product/aliware/ackdistro??

    [4] ACK Distro 官方 GitHub?[?]

    ??https://github.com/AliyunContainerService/ackdistro??

    往期推薦

    ??1、讓創(chuàng)新觸手可及,阿里云容器服務(wù) ACK 發(fā)行版開放免費下載??

    ??2、與阿里云容器服務(wù) ACK 發(fā)行版的深度對話第一彈:如何借助 sealer 實現(xiàn)快速構(gòu)建 & 部署??


    了解更多相關(guān)信息,請掃描下方二維碼或搜索微信號(AlibabaCloud888)添加云原生小助手!獲取更多相關(guān)資訊!

    ?? 發(fā)布云原生技術(shù)最新資訊、匯集云原生技術(shù)最全內(nèi)容,定期舉辦云原生活動、直播,阿里產(chǎn)品及用戶最佳實踐發(fā)布。與你并肩探索云原生技術(shù)點滴,分享你需要的云原生內(nèi)容。

    關(guān)注【阿里巴巴云原生】公眾號,獲取更多云原生實時資訊!

    總結(jié)

    以上是生活随笔為你收集整理的与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。