国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

淺析 Kubernetes原生NetworkPolicy 網絡策略,讓更安全的容器運行環境唾手可得

jsdt / 2800人閱讀

摘要:本文將主要分析原生的網絡策略。筆者認為這個問題主要是因為使用者不了解網絡策略的省缺行為。可選字段,字符串,策略規則類型,表示該網絡策略中包含哪些類型的策略,可選為或。互相間為或的關系,滿足其中一條則放行。標準,除了指定的放行外其他都禁止。

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

什么是網絡策略

網絡策略(NetworkPolicy)是一種關于 Pod 間及 Pod 與其他網絡端點間所允許的通信規則的規范。NetworkPolicy 資源使用標簽選擇 Pod,并定義選定 Pod 所允許的通信規則。

k8s中的網絡策略由實現了CNI接口的網絡插件提供,網絡插件監聽集群中 NetworkPolicy 資源的創建/刪除/更新事件生成對應的規則來控制 Pod 的流量是否放行。

常見的支持 NetworkPolicy 的網絡插件有:

Calico

Cilium

Kube-router

Romana

Weave Net

默認情況下 Pod 間及 Pod 與其他網絡端點間的訪問是沒有限制的。

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


經常有人會問網絡策略要怎么寫,或者是這個網絡策略代表了什么含義。筆者認為這個問題主要是因為使用者不了解網絡策略的省缺行為。

NetworkPolicy 字段含義

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

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

policyTypes: 可選字段,字符串,策略規則類型, 表示該網絡策略中包含哪些類型的策略,可選為"Ingress", "Egress", 或 "Ingress,Egress"。未填時,這個值依據下面的 ingress 和 egress 來定。如果該字段未設置且下面只出現了 ingress,則對 egress 不做限制。如果填了這個值,同時后續沒有設定對應的規則,則認為設定的規則對應的流量全部禁止。例如:

該規則就限制了所有 Pod 的出流量。

ingress: 可選字段,數組,入站規則。互相間為或的關系,滿足其中一條則放行。

ports: 可選字段,數組,放行端口信息。互相間為或的關系,如果為空表示端口不受約束,如果非空,則表示除了出現的端口放行,其他未指定的端口都禁止。

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

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

-ipBlock: 可選字段,放行 ip 段。
cidr: 標準 cidr,除了指定的cidr放行外其他都禁止。
except: 標準 cidr 字符串數組,表示前面cidr 中的放行的 cidr 段需要再排除掉 except 中指定的。

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

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

egress: 可選字段,數組,出站規則。互相間為或的關系,滿足其中一條就放行。

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

to: 可選字段,數組,放行目的地址信息。互相間為或的關系,如果為空表示不約束目的,如果非空,則表示除了出現的目的地址放行外,其他目的地址都禁止。(詳細字段同ingress 中的 from)

介紹完 Spec 中各字段的含義及其默認行為后,做個簡單的小結,NetworkPolicy 定義了放行規則,規則間是或的關系,只要命中其中一條規則就認為流量可以放行。

下面以一個kubernetes官網中的例子來回顧下前面的知識。

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

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

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

需要注意的是 NetworkPolicy 選中的 Pod 只能是與 NetworkPolicy 同處一個 namespace 中的 Pod,因此對于有些規則可能需要在多個命名空間中分別設置。或者使用非原生的網絡策略定義,例如 Calico 中的 GlobalNetworkPolicy。

NetworkPolicy 變更歷史

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

v1.7 版本 Network Policy 已經 GA,API 版本為 networking.k8s.io/v1;

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

附錄

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32979.html

相關文章

  • Kubernetes安全三步談:三種方法保護Kubernetes免受內部威脅

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

    ghnor 評論0 收藏0
  • Kubernetes 1.7:從完善容器編排功能到落地商業應用新跨越!

    摘要:新功能版本增加了安全性有狀態的應用程序和可擴展性等功能。網絡已從升級到新的組。 ?根據 Kubernetes Google Group 產品經理 Aperna Sinha 和 Kubernetes Mirantis 項目經理 Ihor Dvoretskyi 的說法,Kubernetes 1.7 中的 API aggregation 功能使用戶可以在運行時添加自定義的 API 服務器,與...

    big_cat 評論0 收藏0
  • kubernetes network policy學習筆記

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

    wuyangnju 評論0 收藏0
  • 擁抱云原生,基于eBPF技術實現Serverless節點訪問K8S Service

    摘要:但事實是,并不完美,甚至存在嚴重的問題。容器產品擁抱正在改變云原生生態,未來容器云產品與容器產品將緊密結合業內最新進展,挖掘在網絡,負載均衡,監控等領域的應用,為用戶提供更好的觀測定位和調優能力。Serverless容器的服務發現2020年9月,UCloud上線了Serverless容器產品Cube,它具備了虛擬機級別的安全隔離、輕量化的系統占用、秒級的啟動速度,高度自動化的彈性伸縮,以及簡...

    Tecode 評論0 收藏0
  • 應用開發者必須了解Kubernetes網絡二三事

    摘要:在容器領域內,已毋庸置疑成為了容器編排和管理的社區標準。客戶端無需連接到每個的,而是直接連接負載均衡器的地址。通過這樣的操作,使用持續交付和部署方法論的快速開發和部署周期將會成為常態。 在容器領域內,Kubernetes已毋庸置疑成為了容器編排和管理的社區標準。如果你希望你所搭建的應用程序能充分利用多云(multi-cloud)的優勢,有一些與Kubernetes網絡相關的基本內容是你...

    劉明 評論0 收藏0

發表評論

0條評論

jsdt

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<