国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

3.Kubernetes—pod通信網(wǎng)絡(luò)原理

這篇具有很好參考價值的文章主要介紹了3.Kubernetes—pod通信網(wǎng)絡(luò)原理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一個 service,二個IP,三個 port?

1、同一個 Pod 中 容器通信

2、同一個節(jié)點(diǎn)多個 Pod 之間通信

3、跨節(jié)點(diǎn)的pod通信

4、外部網(wǎng)絡(luò)和 pod 之間通信

一個 service,3個IP,三個 port?

NodePort
nodeport是外部流量訪問K8s的一種方式,即nodeIP:nodePort,是提供給外部流量訪問K8s集群資源的一種方式??偟膩碚f,我們可以通過在service中配置nodeport,從而使得我們可以通過集群外的機(jī)器進(jìn)行訪問我們的服務(wù)。

Port
port是K8s集群內(nèi)部服務(wù)訪問service的入口。是service暴露在Cluster上的端口,ClusterIP:Port。如下面的yaml配置文件所示,K8s集群內(nèi)部節(jié)點(diǎn)可以通過30080端口訪問Nginx服務(wù),然而外部網(wǎng)絡(luò)還是不能夠訪問到服務(wù),因為nodePort參數(shù)沒有配置。

targetPort
targetPort是容器的端口,也是最終底層的服務(wù)所提供的端口,所以說targetPod也就是Pod的端口。從port或者是nodePort進(jìn)入的流量,經(jīng)過路由轉(zhuǎn)發(fā)之后,最終都會都通過targetPort進(jìn)入到Pod中。

targetPort要與Dockerfile中暴露的端口一致。

apiVersion: v1
kind: Service
metadata:
?name: nginx-service
spec:
?type: NodePort ? ? ? ? // 配置為NodePort,外部可以訪問
?ports:
?- port: 30080 ? ? ? ? ?// 容器間,服務(wù)調(diào)用的端口
? ?targetPort: 80 ? ? ? // 容器暴露的端口,與Dockerfile暴露端口保持一致
? ?nodePort: 30001 ? ? ?// NodePort,外部訪問的端口,如果不顯示指定,k8s會隨機(jī)分配一個端口
?selector:
? name: nginx-pod
?

Kubernetes集群里有三種IP地址,分別如下:

Node IP:Node節(jié)點(diǎn)的IP地址,即物理網(wǎng)卡的IP地址。
Pod IP:Pod的IP地址,即docker容器的IP地址,此為虛擬IP地址。
Cluster IP:Service的IP地址,此為虛擬IP地址。
Node IP
可以是物理機(jī)的IP(也可能是虛擬機(jī)IP)。每個Service都會在Node節(jié)點(diǎn)上開通一個端口,外部可以通過NodeIP:NodePort即可訪問Service里的Pod,和我們訪問服務(wù)器部署的項目一樣,IP:端口/項目名。

在kubernetes查詢Node IP:
1.kubectl get nodes
2.kubectl describe node nodeName
3.顯示出來的InternalIP就是NodeIP

Pod IP
Pod IP是每個Pod的IP地址,他是Docker Engine根據(jù)docker網(wǎng)橋的IP地址段進(jìn)行分配的,通常是一個虛擬的二層網(wǎng)絡(luò)。

同Service下的pod可以直接根據(jù)PodIP相互通信。

不同Service下的pod在集群間pod通信要借助于 cluster ip。

pod和集群外通信,要借助于node ip。

在kubernetes查詢Pod IP:
1.kubectl get pods
2.kubectl describe pod podName

Cluster IP
Service的IP地址,此為虛擬IP地址。外部網(wǎng)絡(luò)無法ping通,只有kubernetes集群內(nèi)部訪問使用。

在kubernetes查詢Cluster IP: kubectl -n 命名空間 get Service即可看到ClusterIP

Cluster IP是一個虛擬的IP,但更像是一個偽造的IP網(wǎng)絡(luò),原因有以下幾點(diǎn):

Cluster IP僅僅作用于Kubernetes Service這個對象,并由Kubernetes管理和分配iP地址

Cluster IP無法被ping,

Cluster IP只能結(jié)合Service Port組成一個具體的通信端口,單獨(dú)的Cluster IP不具備通信的基礎(chǔ),并且他們屬于Kubernetes集群這樣一個封閉的空間。

在不同Service下的pod節(jié)點(diǎn)在集群間相互訪問可以通過Cluster IP
?

1、同一個 Pod 中 容器通信

同一個pod內(nèi)共享網(wǎng)絡(luò)命名空間,容器之間通過訪問 127.0.0.1:(端口)即可

pod通信,K8S,網(wǎng)絡(luò),kubernetes,docker

2、同一個節(jié)點(diǎn)多個 Pod 之間通信

pause 容器啟動之前,會為容器創(chuàng)建虛擬一對 ethernet 接口,一個保留在宿主機(jī) vethxxx(插在網(wǎng)橋上),一個保留在容器網(wǎng)絡(luò)命名空間內(nèi),并重命名為eth0。兩個虛擬接口的兩端,從一端進(jìn)入,另一端出來。任何 Pod 連接到該網(wǎng)橋的 Pod 都可以收發(fā)數(shù)據(jù)。

同節(jié)點(diǎn)不同 pod 之間通信:通過 linux 虛擬以太網(wǎng)設(shè)備或者是用兩個虛擬接口組成的以太網(wǎng)接口對不同的網(wǎng)絡(luò)命名空間連接起來通信

pod通信,K8S,網(wǎng)絡(luò),kubernetes,docker

3、跨節(jié)點(diǎn)的pod通信(CNI:容器網(wǎng)絡(luò)接口)

CNI 是一種標(biāo)準(zhǔn),它旨在為容器平臺提供網(wǎng)絡(luò)的標(biāo)準(zhǔn)化。不同的容器平臺(比如目前的 kubernetes、mesos 和 rkt)能夠通過相同的接口調(diào)用不同的網(wǎng)絡(luò)組件。

目前kubernetes支持的CNI組件種類很多,例如:bridge calico calico-ipam dhcp flannel host-local ipvlan loopback macvlan portmap ptp sample tuning vlan。在docker中,主流的跨主機(jī)通信方案主要有一下幾種:

1)基于隧道的overlay網(wǎng)絡(luò):按隧道類型來說,不同的公司或者組織有不同的實現(xiàn)方案。docker原生的overlay網(wǎng)絡(luò)就是基于vxlan隧道實現(xiàn)的。ovn則需要通過geneve或者stt隧道來實現(xiàn)的。flannel最新版本也開始默認(rèn)基于vxlan實現(xiàn)overlay網(wǎng)絡(luò)。

2)基于包封裝的overlay網(wǎng)絡(luò):基于UDP封裝等數(shù)據(jù)包包裝方式,在docker集群上實現(xiàn)跨主機(jī)網(wǎng)絡(luò)。典型實現(xiàn)方案有weave、flannel的早期版本。

3)基于三層實現(xiàn)SDN網(wǎng)絡(luò):基于三層協(xié)議和路由,直接在三層上實現(xiàn)跨主機(jī)網(wǎng)絡(luò),并且通過iptables實現(xiàn)網(wǎng)絡(luò)的安全隔離。典型的方案為Project Calico。同時對不支持三層路由的環(huán)境,Project Calico還提供了基于IPIP封裝的跨主機(jī)網(wǎng)絡(luò)實現(xiàn)

通信方式

pod通信,K8S,網(wǎng)絡(luò),kubernetes,docker

4、外部訪問集群

從集群外訪問集群有多種方式,比如loadbalancer,Ingress,nodeport,nodeport和loadbalancer是service的兩個基本類型,是將service直接對外暴露的方式,ingress則是提供了七層負(fù)載均衡,其基本原理將外部流量轉(zhuǎn)發(fā)到內(nèi)部的service,再轉(zhuǎn)發(fā)到后端endpoints,在平時的使用中,我們可以依據(jù)具體的業(yè)務(wù)需求選用不同的方式。這里主要介紹nodeport和ingress方式。

Nodeport

通過將 Service 的類型設(shè)置為 NodePort,就可以在 Cluster 中的主機(jī)上通過一個指定端口暴露服務(wù)。注意通過 Cluster 中每臺主機(jī)上的該指定端口都可以訪問到該服務(wù),發(fā)送到該主機(jī)端口的請求會被 Kubernetes 路由到提供服務(wù)的 Pod 上。采用這種服務(wù)類型,可以在 Kubernetes cluster 網(wǎng)絡(luò)外通過主機(jī) IP:端口的方式訪問到服務(wù)。

pod通信,K8S,網(wǎng)絡(luò),kubernetes,docker

?influxdb 例子:


kind: Service
apiVersion: v1
metadata:
 name: influxdb
spec:
 type: NodePort
 ports:
 - port: 8086
 nodePort: 31112
 selector:
 name: influxdb

Ingress(重點(diǎn))

pod通信,K8S,網(wǎng)絡(luò),kubernetes,docker

Ingress 是推薦在生產(chǎn)環(huán)境使用的方式,它起到了七層負(fù)載均衡器和 Http 方向代理的作用,可以根據(jù)不同的 url 把入口流量分發(fā)到不同的后端Service。外部客戶端只看到 http://foo.bar.com 這個服務(wù)器,屏蔽了內(nèi)部多個 Service 的實現(xiàn)方式。采用這種方式,簡化了客戶端的訪問,并增加了后端實現(xiàn)和部署的靈活性,可以在不影響客戶端的情況下對后端的服務(wù)部署進(jìn)行調(diào)整。

其部署的 yaml 可以參考如下模板:

apiVersion: extensions/v1beta1kind: Ingressmetadata: name: test annotations: ingress.kubernetes.io/rewrite-target: /spec: rules: - host: test.name.com http: paths: - path: /test backend: serviceName: service-1 servicePort: 8118 - path: /name backend: serviceName: service-2 servicePort: 8228

ingress模板,定義通過 http://test.name.com 來訪問服務(wù),在虛擬主機(jī)http://test.name.com下面定義了兩個Path,其中/test被分發(fā)到后端服務(wù)s1,/name被分發(fā)到后端服務(wù)s2。?

集群中可以定義多個ingress,來完成不同服務(wù)的轉(zhuǎn)發(fā),這里需要一個ingress controller來管理集群中的Ingress規(guī)則。Ingress Contronler 通過與 Kubernetes API 交互,動態(tài)的去感知集群中 Ingress 規(guī)則變化,然后讀取它,按照自定義的規(guī)則,規(guī)則就是寫明了哪個域名對應(yīng)哪個service文章來源地址http://www.zghlxwxcb.cn/news/detail-727636.html

到了這里,關(guān)于3.Kubernetes—pod通信網(wǎng)絡(luò)原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Kubernetes】K8s 查看 Pod 的狀態(tài)

    NAME :Pod 的名稱。 READY :代表 Pod 里面有幾個容器,前面是啟動的,后面是總數(shù), 1 / 1 1/1 1/1 。 STATUS :就是當(dāng)前 Pod 狀態(tài),最常見的就是 Running 正在運(yùn)行,最期望的狀態(tài),只要不是 Running 的就說明有問題,就算是 Running 的就不一定沒有問題。 狀態(tài) 說明 Pending 掛起 在執(zhí)行創(chuàng)建

    2024年01月15日
    瀏覽(138)
  • kubernetes(k8s) pod(資源限制、基礎(chǔ)概念)

    kubernetes(k8s) pod(資源限制、基礎(chǔ)概念)

    目錄 ?一、資源限制 1、概念 1.2、Pod和容器的資源請求和限制 1.3、CPU資源單位 1.4、內(nèi)存資源單位 1.5、CPU和內(nèi)存的Requests和Limits的特點(diǎn) 1.6、案例 二、pod 的兩種使用方式 三、pod 資源共享 四、底層容器Pause 1、pause 共享資源 1.1、網(wǎng)絡(luò) 1.2、存儲 1.3、小結(jié) 2、Pause主要功能 3、Pod

    2024年02月05日
    瀏覽(103)
  • Kubernetes(k8s)核心資源解析:Pod詳解

    Kubernetes(k8s)核心資源解析:Pod詳解

    ??The Begin??點(diǎn)點(diǎn)關(guān)注,收藏不迷路?? Pod是Kubernetes中最小的調(diào)度單元,它可以包含一個或多個容器。Pod中的所有容器共享網(wǎng)絡(luò)和存儲卷,它們一起運(yùn)行在同一個節(jié)點(diǎn)上。Pod提供了一種抽象層,使得容器可以作為一個邏輯單元來管理。 Pod中的容器共享IP地址、端口空間和存儲

    2024年04月11日
    瀏覽(102)
  • K8S第四講 Kubernetes刪除pod阻塞問題

    在Kubernetes中,當(dāng)您嘗試刪除一個Pod時,可能會遇到Pod一直阻塞的情況。這通常是由于Pod正在運(yùn)行或被其他資源(例如ReplicaSet或Deployment)控制而導(dǎo)致的。以下是一些可能的解決方案: 1: 確認(rèn)Pod是否正在運(yùn)行:在執(zhí)行刪除Pod命令之前,請先檢查Pod的狀態(tài),確保它沒有在運(yùn)行中

    2024年02月05日
    瀏覽(118)
  • Kubernetes(k8s):精通 Pod 操作的關(guān)鍵命令

    Kubernetes(k8s):精通 Pod 操作的關(guān)鍵命令

    ??The Begin??點(diǎn)點(diǎn)關(guān)注,收藏不迷路?? Kubernetes 是一個強(qiáng)大的容器編排平臺,其中的核心概念之一就是 Pod。Pod 是 Kubernetes 中最小的可部署單元,它由一個或多個容器組成,共享網(wǎng)絡(luò)和存儲資源。 在本篇博客中,我們將深入探討 Kubernetes 集群中與 Pod 相關(guān)的一些重要命令,幫

    2024年04月14日
    瀏覽(1129)
  • Kubernetes(k8s)容器編排Pod介紹和使用

    Kubernetes(k8s)容器編排Pod介紹和使用

    Pod是kubernetes中你可以創(chuàng)建和部署的最小也是最簡的單位,一個Pod代表著集群中運(yùn)行的一個進(jìn)程。 Pod有兩個必須知道的特點(diǎn) 通過yaml文件或者json描述Pod和其內(nèi)容器的運(yùn)行環(huán)境和期望狀態(tài),例如一個最簡單的運(yùn)行nginx應(yīng)用的pod,定義如下 3.1.1 參數(shù)描述 下面簡要分析一下上面的

    2024年02月08日
    瀏覽(118)
  • K8s(Kubernetes)學(xué)習(xí)(三):pod概念及相關(guān)操作

    K8s(Kubernetes)學(xué)習(xí)(三):pod概念及相關(guān)操作

    摘取官網(wǎng): https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/#working-with-pods 1.1 簡介 Pod 是可以在 Kubernetes 中 創(chuàng)建和管理的、最小的可部署的計算單元 。 Pod (就像在鯨魚莢或者豌豆莢中) 是一組(一個或多個)容器 ; 這些容器共享存儲、網(wǎng)絡(luò)、以及怎樣運(yùn)行這些容器的聲明。 P

    2024年02月13日
    瀏覽(89)
  • Kubernetes(k8s):Pod 的 Node Selector詳解

    Kubernetes(k8s):Pod 的 Node Selector詳解

    ??The Begin??點(diǎn)點(diǎn)關(guān)注,收藏不迷路?? Node Selector是Kubernetes中一個用于指定Pod部署位置的重要概念。通過Node Selector,用戶可以將Pod調(diào)度到具有特定標(biāo)簽的節(jié)點(diǎn)上。 這種標(biāo)簽通常用于區(qū)分節(jié)點(diǎn)的硬件配置、地理位置、網(wǎng)絡(luò)特性等。通過合理地設(shè)置Node Selector,用戶可以優(yōu)化應(yīng)用

    2024年04月08日
    瀏覽(95)
  • kubernetes(k8s)為容器和 Pod 分配內(nèi)存資源

    kubernetes(k8s)為容器和 Pod 分配內(nèi)存資源

    展示如何將內(nèi)存請求(request)和內(nèi)存限制(limit)分配給一個容器。 我們保障容器擁有它請求數(shù)量的內(nèi)存,但不允許使用超過限制數(shù)量的內(nèi)存。 創(chuàng)建新的命名空間 編輯yaml文件 配置文件的 args 部分提供了容器啟動時的參數(shù)。 “–vm-bytes”, “150M” 參數(shù)告知容器嘗試分配 15

    2024年02月15日
    瀏覽(109)
  • 【Kubernetes】 從基礎(chǔ)認(rèn)識 k8s核心pod相關(guān)概念

    【Kubernetes】 從基礎(chǔ)認(rèn)識 k8s核心pod相關(guān)概念

    提示:此篇幫助朋友們,養(yǎng)成從0到1不斷延伸知識的一種方法 最簡單的創(chuàng)建pod入手 訪問官方文檔,直接使用案例,進(jìn)行修改即可! 官網(wǎng)地址:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-pods-nodes/ 刪除不需要的部分,根據(jù)規(guī)則添加需要的參數(shù)即可得到需要的,代碼如

    2024年01月25日
    瀏覽(126)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包