一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

docker跨主機通信的方法

汽車玩家 ? 來源:Devops部落 ? 作者:Devops部落 ? 2020-01-21 17:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

flannel是CoreOS提供用于解決Dokcer集群跨主機通訊的覆蓋網(wǎng)絡工具。它的主要思路是:預先留出一個網(wǎng)段,每個主機使用其中一部分,然后每個容器被分配不同的ip;讓所有的容器認為大家在同一個直連的網(wǎng)絡,底層通過UDP/VxLAN等進行報文的封裝和轉(zhuǎn)發(fā)。

架構(gòu)圖

docker跨主機通信的方法

跨主機容器通信

這里涉及到一個知識點,就是底層通過UDP/VxLAN設備進行報文的封裝和轉(zhuǎn)發(fā),以下來敘述一下這個過程,當報文從Pod1:10.1.15.2/24要去往Pod4: 10.1.20.2/24這個容器的時候,要分別經(jīng)過以下步驟。

因為Pod1的veth0和docker0的一段網(wǎng)卡相連,所以數(shù)據(jù)包會先發(fā)往docker0網(wǎng)橋,此時docker0會查詢自己所維護的路由表,沒有發(fā)現(xiàn)有10.1.20.2/24這個地址,所以會把數(shù)據(jù)包發(fā)送給默認路由,這里的默認路由即flannel網(wǎng)橋。

docker跨主機通信的方法

flannel網(wǎng)橋是一個VxLAN設備,它收到數(shù)據(jù)包后,檢查到包中的目的地址并不是自己的地址,所以他本應該這把這個數(shù)據(jù)包重新發(fā)送出去,因為他的下一層已經(jīng)是數(shù)據(jù)鏈路層,所以即將進行二層封包,即通過ARP協(xié)議來對以太網(wǎng)進行廣播誰是10.1.20.2/24,接受并記錄目的的MAC地址。但是由于它是一個VxLAN設備,其特殊性就是并沒有真正在二層發(fā)出這個 arp 包,而是由 linux kernel 引發(fā)一個”L3 MISS”事件并將 arp 請求發(fā)到用戶空間的 Flannel 程序中。

docker跨主機通信的方法

flannel程序接收到”L3 MISS”事件以及 arp 請求 (who is10.1.20.2/24 ) 后,并不會像以太網(wǎng)發(fā)送ARP請求,而是在etcd中匹配10.1.20.2/24的信息,從而找到Node2的MAC地址。Flannel 將查詢到的信息放入 Node1 host 的 arp cache 表中,flannel0 完成這項工作后,Linux kernel 就可以在 arp table 中找到 10.1.20.2/24對應的 MAC 地址并封裝二層以太包了。

Node 上 2 的 eth0 接收到上述 VXLAN 包,內(nèi)核也識別出這是一個 VXLAN 包,于是通過相反的步驟解包出來,最后傳達到POD4上去。

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

    關注

    40

    文章

    5610

    瀏覽量

    175322
  • 集群
    +關注

    關注

    0

    文章

    102

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    全面介紹docker的使用方法

    docker使用方法
    發(fā)表于 07-25 14:22

    Docker容器管理命令(一)

    1、Docker容器管理命令的使用方法查看當前主機本地docker鏡像:啟動容器必須依賴鏡像,所以要獲取到鏡像的唯一標識docker容器管理
    發(fā)表于 04-20 17:55

    Docker容器管理命令(二)

    1、Docker容器管理命令的使用方法批量刪除docker 容器docker cp命令docker cp :用于容器與
    發(fā)表于 04-21 11:31

    docker基礎知識和使用bmnnsdk時的docker常用命令

    安裝docker并下載bmnnsdk2 解壓bmnnsdk壓縮包(以下簡成bmnnsdk為SDK) 進入SDK解壓后文件夾,文件名如bmnnsdk2_bm1684_vx.x.x ,此為宿主機根目錄; 從
    發(fā)表于 09-18 07:59

    如何在docker容器內(nèi)使用宿主機上的顯示設備顯示圖像?

    主機名:端口』共享給docker,docker 就可以通過端口找到顯示輸出的地方,和linux系統(tǒng)共用顯示設備: 宿主機安裝x11-server: sudo apt-get ins
    發(fā)表于 09-19 08:16

    如何判斷是否在docker鏡像中?

    則簡潔很多 3. 一個有些土的方法:大部分 docker 容器中都不會在安裝 docker,至少算能SDK 的docker是這樣的,所以在云主機
    發(fā)表于 09-20 07:42

    網(wǎng)段獲取遠程主機MAC地址的方法與java實現(xiàn)

    本文分析了利用SendARP 方法(基于ARP 協(xié)議)來獲取遠程主機MAC 地址的缺陷,提出了一種新思路——研究并利用SNMP 協(xié)議來快速獲取遠程主機MAC 地址的方法,并給出了其在J
    發(fā)表于 09-18 11:01 ?61次下載

    基于Docker的云資源彈性調(diào)度策略

    針對云資源彈性調(diào)度問題,結(jié)合Ceph數(shù)據(jù)存儲的特點,提出一種基于Docker容器的云資源彈性調(diào)度策略。首先,指出Docker容器數(shù)據(jù)卷不能主機的特性給應用在線遷移帶來了困難,并對Ce
    發(fā)表于 03-29 10:11 ?0次下載
    基于<b class='flag-5'>Docker</b>的云資源彈性調(diào)度策略

    容器主機存儲教程說明

    REX-Ray 容器主機存儲坑實在是太多,百度搜索出來的各種解決方案很少有實際意義,跟風粘貼復制者眾,大家在學習這些前沿技術時,學會去國外官方論壇上查詢問題。rex-ray作為docker
    的頭像 發(fā)表于 09-22 17:46 ?3672次閱讀

    docker的4種網(wǎng)絡模式

    Docker 使用 Linux 橋接,在宿主機虛擬一個 Docker 容器網(wǎng)橋(docker0),Docker 啟動一個容器時會根據(jù)
    的頭像 發(fā)表于 08-14 11:50 ?2171次閱讀

    docker的4種網(wǎng)絡模式配置

    Docker 使用 Linux 橋接,在宿主機虛擬一個 Docker 容器網(wǎng)橋(docker0),Docker 啟動一個容器時會根據(jù)
    的頭像 發(fā)表于 10-10 10:37 ?1795次閱讀

    Docker容器網(wǎng)絡的數(shù)據(jù)鏈路是什么

    主機容器網(wǎng)絡可能存在多個docker,分屬于不同的bridge,它們之間有通信的需求。
    的頭像 發(fā)表于 02-15 09:56 ?1192次閱讀
    <b class='flag-5'>Docker</b>容器網(wǎng)絡的數(shù)據(jù)鏈路是什么

    docker exec命令的使用方法

    有用的命令,用于在正在運行的容器中執(zhí)行命令。 在本文中,我將詳細介紹Docker exec命令的使用方法,包括命令格式、參數(shù)選項、使用示例等。 Docker exec命令格式 Docker
    的頭像 發(fā)表于 11-23 09:33 ?2260次閱讀

    docker容器與容器之間通信

    Docker是一種輕量級容器化技術,能夠?qū)贸绦蚣捌湟蕾図椃庋b在一個獨立、可移植的容器中。而容器化的應用程序通常是以分布式方式設計的,因此實現(xiàn)容器與容器之間的通信至關重要。 本文將詳細介紹
    的頭像 發(fā)表于 11-23 09:36 ?1954次閱讀

    docker進入容器的方法有哪些

    Docker是一種流行的容器化平臺,它能夠快速構(gòu)建、交付和運行應用程序。在使用Docker時,我們經(jīng)常需要進入容器進行調(diào)試、管理和運行命令等操作。本文將詳細介紹Docker進入容器的各種方法
    的頭像 發(fā)表于 11-23 09:45 ?1.2w次閱讀