k8s-NetworkPolicy

在 Kubernetes 中,NetworkPolicy 是一種資源對象,用于定義 Pod 之間的網絡通信策略。它允許你控制哪些 Pod 可以相互通信,以及如何通信。通過使用 NetworkPolicy,可以實現更細粒度的網絡訪問控制,增強集群的安全性。
1.NetworkPolicy 的作用
NetworkPolicy 主要用于以下場景:
限制 Pod 之間的通信:指定哪些 Pod 可以相互通信,哪些不能通信。
控制入站和出站流量:定義哪些流量可以進入 Pod,哪些流量可以從 Pod 發出。
基于標簽的策略:通過 Pod 的標簽選擇器來定義策略,使得策略的管理更加靈活。

2.NetworkPolicy 的工作原理
NetworkPolicy 本身并不直接實現網絡策略,而是依賴于支持網絡策略的網絡插件(如 Calico、Cilium、Weave 等)。這些插件會根據 NetworkPolicy 的定義,動態地配置網絡規則,從而實現流量的控制。

3.NetworkPolicy 的基本配置
NetworkPolicy 的配置文件是一個 YAML 文件,定義了策略的規則。以下是一個簡單的例子:

apiVersion: networking.k8s.io/v1   # 指定API版本
kind: NetworkPolicy				   # 指定資源類型為 NetworkPolicy。
metadata:						   # 定義了策略的名稱和命名空間。name: allow-specific-podsnamespace: default
spec:podSelector:    # 定義了哪些 Pod 受此策略影響。在這個例子中,所有帶有 role: frontend 標簽的 Pod 會受到此策略的限制。matchLabels:role: frontendpolicyTypes:  # 定義了策略的類型,可以是 Ingress(入站流量)、Egress(出站流量)或兩者。- Ingress- Egressingress:   # 定義了允許進入 Pod 的流量規則。在這個例子中,只有帶有 role: backend 標簽的 Pod 可以向帶有 role: frontend 標簽的 Pod 發送流量。- from:- podSelector:matchLabels:role: backendegress: # 定義了允許從 Pod 發出的流量規則。在這個例子中,帶有 role: frontend 標簽的 Pod 只能向帶有 role: backend 標簽的 Pod 發送流量。- to:- podSelector:matchLabels:role: backend

4.NetworkPolicy 的主要字段
podSelector:選擇受此策略影響的 Pod。如果沒有指定,則默認選擇命名空間中的所有 Pod。
policyTypes:定義策略的類型,可以是 Ingress、Egress 或兩者。
ingress:定義入站流量的規則。
from:定義允許流量的來源。
podSelector:基于 Pod 的標簽選擇器。
namespaceSelector:基于命名空間的標簽選擇器。
ipBlock:基于 IP 范圍。
egress:定義出站流量的規則。
to:定義允許流量的目的地。
podSelector:基于 Pod 的標簽選擇器。
namespaceSelector:基于命名空間的標簽選擇器。
ipBlock:基于 IP 范圍。
ports:定義允許的端口和協議。如果沒有指定,則默認允許所有端口。

5.示例 限制 Pod 之間的通信

假設我們有兩個服務:
frontend:運行前端應用,帶有標簽 role: frontend。
backend:運行后端應用,帶有標簽 role: backend。

我們希望:
frontend 只能從 backend 接收流量。
frontend 只能向 backend 發送流量。

創建 Pod

apiVersion: v1
kind: Pod
metadata:name: frontendlabels:role: frontend
spec:containers:- name: frontendimage: my-frontend-image
---
apiVersion: v1
kind: Pod
metadata:name: backendlabels:role: backend
spec:containers:- name: backendimage: my-backend-image

創建 NetworkPolicy

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-specific-podsnamespace: default
spec:podSelector:matchLabels:role: frontendpolicyTypes:- Ingress- Egressingress:- from:- podSelector:matchLabels:role: backendegress:- to:- podSelector:matchLabels:role: backend

6.注意事項
默認策略:如果沒有定義任何 NetworkPolicy,則默認允許所有 Pod 之間的通信。
網絡插件支持:NetworkPolicy 的實現依賴于網絡插件。確保你的 Kubernetes 集群使用了支持 NetworkPolicy 的網絡插件(如 Calico、Cilium 等)。
命名空間隔離:NetworkPolicy 僅在定義它的命名空間內生效。如果需要跨命名空間的策略,需要使用 namespaceSelector。

7.示例:限制外部流量
假設我們希望限制外部流量只能訪問特定的 Pod,可以使用以下 NetworkPolicy:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-external-trafficnamespace: default
spec:podSelector:matchLabels:role: frontendpolicyTypes:- Ingressingress:- from:- ipBlock:cidr: 192.168.0.0/16

在這個例子中,只有來自 192.168.0.0/16 網段的外部流量可以訪問帶有 role: frontend 標簽的 Pod。

8.示例:限制特定端口
假設我們希望限制 Pod 只能通過特定端口通信,可以使用以下 NetworkPolicy:

apiVersion: networking.k8s.io/v1  # 指定了 Kubernetes API 的版本
kind: NetworkPolicy			# :指定了資源類型
metadata:name: allow-specific-ports	# 定義了這個網絡策略的名稱namespace: default		# 定義了這個網絡策略所在的命名空間
spec:podSelector:	# 定義了哪些 Pod 受此策略影響matchLabels:role: frontendpolicyTypes:	# :定義了策略的類型- Ingress- Egressingress:	# 定義了入站流量的規則。- from:	# 定義了允許流量的來源。- podSelector:	# 指定了流量來源的 Pod。這里通過 matchLabels 指定了帶有 role: backend 標簽的 Pod。matchLabels:role: backendports:	# 定義了允許的端口和協議。- protocol: TCP	# 指定了協議類型,這里是 TCP。port: 80	# 指定了端口號,這里是 80。# 解釋:這個規則表示:只有帶有 role: backend 標簽的 Pod 可以通過 TCP 端口 80 向帶有 role: frontend 標簽的 Pod 發送流量。egress: # 定義了出站流量的規則。- to:	# 定義了允許流量的目的地。- podSelector:	# 指定了流量目的地的 Pod。這里通過 matchLabels 指定了帶有 role: backend 標簽的 Pod。matchLabels:role: backendports: # 定義了允許的端口和協議。- protocol: TCP # 指定了協議類型,這里是 TCP。port: 80 # 指定了端口號,這里是 80。
# 這個規則表示:帶有 role: frontend 標簽的 Pod 只能通過 TCP 端口 80 向帶有 role: backend 標簽的 Pod 發送流量。

在這個例子中,帶有 role: frontend 標簽的 Pod 只能通過 TCP 端口 80 與帶有 role: backend 標簽的 Pod 通信。

總結
NetworkPolicy 是 Kubernetes 中用于控制 Pod 之間網絡通信的強大工具。通過合理配置 NetworkPolicy,可以實現細粒度的網絡訪問控制,增強集群的安全性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82253.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82253.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82253.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LAN(局域網)和WAN(廣域網)

你的問題非常清晰!我來用一個直觀的比喻實際拓撲圖幫你徹底理解LAN(局域網)和WAN(廣域網)如何協同工作,以及路由器在其中的位置。你可以把整個網絡想象成一座城市: 1. 比喻:城市交通…

idea 插件開發自動發布到 nexus 私服中(腳本實例)

如下腳本內容為 idea 插件開發項目中的 build.gradle.kts 文件示例,其中自定了 updatePluginsXmlToNexus 和 uploadPluginToNexus 兩個任務,一個用來自動修改 nexus 中的配置文件,一個用來自動將當前插件打包后的 zip 文件上傳到 nexus 私服中…

SpringBoot-11-基于注解和XML方式的SpringBoot應用場景對比

文章目錄 1 基于注解的方式1.1 @Mapper1.2 @select1.3 @insert1.4 @update1.5 @delete2 基于XML的方式2.1 namespace2.2 resultMap2.3 select2.4 insert2.5 update2.6 delete3 service和controller3.1 service3.2 controller4 注解和xml的選擇如果SQL簡單且項目規模較小,推薦使…

C++復習核心精華

一、內存管理與智能指針 內存管理是C區別于其他高級語言的關鍵特性,掌握好它就掌握了C的靈魂。 1. 原始指針與內存泄漏 先來看看傳統C的內存管理方式: void oldWay() {int* p new int(42); // 分配內存// 如果這里發生異常或提前return&#xff0c…

期貨反向跟單軟件—提高盤手杠桿的方式及剖析

在期貨反向跟單領域,期貨跟單軟件對盤手杠桿的調節,是整個策略運作的核心環節之一。其背后蘊含著科學的金融邏輯。? 期貨跟單軟件提高盤手杠桿主要通過兩種方式。第一種是降低期貨保證金。在盤手資金總量固定的情況下,保證金降低&#xff0…

【計算機網絡】基于UDP進行socket編程——實現服務端與客戶端業務

🔥個人主頁🔥:孤寂大仙V 🌈收錄專欄🌈:Linux 🌹往期回顧🌹: 【Linux筆記】——網絡基礎 🔖流水不爭,爭的是滔滔不息 一、UDPsocket編程UDPsocket編…

ae卡通打架煙霧特效

1、創建一個合成(合成1),右鍵創建形狀圖層,使用橢圓工具,長按shift鍵拖動鼠標左鍵畫出圓形,同時按ctrlalthome三個鍵使圓形中心錨點對齊圓心,關閉描邊,圓形圖層填充白色。 2、選擇形…

UE5 Va Res發送請求、處理請求、json使用

文章目錄 介紹發送一個Get請求發送Post請求設置請求頭請求體帶添json發送請求完整的發送藍圖 處理收到的數據常用的json處理節點 介紹 UE5 自帶的Http插件,插件內自帶json解析功能 發送一個Get請求 只能寫在事件圖表里 發送Post請求 只能寫在事件圖表里 設置…

SQL 結構化模型設計與現代技術融合深度解讀

摘要 本文系統展示了基于 JSON Schema 的 SQL 結構化模型設計,包括通用定義、四大基本操作(SELECT、INSERT、UPDATE、DELETE)的模型規范,以及面向現代場景的設計擴展。重點結合數據權限控制、樂觀鎖并發控制、表單自動化、自定義…

el-dialog 組件 多層嵌套 被遮罩問題

<el-dialog title"提示" :visible.sync"dialogBindUserVisible" width"30%" append-to-body :before-close"handleClose"> <span>這是一段信息</span> <span slot"footer" class"dialog-footer&q…

【KWDB 2025 創作者計劃】_KWDB時序數據庫特性及跨模查詢

一、概述 數據庫的類型多種多樣&#xff0c;關系型數據庫、時序型數據庫、非關系型數據庫、內存數據庫、分布式數據庫、圖數據庫等等&#xff0c;每種類型都有其特定的使用場景和優勢&#xff0c;KaiwuDB 是一款面向 AIoT 場景的分布式、多模融合、支持原生 AI 的數據庫…

學習心得(12-13)HTML 是什么 abort函數and自定義異常

一. abort函數 將后端的數據給到前端 二. 自定義異常 要結合abort函數使用 1.編寫的時候都在abort的函數這個文件里面 錯誤信息在前端頁面的展示&#xff1a; 如果想要在出現異常的時候返回一個頁面&#xff1a; 1. 新建一個HTML文件 例如命名為404 2.將圖庫里的圖片拖入…

理解全景圖像拼接

1 3D到2D透視投影 三維空間上點 p 投影到二維空間 q 有兩種方式&#xff1a;1&#xff09;正交投影&#xff0c;2&#xff09;透視投影。 正交投影直接舍去 z 軸信息&#xff0c;該模型僅在遠心鏡頭上是合理的&#xff0c;或者對于物體深度遠小于其到攝像機距離時的近似模型。…

Linux基本指令篇 —— whoami指令

whoami 是 Linux 和 Unix 系統中一個簡單但實用的命令&#xff0c;全稱 Who Am I&#xff08;我是誰&#xff09;。它的功能是顯示當前登錄用戶的用戶名。以下是關于 whoami 的詳細解析&#xff1a; 目錄 1. 基本用法 2. 命令特點 3. 實際應用場景 場景 1&#xff1a;腳本中…

華為OD機試真題——仿LISP運算(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳實現

2025 B卷 200分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析; 本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分…

創建dummy

訪客_dc1fc4 class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int left0;int right0;int n nums.size(); int sum0;int ans100001; for(right0;right<n;right) { sumnums[right]; //每次更新右端點之后&#xff0c;立即向右移動…

面向惡劣條件的道路交通目標檢測----大創自用(當然你也可以在里面學到很多東西)

全部內容梳理 目標檢測的兩個任務&#xff1a; 預測標簽 邊界框 語義分割 實力分割 一個是類別 一個是實例級別 分類任務把每個圖像當作一張圖片看待 所有解決方法是先生成候選區域 再進行分類 置信度&#xff1a; 包括對類別和邊界框預測的自信程度 輸出分類和IOU分數的…

需求管理工具使用不當,如何優化?

要優化需求管理工具的使用&#xff0c;需從選擇合適工具、規范使用流程、加強用戶培訓、統一數據結構、定期審查與優化使用配置五個方面著手。其中&#xff0c;選擇合適工具是前提。錯誤的工具選擇往往會導致項目溝通效率低、需求追蹤失效甚至造成交付物偏離客戶預期。因此&…

openwrt虛擬機安裝調試

分類 lienol lean immortalwrt 一、獲取固件 &#xff08;1&#xff09;下載地址 1.官網構建下載 OpenWrt Firmware Selector 官網 OpenWrt Firmware Selector 2.第三方構建網站 ImmortalWrt Firmware Selector ImmortalWrt Firmware Selector 3.第三方構建下載 ht…

Apache OFBiz 17.12.01 的遠程命令執行漏洞 -Java 反序列化 + XML-RPC 請求機制

目錄 漏洞原理 &#x1f3af; 一、漏洞背景&#xff08;CVE-2020-9496&#xff09; ?? 二、攻擊原理簡述 &#x1f9f1; 三、完整攻擊流程步驟詳解 &#x1f50e; 1. 信息收集 &#x1f6e0;? 2. 工具準備 &#x1f9ea; 3. 構造初始 payload&#xff1a;下載惡意腳本…