自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

白話Kubernetes網(wǎng)絡(luò)

云計(jì)算 云原生
在 Kubernetes 中,最好為所有 Pod 創(chuàng)建網(wǎng)絡(luò)策略。這些策略有助于保護(hù)集群,防止可能受損的 Pod 向其他附近的 Pod 發(fā)送有害流量。這為開(kāi)發(fā)人員的 Kubernetes 環(huán)境增加了一層額外的安全性。

1 Kubernetes 網(wǎng)絡(luò)介紹

Kubernetes 網(wǎng)絡(luò)是一個(gè)系統(tǒng),能夠使不同集群內(nèi)外的組件相互通信。這個(gè)系統(tǒng)會(huì)處理許多情況,其中重要的情況包括 Pod 之間的通信、Service 的通信以及集群如何處理來(lái)自外部的流量。

由于 Kubernetes 是分布式系統(tǒng),因此它的網(wǎng)絡(luò)平面跨越了集群的所有物理節(jié)點(diǎn)。Kubernetes 使用一個(gè)虛擬重疊網(wǎng)絡(luò),為集群資源提供平面的連接結(jié)構(gòu)。這個(gè)虛擬重疊網(wǎng)絡(luò)使得集群內(nèi)部的資源能夠相互連接,不需要考慮它們所處的物理節(jié)點(diǎn)。

以下是一個(gè) Kubernetes 網(wǎng)絡(luò)示意圖:

圖片圖片

Kubernetes 網(wǎng)絡(luò)會(huì)自動(dòng)分配 IP 地址、設(shè)置 DNS 名稱和連接端口到開(kāi)發(fā)者的 Pod 和 Service。通常情況下,在使用 Kubernetes 時(shí),開(kāi)發(fā)人員無(wú)需在網(wǎng)絡(luò)或節(jié)點(diǎn)主機(jī)上手動(dòng)處理這些任務(wù)。

Kubernetes 網(wǎng)絡(luò)模型會(huì)為每個(gè) Pod 分配一個(gè)在集群內(nèi)唯一的 IP 地址。這樣,Pod 可以使用它們的 IP 地址相互通信,不用進(jìn)行額外的設(shè)置,例如網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)。

這個(gè)基本設(shè)置通過(guò) Kubernetes 的 Service 模型得到了改進(jìn)。Service 模型允許將流量導(dǎo)向一組 Pod 中的任意一個(gè),并且還包括網(wǎng)絡(luò)控制方式,例如網(wǎng)絡(luò)策略。網(wǎng)絡(luò)策略可以防止 Pod 之間的不必要的通信,從而提高網(wǎng)絡(luò)的安全性和可靠性。

2 傳統(tǒng)虛擬機(jī)與 Kubernetes 網(wǎng)絡(luò)的區(qū)別

Kubernetes 網(wǎng)絡(luò)使用了已知的網(wǎng)絡(luò)概念,并將其應(yīng)用到 Kubernetes 集群環(huán)境中。與傳統(tǒng)的物理設(shè)備和虛擬機(jī)(VM)網(wǎng)絡(luò)模型相比,Kubernetes 網(wǎng)絡(luò)更簡(jiǎn)單、更均勻、自動(dòng)化程度更高。

在過(guò)去,開(kāi)發(fā)人員需要手動(dòng)設(shè)置新端點(diǎn),包括配置 IP 地址、在防火墻中打開(kāi)端口以及設(shè)置 DNS 路由。但是,在使用 Kubernetes 時(shí),開(kāi)發(fā)者不再需要執(zhí)行這些操作,Kubernetes 會(huì)自動(dòng)為開(kāi)發(fā)者的集群任務(wù)執(zhí)行所有這些操作。

開(kāi)發(fā)人員和運(yùn)營(yíng)人員不需要了解網(wǎng)絡(luò)設(shè)置的細(xì)節(jié),即可部署資源并使其對(duì)他人可用。這使得設(shè)置、維護(hù)和保持安全要求的最新?tīng)顟B(tài)變得更加容易,因?yàn)樗泄芾矶伎梢栽?Kubernetes 本身中執(zhí)行。

3 Docker 與 Kubernetes 網(wǎng)絡(luò)的區(qū)別

由于已解釋了虛擬機(jī)網(wǎng)絡(luò)和 Kubernetes 網(wǎng)絡(luò)之間的區(qū)別,這里需要提到 Docker 網(wǎng)絡(luò)。

Kubernetes 的網(wǎng)絡(luò)設(shè)計(jì)非常簡(jiǎn)單、平面,很適合分布式系統(tǒng)。在這個(gè)設(shè)計(jì)中,每個(gè) Pod 都可以與其他任何 Pod 通信,即使它們位于不同的物理機(jī)器(節(jié)點(diǎn))上。

Docker 主要用于在單個(gè)機(jī)器上運(yùn)行容器,因此對(duì)網(wǎng)絡(luò)的處理方式有所不同。默認(rèn)情況下,Docker 將所有容器連接到一個(gè)稱為橋接的網(wǎng)絡(luò)中,該網(wǎng)絡(luò)將它們連接到開(kāi)發(fā)者的計(jì)算機(jī)。但是,開(kāi)發(fā)者也可以為自己的容器設(shè)置各種類型的網(wǎng)絡(luò)。這些網(wǎng)絡(luò)包括一個(gè)橋接網(wǎng)絡(luò)(連接相同計(jì)算機(jī)上的容器)、一個(gè)主機(jī)網(wǎng)絡(luò)(允許容器直接使用您計(jì)算機(jī)的網(wǎng)絡(luò))以及一個(gè)重疊網(wǎng)絡(luò)(創(chuàng)建多臺(tái)機(jī)器上的網(wǎng)絡(luò),這對(duì)于 Docker Swarm,用于管理多個(gè)容器的工具,是必需的)。

Docker 容器在同一個(gè)網(wǎng)絡(luò)中時(shí),它們可以相互通信。每個(gè)容器都有自己的 IP 地址和 DNS 名稱,僅在網(wǎng)絡(luò)內(nèi)部使用。這樣其他網(wǎng)絡(luò)中的容器就可以連接到它們。但是,Docker 不會(huì)自動(dòng)設(shè)置從開(kāi)發(fā)者的計(jì)算機(jī)到容器的連接(端口映射),開(kāi)發(fā)者需要在啟動(dòng)容器時(shí)手動(dòng)設(shè)置這些連接。

Docker 和 Kubernetes 在網(wǎng)絡(luò)方面都有一些相似之處,但它們各自有自己的使用場(chǎng)景和網(wǎng)絡(luò)設(shè)計(jì)。Docker 主要用于在單臺(tái)機(jī)器上運(yùn)行容器,因此它的網(wǎng)絡(luò)設(shè)計(jì)更簡(jiǎn)單,使用橋接模式來(lái)連接容器。而 Kubernetes 則是為分布式系統(tǒng)設(shè)計(jì)的,因此它需要一個(gè)更復(fù)雜的網(wǎng)絡(luò)設(shè)計(jì)來(lái)連接系統(tǒng)的不同部分,即使它們不在同一臺(tái)機(jī)器上,也能夠相互通信。因此,Kubernetes 使用了重疊網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)這一點(diǎn)。

Docker 和 Kubernetes 在容器隔離方面有所不同。在 Docker 中,可以通過(guò)將容器放在不同的網(wǎng)絡(luò)中來(lái)阻止它們相互通信。而在 Kubernetes 中,所有 Pod 都會(huì)自動(dòng)加入到同一個(gè)重疊網(wǎng)絡(luò)中。因此,為了控制哪些 Pod 可以相互通信,Kubernetes 使用網(wǎng)絡(luò)策略來(lái)管理網(wǎng)絡(luò)中的流量。這種方式可以更細(xì)致地控制 Pod 之間的通信,提高了網(wǎng)絡(luò)的安全性和可控性。

4 Kubernetes 網(wǎng)絡(luò)架構(gòu)

Kubernetes 網(wǎng)絡(luò)構(gòu)建于一個(gè)簡(jiǎn)單、平面的結(jié)構(gòu)之上,其主要特點(diǎn)如下:

  • 每個(gè) Pod 都會(huì)獲得自己的 IP 地址。
  • 節(jié)點(diǎn)具有一個(gè)主網(wǎng)絡(luò)空間(根網(wǎng)絡(luò)命名空間),它連接 Pod 的網(wǎng)絡(luò)接口。這意味著無(wú)論哪個(gè)節(jié)點(diǎn)上的 Pod,都可以使用 IP 地址相互通信。
  • 不需要進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)。
  • 每個(gè) Pod 都有自己的網(wǎng)絡(luò)空間和接口。與 Pod 的所有通信都通過(guò)其特定的網(wǎng)絡(luò)接口進(jìn)行。
  • 整個(gè)集群的網(wǎng)絡(luò)層在節(jié)點(diǎn)級(jí)別連接網(wǎng)絡(luò)空間。這確保在不同節(jié)點(diǎn)之間正確移動(dòng)流量。
  • 通常,不需要手動(dòng)鏈接 Pod 端口到節(jié)點(diǎn)。但是,如果有必要,可以通過(guò)為 Pod 分配特定端口(hostPort)來(lái)實(shí)現(xiàn)此目的。

這些原則使 Kubernetes 網(wǎng)絡(luò)具有可預(yù)測(cè)和一致的特性,無(wú)論是對(duì)使用集群的用戶還是對(duì)管理員都是如此。Kubernetes 設(shè)置的系統(tǒng)確保所有 Pod 都可以可靠連接到網(wǎng)絡(luò),無(wú)需手動(dòng)設(shè)置。

5 分配 IP 地址給 Pod

Kubernetes 使用一種稱為無(wú)類域間路由(CIDR)的方法為 Pod 分配 IP 地址。這個(gè)系統(tǒng)決定了 pod 可以使用的 IP 地址范圍。每個(gè) pod 都會(huì)從該范圍內(nèi)獲得一個(gè)唯一的 IP 地址,這個(gè) IP 地址是特定于開(kāi)發(fā)者的集群的。當(dāng)設(shè)置新的集群網(wǎng)絡(luò)時(shí),開(kāi)發(fā)者需要選擇一個(gè)可用的 IP 地址范圍(CIDR 范圍)。

此外,許多向 Kubernetes 添加網(wǎng)絡(luò)功能的工具(網(wǎng)絡(luò)插件)可以讓開(kāi)發(fā)人員更細(xì)致地管理 IP 地址。使用這些工具,可以選擇特定的 IP 地址、IP 地址的一部分或它們的組。這在處理更復(fù)雜的網(wǎng)絡(luò)設(shè)置時(shí)非常有用。

6 Kubernetes 集群中的 DNS

Kubernetes 集群包括內(nèi)置的 DNS 支持。CoreDNS 是最受歡迎的 Kubernetes DNS 提供商之一,并且在許多 Kubernetes 分發(fā)版中默認(rèn)啟用。

Kubernetes 會(huì)為 Pod 和 Service 自動(dòng)分配 DNS 名稱,格式如下:

  • Pod — pod-ip-address.pod-namespace-name.pod.cluster-domain.example(例如 10.244.0.1.my-app.svc.cluster.local)
  • Service — service-name.service-namespace-name.svc.cluster-domain.example(例如 database.my-app.svc.cluster.local)

運(yùn)行在 Pod 中的應(yīng)用程序通常應(yīng)該使用它們的 DNS 名稱配置與 Service 通信。名稱是可預(yù)測(cè)的,而 Service 的 IP 地址會(huì)隨著 Service 被刪除和替換而改變。

7 使用網(wǎng)絡(luò)策略的 Kubernetes 網(wǎng)絡(luò)隔離

在 Kubernetes 中,默認(rèn)情況下所有的 Pod 都可以相互通信。這在某些情況下可能會(huì)帶來(lái)安全風(fēng)險(xiǎn),尤其是在用于多個(gè)分離應(yīng)用程序、環(huán)境、團(tuán)隊(duì)或客戶的集群中。需要采取適當(dāng)?shù)拇胧﹣?lái)控制 Pod 之間的網(wǎng)絡(luò)通信以保護(hù)集群的安全性,。

為了管理這一點(diǎn),Kubernetes 有個(gè)稱為網(wǎng)絡(luò)策略的東西。這些是開(kāi)發(fā)人員可以設(shè)置的規(guī)則,用于控制 Pod 如何發(fā)送和接收流量(入口和出口)。例如,可以創(chuàng)建一個(gè)策略,該策略會(huì)停止所有流量到標(biāo)記為 app-component:database 的 Pod,除非流量來(lái)自標(biāo)記為 app-component:api 的 Pod。這是控制哪些 Pod 可以相互通信的方式,以提高安全性。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app-component: database
  policyTypes:
    - Ingress
  ingress:
    - from:
      - podSelector:
          matchLabels:
            app-component: api

在 Kubernetes 中,最好為所有 Pod 創(chuàng)建網(wǎng)絡(luò)策略。這些策略有助于保護(hù)集群,防止可能受損的 Pod 向其他附近的 Pod 發(fā)送有害流量。這為開(kāi)發(fā)人員的 Kubernetes 環(huán)境增加了一層額外的安全性。

責(zé)任編輯:武曉燕 來(lái)源: Java學(xué)研大本營(yíng)
相關(guān)推薦

2021-08-10 07:27:41

Kubernetes運(yùn)維容器

2019-10-24 10:25:32

Kubernetes網(wǎng)絡(luò)集群

2020-07-08 09:36:03

Kubernetes容器開(kāi)發(fā)

2020-04-12 22:23:45

Kubernetes容器網(wǎng)絡(luò)

2021-04-14 09:33:58

Kubernetes通信網(wǎng)絡(luò)模型

2020-09-23 14:20:07

Kubernetes容器網(wǎng)絡(luò)模型

2021-11-22 08:50:20

Kubernetes網(wǎng)絡(luò)策略云原生應(yīng)用程序

2022-05-02 18:45:33

Kubernetes網(wǎng)絡(luò)模型

2021-11-18 23:00:22

Kubernetes容器工具

2022-09-01 06:59:56

Kubernete云原生

2019-06-21 15:29:26

Kubernetes網(wǎng)絡(luò)標(biāo)準(zhǔn)容器

2022-12-05 09:25:17

Kubernetes網(wǎng)絡(luò)模型網(wǎng)絡(luò)通信

2022-04-24 10:42:59

Kubernete容器網(wǎng)絡(luò)Linux

2022-12-15 08:30:35

Flannel網(wǎng)絡(luò)磁盤

2017-03-17 08:15:17

敏捷軟件開(kāi)發(fā)軟件開(kāi)發(fā)

2023-02-06 07:41:27

2022-02-23 20:20:48

Kubernetes網(wǎng)絡(luò)模型

2023-01-12 08:12:33

KubernetesCiliumeBPF

2022-03-03 10:00:28

CiliumKubernetes開(kāi)源

2022-06-06 21:46:32

Kubernetes網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)