您好,登錄后才能下訂單哦!
這篇文章主要講解了“Kubernetes網絡策略是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Kubernetes網絡策略是什么”吧!
網絡策略NetworkPolicy 取代了你所知道的數據中心環境中的防火墻設備 —— 如吊艙Pod之于計算實例、網絡插件之于路由器和交換機,以及卷之于存儲區域網絡(SAN)。
默認情況下,Kubernetes 網絡策略允許 吊艙Pod 從任何地方接收流量。如果你不擔心吊艙的安全性,那么這可能沒問題。但是,如果你正在運行關鍵工作負載,則需要保護吊艙。控制集群內的流量(包括入口和出口流量),可以通過網絡策略來實現。
要啟用網絡策略,你需要一個支持網絡策略的網絡插件。否則,你應用的任何規則都將變得毫無用處。
Kubernetes.io 上列出了不同的網絡插件:
CNI 插件:遵循
容器網絡接口Container Network Interface
(CNI)規范,旨在實現互操作性。
Kubernetes 插件:使用橋接器和主機本地 CNI 插件實現基本的 cbr0
。
要應用網絡策略,你需要一個工作中的 Kubernetes 集群,并有支持網絡策略的網絡插件。
但首先,你需要了解如何在 Kubernetes 的環境使用網絡策略。Kubernetes 網絡策略允許 吊艙 從任何地方接收流量。這并不是理想情況。為了吊艙安全,你必須了解吊艙是可以在 Kubernetes 架構內進行通信的端點。
1、使用 podSelector
進行吊艙間的通信:
- namespaceSelector: matchLabels: project: myproject
2、使用 namespaceSelector
和/或 podSelector
和 namespaceSelector
的組合進行命名空間之間的通信和命名空間到吊艙的通信。:
- namespaceSelector: matchLabels: project: myproject - podSelector: matchLabels: role: frontend
3、對于吊艙的 IP 塊通信,使用 ipBlock
定義哪些 IP CIDR 塊決定源和目的。
- ipBlock: cidr: 172.17.0.0/16 except: - 172.17.1.0/24
注意吊艙、命名空間和基于 IP 的策略之間的區別。對于基于吊艙和命名空間的網絡策略,使用選擇器來控制流量,而對基于 IP 的網絡策略,使用 IP 塊(CIDR 范圍)來定義控制。
把它們放在一起,一個網絡策略應如下所示:
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: test-network-policy namespace: defaultspec: podSelector: matchLabels: app: backend policyTypes: - Ingress - Egress ingress: - from: - ipBlock: cidr: 172.17.0.0/16 except: - 192.168.1.0/24 - namespaceSelector: matchLabels: project: myproject - podSelector: matchLabels: role: frontend ports: - protocol: TCP port: 6379 egress: - to: - ipBlock: cidr: 10.0.0.0/24 ports: - protocol: TCP port: 5978
參考上面的網絡策略,請注意 spec
部分。在此部分下,帶有標簽 app=backend
的 podSelector
是我們的網絡策略的目標。簡而言之,網絡策略保護給定命名空間內稱為 backend
的應用程序。
此部分也有 policyTypes
定義。此字段指示給定策略是否適用于選定吊艙的入口流量、選定吊艙的出口流量,或兩者皆有。
spec: podSelector: matchLabels: app: backend policyTypes: - Ingress - Egress
現在,請看 Ingress
(入口)和 Egress
(出口)部分。該定義規定了網絡策略的控制。
首先,檢查 ingress from
部分。
此實例中,網絡策略允許從以下位置進行吊艙連接:
ipBlock
namespaceSelector
myproject
: 允許來自此命名空間并具有相同標簽 project=myproject 的所有吊艙。podSelector
frontend
: 允許與標簽 role=frontend
匹配的吊艙。ingress: - from: - ipBlock: cidr: 172.17.0.0/16 except: - 192.168.1.0/24 - namespaceSelector: matchLabels: project: myproject - podSelector: matchLabels: role: frontend
現在,檢查 egress to
部分。這決定了從吊艙出去的連接:
ipBlock
egress: - to: - ipBlock: cidr: 10.0.0.0/24 ports: - protocol: TCP port: 5978
僅靠網絡策略無法完全保護你的 Kubernetes 集群。你可以使用操作系統組件或 7 層網絡技術來克服已知限制。你需要記住,網絡策略只能解決 IP 地址和端口級別的安全問題 —— 即開放系統互聯(OSI)中的第 3 層或第 4 層。
為了解決網絡策略無法處理的安全要求,你需要使用其它安全解決方案。以下是你需要知道的一些 用例,在這些用例中,網絡策略需要其他技術的增強。
感謝各位的閱讀,以上就是“Kubernetes網絡策略是什么”的內容了,經過本文的學習后,相信大家對Kubernetes網絡策略是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。