一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

039.Kubernetes集群網(wǎng)絡(luò)-Pod和SVC網(wǎng)絡(luò)實(shí)踐

 行者花雕 2022-07-12 發(fā)布于北京

一 Pod和SVC網(wǎng)絡(luò)

1.1 實(shí)踐準(zhǔn)備及原理

Docker實(shí)現(xiàn)了不同的網(wǎng)絡(luò)模式,Kubernetes也以一種不同的方式來(lái)解決這些網(wǎng)絡(luò)模式的挑戰(zhàn)。本完整實(shí)驗(yàn)深入剖析Kubernetes在網(wǎng)絡(luò)層是如何實(shí)現(xiàn)及工作的。
實(shí)驗(yàn)節(jié)點(diǎn)架構(gòu):
clipboard
如上圖所示,Kubernetes的網(wǎng)絡(luò)模型要求每個(gè)Node上的容器都可以相互訪問(wèn)。默認(rèn)的Docker網(wǎng)絡(luò)模型提供了一個(gè)IP地址段是172.17.0.0/16的docker0網(wǎng)橋。每個(gè)容器都會(huì)在這個(gè)子網(wǎng)內(nèi)獲得IP地址,并且將docker0網(wǎng)橋的IP地址(172.17.42.1)作為其默認(rèn)網(wǎng)關(guān)。需要注意的是,Docker宿主機(jī)外面的網(wǎng)絡(luò)不需要知道任何關(guān)于這個(gè)172.17.0.0/16的信息或者知道如何連接到其內(nèi)部,因?yàn)镈ocker的宿主機(jī)針對(duì)容器發(fā)出的數(shù)據(jù),在物理網(wǎng)卡地址后面都做了IP偽裝MASQUERADE(隱含NAT)。也就是說(shuō),在網(wǎng)絡(luò)上看到的任何容器數(shù)據(jù)流都來(lái)源于那臺(tái)Docker節(jié)點(diǎn)的物理IP地址。這里所說(shuō)的網(wǎng)絡(luò)都指連接這些主機(jī)的物理網(wǎng)絡(luò)。
默認(rèn)的Docker網(wǎng)絡(luò)模型簡(jiǎn)單便捷,但需要依賴端口映射的機(jī)制。在Kubernetes的網(wǎng)絡(luò)模型中,每臺(tái)主機(jī)上的docker0網(wǎng)橋都是可以被路由到的。也就是說(shuō),在部署了一個(gè)Pod時(shí),在同一個(gè)集群內(nèi),各主機(jī)都可以訪問(wèn)其他主機(jī)上的Pod IP,并不需要在主機(jī)上做端口映射。
因此,可以在網(wǎng)絡(luò)層將Kubernetes的節(jié)點(diǎn)看作一個(gè)路由器,其網(wǎng)絡(luò)架構(gòu)如下:
clipboard

二 Pod和SVC實(shí)驗(yàn)

2.1 檢查環(huán)境

[root@k8smaster02 ~]# ifconfig #node1上檢查網(wǎng)絡(luò)地址
clipboard
由上可知,有一個(gè)docker0網(wǎng)橋和一個(gè)本地eth0地址的網(wǎng)絡(luò)端口。

2.2 創(chuàng)建RC

[root@k8smaster01 study]# vi frontend-controller.yaml
  1 apiVersion: v1
  2 kind: ReplicationController
  3 metadata:
  4   name: frontend
  5   labels:
  6     name: frontend
  7 spec:
  8   replicas: 1
  9   selector:
 10     name: frontend
 11   template:
 12     metadata:
 13       labels:
 14         name: frontend
 15     spec:
 16       containers:
 17       - name: php-redis
 18         image: kubeguide/guestbook-php-frontend
 19         env:
 20         - name: GET_HOSTS_FROM
 21           value: env
 22         ports:
 23         - containerPort: 80
 24           hostPort: 80
[root@k8smaster01 study]# kubectl create -f frontend-controller.yaml

2.3 再次檢查網(wǎng)絡(luò)

[root@k8smaster01 study]# kubectl get pods -o wide
clipboard
Kubernetes為這個(gè)Pod找了一個(gè)主機(jī)172.24.8.71(k8smaster01) 來(lái)運(yùn)行它。另外,這個(gè)Pod獲得了一個(gè)在k8smaster01的docker0網(wǎng)橋上的IP地址。
[root@k8smaster01 study]# docker ps #k8smaster01上查看正在運(yùn)行的容器
clipboard
第2個(gè)運(yùn)行的是一個(gè)google_containers/pause:latest的鏡像,而且這個(gè)容器已經(jīng)做了端口映射。
[root@k8smaster01 study]# docker inspect c6578085541b | grep NetworkMode #查看容器的網(wǎng)絡(luò)模型
"NetworkMode": "default",
[root@k8smaster01 study]# docker inspect da8251102c93 | grep NetworkMode
"NetworkMode": "container:c6578085541b6f47ab624134d0ed0be352b30b42379493a71a8fc913d829989c",
解釋?zhuān)旱?個(gè)容器是運(yùn)行了“google_containers/pause:latest”鏡像的容器,它使用了Docker默認(rèn)的網(wǎng)絡(luò)模型bridge(默認(rèn)網(wǎng)絡(luò)模型即為橋接);
第2個(gè)容器,也就是在RC/Pod中定義運(yùn)行的php-redis容器,使用了非默認(rèn)的網(wǎng)絡(luò)配置和映射容器的模型,指定了映射目標(biāo)容器為“google_containers/pause:latest”。

2.4 網(wǎng)絡(luò)模型釋義

首先,一個(gè)Pod內(nèi)的所有容器都需要共用同一個(gè)IP地址,這就意味著一定要使用網(wǎng)絡(luò)的容器映射模式。然而,為什么不能只啟動(dòng)第1個(gè)Pod中的容器,而將第2個(gè)Pod中的容器關(guān)聯(lián)到第1個(gè)容器呢?
Kubernetes主要基于如下兩個(gè)覺(jué)得考慮:
首先,如果在Pod內(nèi)有多個(gè)容器的話,則可能很難連接這些容器;
其次,后面的容器還要依賴第1個(gè)被關(guān)聯(lián)的容器,如果第2個(gè)容器關(guān)聯(lián)到第1個(gè)容器,且第1個(gè)容器異常的話,第2個(gè)容器也將異常。
啟動(dòng)一個(gè)基礎(chǔ)容器,然后將Pod內(nèi)的所有容器都連接到基礎(chǔ)容器相對(duì)容易。因?yàn)橹恍枰獮榛A(chǔ)的這個(gè)Google_containers/pause容器執(zhí)行端口映射規(guī)則,這也簡(jiǎn)化了端口映射的過(guò)程。所以啟動(dòng)Pod后的網(wǎng)絡(luò)模型類(lèi)似下圖:
clipboard
實(shí)際上,應(yīng)用容器直接監(jiān)聽(tīng)了這些端口,和google_containers/pause容器共享了同一個(gè)網(wǎng)絡(luò)堆棧。這就是為什么在Pod內(nèi)部實(shí)際容器的端口映射都顯示到google_containers/pause容器上了。
[root@k8smaster01 study]# docker port c6578085541b #通過(guò)dockerport命令來(lái)檢驗(yàn)端口轉(zhuǎn)發(fā)
80/tcp -> 0.0.0.0:80
綜上所述,google_containers/pause容器實(shí)際上只是負(fù)責(zé)接管這個(gè)Pod的Endpoint。

2.5 發(fā)布SVC

Service允許我們?cè)诙鄠€(gè)Pod之間抽象一些服務(wù),而且服務(wù)可以通過(guò)提供在同一個(gè)Service的多個(gè)Pod之間的負(fù)載均衡機(jī)制來(lái)支持水平擴(kuò)展。
[root@k8smaster01 study]# vi frontend-service.yaml
  1 apiVersion: v1
  2 kind: Service
  3 metadata:
  4   name: frontend
  5   labels:
  6     name: frontend
  7 spec:
  8   ports:
  9   - port: 80
 10   selector:
 11     name: frontend
[root@k8smaster01 study]# kubectl create -f frontend-service.yaml
[root@k8smaster01 study]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend ClusterIP 10.254.176.53 <none> 80/TCP 45s
釋義:如上可知Kubernetes集群已經(jīng)為這個(gè)服務(wù)分配了一個(gè)虛擬IP地址10.254.176.53,這個(gè)IP地址是在Kubernetes的Portal Network中分配的。 而這個(gè)Portal Network的地址范圍是我們?cè)贙ubmaster上啟動(dòng)API服務(wù)進(jìn)程時(shí),使用--service-cluster-ip-range=xx命令行參數(shù)指定:
[root@k8smaster01 study]# cat /etc/systemd/system/kube-apiserver.service | grep 10.254
--service-cluster-ip-range=10.254.0.0/16 \
注意:這個(gè)IP段可以是任何段,只要不和docker0或者物理網(wǎng)絡(luò)的子網(wǎng)沖突即可。選擇任意其他網(wǎng)段的原因是這個(gè)網(wǎng)段將不會(huì)在物理網(wǎng)絡(luò)和docker0網(wǎng)絡(luò)上進(jìn)行路由。這個(gè)Portal Network針對(duì)每一個(gè)Node都有局部的特殊性,實(shí)際上它存在的意義是讓容器的流量都指向默認(rèn)網(wǎng)關(guān)(也就是docker0網(wǎng)橋)。

2.6 確認(rèn)驗(yàn)證

當(dāng)所有的Pod都運(yùn)行起來(lái),Service將會(huì)把客戶端請(qǐng)求負(fù)載分發(fā)到包含“name=frontend”標(biāo)簽的所有Pod上。
clipboard
注意:本實(shí)驗(yàn)更詳細(xì)的步驟參考:https://blog.csdn.net/qq_31136839/article/details/99778434。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    九九热精品视频免费在线播放| 日韩欧美三级视频在线| 日韩精品免费一区二区三区| 亚洲精品欧美精品日韩精品| 国产欧美日韩综合精品二区| 老熟妇乱视频一区二区| 日本办公室三级在线观看| 日韩美成人免费在线视频| 国产乱淫av一区二区三区| 国产成人综合亚洲欧美日韩| 久草热视频这里只有精品| 亚洲另类女同一二三区| 韩国日本欧美国产三级| 国产内射在线激情一区| 亚洲熟女诱惑一区二区| 日韩成人免费性生活视频| 日本不卡在线视频中文国产| 免费在线播放不卡视频| 欧美日韩欧美国产另类| 激情丁香激情五月婷婷| 黄片三级免费在线观看| 久久国产精品热爱视频| 免费精品一区二区三区| 欧美日韩国产精品第五页| 国产成人综合亚洲欧美日韩| 日韩黄色大片免费在线| 亚洲中文在线男人的天堂| 在线日韩中文字幕一区 | 欧美一区二区在线日韩| 日韩熟妇人妻一区二区三区| 亚洲中文字幕有码在线观看| 欧美一区二区日韩一区二区| 老熟女露脸一二三四区| 超薄肉色丝袜脚一区二区| 日韩人妻av中文字幕| 亚洲高清中文字幕一区二区三区 | 夜色福利久久精品福利| 中文字幕乱码亚洲三区| 91亚洲熟女少妇在线观看| 熟妇久久人妻中文字幕| 免费一区二区三区少妇|