<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)原理

    時(shí)間:2024-07-11 11:59:15 網(wǎng)絡(luò)技術(shù) 我要投稿
    • 相關(guān)推薦

    計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)原理

      Kubernetes(k8s) 源于古希臘語(yǔ),意寓為舵手,管理者。Kubernetes 是Google開(kāi)源的容器集群管理系統(tǒng),其提供應(yīng)用部署、維護(hù)、擴(kuò)展機(jī)制等功能,利用Kubernetes能方便地管理跨機(jī)器運(yùn)行容器化的應(yīng)用,下面跟著小編一起了解一些計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)原理。

      其主要功能如下

      以集群的方式運(yùn)行、管理跨機(jī)器的容器;

      解決Docker 跨機(jī)器容器之間的通訊問(wèn)題;

      Kubernetes 的自我修復(fù)機(jī)制使得容器集群總是運(yùn)行在用戶期望的狀態(tài)。

      實(shí)際上使用Kubernetes 只需要一個(gè)部署文件,使用一條命令就可以部署一個(gè)完整集群(以網(wǎng)部署k8s 的dashboard 為例):

      kubectl create -fhttps://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml

      現(xiàn)在先介紹一些核心的概念:

      Pods:是連接在一起的容器組合并共享文件卷。它們是最小的部署單元,由 Kubernetes 統(tǒng)一創(chuàng)建、調(diào)度、管理;

      Replication controllers:管理 Pods 的生命周期, 它們確保指定數(shù)量的Pods 會(huì)一直運(yùn)行;

      Labels:被用來(lái)管理和選取基于鍵值對(duì)為基礎(chǔ)的對(duì)象組;

      Services:提供獨(dú)立、可靠名稱和地址的 Pods 集合,它就像一個(gè)基礎(chǔ)版本的負(fù)載均衡器;

      Node:相對(duì)master是工作主機(jī),也叫Minon,物理機(jī)、虛擬機(jī)均可。

      Namespace:不同的namespace 形成邏輯上不同的項(xiàng)目或用戶組。

      Volume:Pod 中被多個(gè)容器訪問(wèn)的共享目錄。

      下圖是典型的Kubernetes 的架構(gòu)圖:

      在開(kāi)始了解Kubernetes 的網(wǎng)絡(luò)原理之前,我們先來(lái)看下docker 的網(wǎng)絡(luò)模型。

      2Docker的網(wǎng)絡(luò)模型

      docker network ls 這個(gè)命令用于列出所有當(dāng)前主機(jī)上的網(wǎng)絡(luò):

      在默認(rèn)情況下會(huì)看到三個(gè)網(wǎng)絡(luò),它們是DockerDeamon 進(jìn)程創(chuàng)建的。標(biāo)準(zhǔn)的Docker 支持一下4種網(wǎng)絡(luò)模式:

      Bridge模式:使用—net=bridge指定。容器使用獨(dú)立網(wǎng)絡(luò)Namespace,并連接到docker0虛擬網(wǎng)卡(默認(rèn)模式);

      None模式:使用—net=none指定。容器沒(méi)有任何網(wǎng)卡,適合不需要與外部通過(guò)網(wǎng)絡(luò)通信的容器;

      Host模式:使用—net=host指定。容器與主機(jī)共享網(wǎng)絡(luò)Namespace,擁有與主機(jī)相同的網(wǎng)絡(luò)設(shè)備;

      Container模式:使用—net=container:NAME_or_ID指定。

      在Kubernetes 的管理模式下,通常只使用bridge 模式。在bridge 模式下,DockerDaemon 第一次啟動(dòng)時(shí)創(chuàng)建一個(gè)虛擬的網(wǎng)橋,缺省名字是docker0,然后按照RPC1918的模型,在私有網(wǎng)絡(luò)空間中給這個(gè)網(wǎng)橋分配一個(gè)子網(wǎng)。Docker 創(chuàng)建出來(lái)的每一個(gè)容器,都會(huì)創(chuàng)建一個(gè)虛擬的Veth 設(shè)備對(duì),其中一端關(guān)聯(lián)到網(wǎng)橋上,另一端用Linux 的網(wǎng)絡(luò)命名空間技術(shù),映射到容器內(nèi)的eth0設(shè)備,然后在網(wǎng)橋的地址段內(nèi)分配一個(gè)IP地址。

      Docker的缺省橋接網(wǎng)絡(luò)模型:

      虛擬化技術(shù)中最為復(fù)雜的就是虛擬化網(wǎng)絡(luò)技術(shù),也是門(mén)檻很高的技術(shù)領(lǐng)域,Docker 很明智的早期并沒(méi)有提供跨主機(jī)的解決方案。

      3什么是kubernetes網(wǎng)絡(luò)模型?

      Kubernetes 網(wǎng)絡(luò)設(shè)計(jì)的一個(gè)基本原則是:每個(gè)Pod 都有一個(gè)全局唯一的IP, 而且假定所有的Pod 都在一個(gè)可以直接連通的,扁平的網(wǎng)絡(luò)空間中,Pod 之間可以跨主機(jī)通信,按照這種網(wǎng)絡(luò)原則抽象出來(lái)的一個(gè)Pod 對(duì)應(yīng)一個(gè)IP的設(shè)計(jì)模型也被稱作IP-per-Pod 模型。

      相比于Docker 原生的NAT方式來(lái)說(shuō),這樣使得容器在網(wǎng)絡(luò)層面更像虛擬機(jī)或者物理機(jī),復(fù)雜度整體降低,更加容易實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),遷移,負(fù)載均衡等功能。

      容器間的通信

      創(chuàng)建的dashboard 容器信息:

      在yaml 文件中你可以發(fā)現(xiàn)我們?cè)O(shè)置的replicas 的數(shù)量是1,但是卻發(fā)現(xiàn)了兩個(gè)容器在運(yùn)行,第二個(gè)image名為gcr.io/google_containers/pause:2.0,那么第二個(gè)容器從何而來(lái)?

      執(zhí)行下圖中的命令可以發(fā)現(xiàn):

      第二個(gè)容器和第一個(gè)容器共享網(wǎng)絡(luò)命名空間。第一個(gè)容器是Netowrk Container,它不做任何事情,只是用來(lái)接管Pod 的網(wǎng)絡(luò)。這樣做的好處在于避免容器間的相互依賴,使用一個(gè)簡(jiǎn)單的容器來(lái)統(tǒng)一管理網(wǎng)絡(luò)。

      Pod 間的通信

      Pod 間的通信使用的是一個(gè)內(nèi)部IP,這個(gè)IP就是Network Container 的IP。

      以dashboard 為例:

      同一個(gè)Node 上的Pod 通過(guò)Veth 連接在同一個(gè)docker0 網(wǎng)橋上,地址段相同,原生能通信。但是不同Node 之間的Pod 如何通信的,本質(zhì)是在網(wǎng)路上再架設(shè)一層overlay network 使容器的網(wǎng)絡(luò)運(yùn)行在這層overlay 網(wǎng)絡(luò)上。現(xiàn)有的方案有Flannel,OpenVSwitch,Weave 等。本文Kubernetes 環(huán)境是采用Flannel。

      Flannel 使用Linux 通用TUN/ TAP 設(shè)備, 并使用UDP 封裝IP 數(shù)據(jù)包創(chuàng)建一個(gè)覆蓋網(wǎng)絡(luò)。它使用etcd 維護(hù)子網(wǎng)的分配和overlay 網(wǎng)絡(luò)和實(shí)際IP 的映射。

      下圖是Flannel 的原理圖:

      Pod 到Service 通信

      查看dashboard 的Service 的VIP(Virtual IP) 和后端Pod 的IP:

      那么dashboard 就可以通過(guò)10.254.104.235來(lái)進(jìn)行訪問(wèn),執(zhí)行iptables-save:

      然后執(zhí)行l(wèi)sof –i:30250:

      可以看到Kube-Proxy 進(jìn)程監(jiān)聽(tīng)在30250端口上,這個(gè)進(jìn)程可以看做是Service 的透明代理兼負(fù)載均衡器,對(duì)于Service 的訪問(wèn)請(qǐng)求將被這個(gè)進(jìn)程轉(zhuǎn)發(fā)到后端Pod。

      對(duì)于Pod 的變化會(huì)及時(shí)刷新。那么Service 就是在Pod 間起到中轉(zhuǎn)和代理的作用。

      下圖中可以很好的反映整個(gè)流程:

      當(dāng)一個(gè)客戶端訪問(wèn)這個(gè)Service 時(shí),這些iptable 規(guī)則就開(kāi)始起作用,客戶端的流量被重定向到Kube-Proxy 為這個(gè)Service 打開(kāi)的端口上,Kube-Proxy 隨機(jī)選擇一個(gè)后端Pod 來(lái)進(jìn)行服務(wù)。

      外部到內(nèi)部的通信

      Kubernetes 支持兩種對(duì)外服務(wù)的Service 的Type 定義:NodePort 和LoadBalancer。

      NodePort:在每個(gè)Node 上打開(kāi)一個(gè)端口并且每個(gè)Node 的端口都是一樣的,通過(guò):NodePort 的方式,Kubernetes 集群外部的程序可以訪問(wèn)Service;

      LoadBalancer: 通過(guò)外部的負(fù)載均衡器來(lái)訪問(wèn)。

    【計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)原理】相關(guān)文章:

    PTN網(wǎng)絡(luò)技術(shù)的原理及分析04-03

    計(jì)算機(jī)云計(jì)算的原理與應(yīng)用03-15

    計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)簡(jiǎn)介11-29

    計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)基礎(chǔ)03-30

    計(jì)算機(jī)組成原理是什么11-16

    怎樣學(xué)好計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)03-14

    學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)總結(jié)03-30

    計(jì)算機(jī)硬件故障原理及日常維護(hù)03-29

    計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的應(yīng)用和發(fā)展03-31

    主站蜘蛛池模板: 亚洲精品综合久久| 亚洲国产精品无码久久青草| 久久99精品国产99久久| 久久久精品午夜免费不卡| 在线中文字幕精品第5页| 精品一区二区久久| 无码精品视频一区二区三区| 久久国产精品99久久久久久老狼| 在线精品亚洲一区二区| 国产成人亚洲精品影院| 91精品国产91久久综合| 亚洲中文字幕久久精品无码喷水| 国产精品国产三级国产a| 91国在线啪精品一区| 久久久久久夜精品精品免费啦| 日产国产精品亚洲系列| 国产精品无码不卡一区二区三区| 99精品免费视频| 精品人妻人人做人人爽| 尤物TV国产精品看片在线| 国产午夜精品一区二区| 欧美精品1区2区| 97在线精品视频| 国产在线精品免费aaa片| 亚洲精品无码不卡在线播HE| 欧美日韩精品在线观看| 精品欧美小视频在线观看| 91精品国产高清久久久久久国产嫩草 | 亚洲欧美日韩精品久久亚洲区 | 国语精品一区二区三区| 日韩精品一二三区| 精品第一国产综合精品蜜芽| 亚洲无删减国产精品一区| 国产精品美女久久久| 国产99视频精品一区| 国产成人精品免费视频大| 国产色婷婷五月精品综合在线| 亚洲AV无码成人精品区蜜桃| 亚洲精品国产字幕久久不卡| 亚洲日韩一页精品发布| 午夜精品一区二区三区免费视频 |