成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

淺析 Kubernetes原生NetworkPolicy 網(wǎng)絡(luò)策略,讓更安全的容器運(yùn)行環(huán)境唾手可得

jsdt / 2857人閱讀

摘要:本文將主要分析原生的網(wǎng)絡(luò)策略。筆者認(rèn)為這個(gè)問題主要是因?yàn)槭褂谜卟涣私饩W(wǎng)絡(luò)策略的省缺行為。可選字段,字符串,策略規(guī)則類型,表示該網(wǎng)絡(luò)策略中包含哪些類型的策略,可選為或。互相間為或的關(guān)系,滿足其中一條則放行。標(biāo)準(zhǔn),除了指定的放行外其他都禁止。

k8s中的網(wǎng)絡(luò)策略主要分為原生 NetworkPolicy 和第三方網(wǎng)絡(luò)插件提供的網(wǎng)絡(luò)策略。本文將主要分析原生Networkpolicy的網(wǎng)絡(luò)策略。

什么是網(wǎng)絡(luò)策略

網(wǎng)絡(luò)策略(NetworkPolicy)是一種關(guān)于 Pod 間及 Pod 與其他網(wǎng)絡(luò)端點(diǎn)間所允許的通信規(guī)則的規(guī)范。NetworkPolicy 資源使用標(biāo)簽選擇 Pod,并定義選定 Pod 所允許的通信規(guī)則。

k8s中的網(wǎng)絡(luò)策略由實(shí)現(xiàn)了CNI接口的網(wǎng)絡(luò)插件提供,網(wǎng)絡(luò)插件監(jiān)聽集群中 NetworkPolicy 資源的創(chuàng)建/刪除/更新事件生成對(duì)應(yīng)的規(guī)則來控制 Pod 的流量是否放行。

常見的支持 NetworkPolicy 的網(wǎng)絡(luò)插件有:

Calico

Cilium

Kube-router

Romana

Weave Net

默認(rèn)情況下 Pod 間及 Pod 與其他網(wǎng)絡(luò)端點(diǎn)間的訪問是沒有限制的。

如下是一個(gè) NetworkPolicy 定義的例子,該策略的含義是阻止所有流量訪問有app=web這個(gè) label 的 Pod。


經(jīng)常有人會(huì)問網(wǎng)絡(luò)策略要怎么寫,或者是這個(gè)網(wǎng)絡(luò)策略代表了什么含義。筆者認(rèn)為這個(gè)問題主要是因?yàn)槭褂谜卟涣私饩W(wǎng)絡(luò)策略的省缺行為。

NetworkPolicy 字段含義

NetworkPolicy 這個(gè)資源屬于命名空間級(jí)別的,因此metadata 中的 namespace 不可省略,否則只會(huì)對(duì)default 命名空間下的滿足條件的 Pod 生效。

下面介紹下 NetworkPolicy 中各字段的含義,并說明各字段省缺值及其含義,主要看 Spec 中的字段,
podSelector: 必填字段,Pod 的標(biāo)簽選擇器,表示該網(wǎng)絡(luò)策略作用于哪些 Pod。如果為空{}則表示選中本命名空間下所有 Pod。

policyTypes: 可選字段,字符串,策略規(guī)則類型, 表示該網(wǎng)絡(luò)策略中包含哪些類型的策略,可選為"Ingress", "Egress", 或 "Ingress,Egress"。未填時(shí),這個(gè)值依據(jù)下面的 ingress 和 egress 來定。如果該字段未設(shè)置且下面只出現(xiàn)了 ingress,則對(duì) egress 不做限制。如果填了這個(gè)值,同時(shí)后續(xù)沒有設(shè)定對(duì)應(yīng)的規(guī)則,則認(rèn)為設(shè)定的規(guī)則對(duì)應(yīng)的流量全部禁止。例如:

該規(guī)則就限制了所有 Pod 的出流量。

ingress: 可選字段,數(shù)組,入站規(guī)則?;ハ嚅g為或的關(guān)系,滿足其中一條則放行。

ports: 可選字段,數(shù)組,放行端口信息?;ハ嚅g為或的關(guān)系,如果為空表示端口不受約束,如果非空,則表示除了出現(xiàn)的端口放行,其他未指定的端口都禁止。

-port: 可選字段,數(shù)字,協(xié)議端口號(hào)。如果不寫,表示協(xié)議所有端口。
-protocol: 可選字段,字符串,協(xié)議。允許取值為 TCP,UDP,SCTP。省缺為 TCP。

from: 可選字段,數(shù)組,放行源地址信息。互相間為或的關(guān)系,如果為空表示不約束源地址,如果非空,則表示除了出現(xiàn)的源地址放行外,其他源地址都禁止。

-ipBlock: 可選字段,放行 ip 段。
cidr: 標(biāo)準(zhǔn) cidr,除了指定的cidr放行外其他都禁止。
except: 標(biāo)準(zhǔn) cidr 字符串?dāng)?shù)組,表示前面cidr 中的放行的 cidr 段需要再排除掉 except 中指定的。

-namespaceSelector: 可選字段,namespace 的標(biāo)簽選擇器,表示放行集群中的哪些命名空間中過來的流量。如果為空`{}`或未出現(xiàn)則表示選中所有命名空間。

-podSelector: 可選字段,Pod 的標(biāo)簽選擇器,表示放行哪些 Pod 過來的流量,默認(rèn)情況下從NetworkPolicy 同命名空間下的 Pod 中做篩選,如果前面設(shè)定了`namespaceSelector`則從符合條件的命名空間中的 Pod 中做篩選。如果為空`{}`則表示選中滿足`namespaceSelector` 條件的所有 Pod。

egress: 可選字段,數(shù)組,出站規(guī)則。互相間為或的關(guān)系,滿足其中一條就放行。

ports: 可選字段,數(shù)組,放行端口信息。互相間為或的關(guān)系,如果為空表示端口不受約束,如果非空,則表示除了出現(xiàn)的端口放行,其他未指定的端口都禁止。(詳細(xì)字段同 ingress 中的 ports)

to: 可選字段,數(shù)組,放行目的地址信息?;ハ嚅g為或的關(guān)系,如果為空表示不約束目的,如果非空,則表示除了出現(xiàn)的目的地址放行外,其他目的地址都禁止。(詳細(xì)字段同ingress 中的 from)

介紹完 Spec 中各字段的含義及其默認(rèn)行為后,做個(gè)簡(jiǎn)單的小結(jié),NetworkPolicy 定義了放行規(guī)則,規(guī)則間是或的關(guān)系,只要命中其中一條規(guī)則就認(rèn)為流量可以放行。

下面以一個(gè)kubernetes官網(wǎng)中的例子來回顧下前面的知識(shí)。

首先該規(guī)則指定了命名空間為 default, 選擇了其中所有包含 role=db 這個(gè) label 的 Pod,定義了入站流量規(guī)則與出站流量規(guī)則。

對(duì)于入站流量,放行源地址來自 cidr 172.17.0.0/16 除了 172.17.1.0/24 之外的流量,放行來自有project=myproject 這個(gè)label的namespace中的流量,放行 default 命名空間下有 label role=frontend 的 Pod 的流量,并限定這些流量只能訪問到 role=db 這個(gè) label 的 Pod 的 TCP 6379端口。

對(duì)于出站流量,只放行其訪問目的地址屬于 cidr 10.0.0.0/24 中,且端口為 TCP 5978的流量。

需要注意的是 NetworkPolicy 選中的 Pod 只能是與 NetworkPolicy 同處一個(gè) namespace 中的 Pod,因此對(duì)于有些規(guī)則可能需要在多個(gè)命名空間中分別設(shè)置?;蛘呤褂梅窃木W(wǎng)絡(luò)策略定義,例如 Calico 中的 GlobalNetworkPolicy。

NetworkPolicy 變更歷史

v1.6 以及以前的版本需要在 kube-apiserver 中開啟 extensions/v1beta1/networkpolicies;

v1.7 版本 Network Policy 已經(jīng) GA,API 版本為 networking.k8s.io/v1;

v1.8 版本新增 Egress 和 IPBlock 的支持;

附錄

推薦觀看Securing Cluster Networking with Network Policies - Ahmet Balkan, Google

一些常見的策略樣例ahmetb/kubernetes-network-policy-recipes

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/32979.html

相關(guān)文章

  • Kubernetes安全三步談:三種方法保護(hù)Kubernetes免受內(nèi)部威脅

    摘要:若企業(yè)想要保護(hù)集群不受內(nèi)部威脅無論是來自實(shí)際的惡意內(nèi)部威脅,還是僅僅是防止錯(cuò)誤或錯(cuò)誤編碼傳播時(shí),防御的手段非常少。不過所幸的是,有一些解決方案已經(jīng)著眼于保護(hù)集群免受未經(jīng)授權(quán)的內(nèi)部訪問。 這是關(guān)于Kubernetes安全系列三篇文章中的第二篇。在上篇文章中我們分享了如何確保企業(yè)的Kubernetes集群免受外部攻擊,這篇文章中我們將分享三種保護(hù)Kubernetes免受內(nèi)部威脅的方法,后續(xù)...

    ghnor 評(píng)論0 收藏0
  • Kubernetes 1.7:從完善容器編排功能到落地商業(yè)應(yīng)用新跨越!

    摘要:新功能版本增加了安全性有狀態(tài)的應(yīng)用程序和可擴(kuò)展性等功能。網(wǎng)絡(luò)已從升級(jí)到新的組。 ?根據(jù) Kubernetes Google Group 產(chǎn)品經(jīng)理 Aperna Sinha 和 Kubernetes Mirantis 項(xiàng)目經(jīng)理 Ihor Dvoretskyi 的說法,Kubernetes 1.7 中的 API aggregation 功能使用戶可以在運(yùn)行時(shí)添加自定義的 API 服務(wù)器,與...

    big_cat 評(píng)論0 收藏0
  • kubernetes network policy學(xué)習(xí)筆記

    摘要:不同的網(wǎng)絡(luò)實(shí)現(xiàn)原理等并不能統(tǒng)一地支持。描述信息選擇器,選定的所有的出入站流量要遵循本的約束策略類型。所有包含的中的可以與上述的端口建立連接所有下的包含的可以與上述的端口建立連接允許上述訪問網(wǎng)段為的目的的端口。但可以做到范圍的整體控制。 簡(jiǎn)介 network policy顧名思義就是對(duì)pod進(jìn)行網(wǎng)絡(luò)策略控制。 k8s本身并不支持,因?yàn)閗8s有許多種網(wǎng)絡(luò)的實(shí)現(xiàn)方式,企業(yè)內(nèi)部可以使用簡(jiǎn)單的f...

    wuyangnju 評(píng)論0 收藏0
  • 擁抱云原生,基于eBPF技術(shù)實(shí)現(xiàn)Serverless節(jié)點(diǎn)訪問K8S Service

    摘要:但事實(shí)是,并不完美,甚至存在嚴(yán)重的問題。容器產(chǎn)品擁抱正在改變?cè)圃鷳B(tài),未來容器云產(chǎn)品與容器產(chǎn)品將緊密結(jié)合業(yè)內(nèi)最新進(jìn)展,挖掘在網(wǎng)絡(luò),負(fù)載均衡,監(jiān)控等領(lǐng)域的應(yīng)用,為用戶提供更好的觀測(cè)定位和調(diào)優(yōu)能力。Serverless容器的服務(wù)發(fā)現(xiàn)2020年9月,UCloud上線了Serverless容器產(chǎn)品Cube,它具備了虛擬機(jī)級(jí)別的安全隔離、輕量化的系統(tǒng)占用、秒級(jí)的啟動(dòng)速度,高度自動(dòng)化的彈性伸縮,以及簡(jiǎn)...

    Tecode 評(píng)論0 收藏0
  • 應(yīng)用開發(fā)者必須了解Kubernetes網(wǎng)絡(luò)二三事

    摘要:在容器領(lǐng)域內(nèi),已毋庸置疑成為了容器編排和管理的社區(qū)標(biāo)準(zhǔn)??蛻舳藷o需連接到每個(gè)的,而是直接連接負(fù)載均衡器的地址。通過這樣的操作,使用持續(xù)交付和部署方法論的快速開發(fā)和部署周期將會(huì)成為常態(tài)。 在容器領(lǐng)域內(nèi),Kubernetes已毋庸置疑成為了容器編排和管理的社區(qū)標(biāo)準(zhǔn)。如果你希望你所搭建的應(yīng)用程序能充分利用多云(multi-cloud)的優(yōu)勢(shì),有一些與Kubernetes網(wǎng)絡(luò)相關(guān)的基本內(nèi)容是你...

    劉明 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<