最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

k8s中的NetworkPolicy使用詳解

 更新時間:2025年10月14日 09:37:36   作者:火星MARK  
這篇文章主要介紹了k8s中的NetworkPolicy使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

在 Kubernetes (k8s) 中,NetworkPolicy 是一種用于控制 Pod 之間網(wǎng)絡(luò)流量的資源對象,它基于 Pod 標(biāo)簽(Labels)和命名空間(namespace)來定義網(wǎng)絡(luò)訪問規(guī)則,實現(xiàn)了對 Pod 進(jìn)出流量的精細(xì)化控制。

核心作用

  • 隔離網(wǎng)絡(luò)流量:默認(rèn)情況下,k8s 集群中所有 Pod 之間可以自由通信,NetworkPolicy 可限制這種通信,只允許符合規(guī)則的流量通過。
  • 定義訪問策略:通過規(guī)則指定 “哪些 Pod 可以被誰訪問” 或 “哪些 Pod 可以訪問誰”。
  • 增強(qiáng)安全性:遵循最小權(quán)限原則,只開放必要的網(wǎng)絡(luò)訪問,減少攻擊面。

工作原理

NetworkPolicy 依賴 網(wǎng)絡(luò)插件(CNI) 實現(xiàn)(如 Calico、Cilium、Weave Net 等),不同插件對策略的支持可能存在差異。

其核心邏輯是:

  1. 基于 Pod 標(biāo)簽和命名空間篩選目標(biāo) Pod(策略作用的對象)。
  2. 對目標(biāo) Pod 的入站(Ingress)和出站(Egress)流量定義允許 / 拒絕規(guī)則。
  3. 規(guī)則匹配的維度包括:源 / 目標(biāo) Pod 標(biāo)簽、命名空間標(biāo)簽、IP 地址段、端口等。

關(guān)鍵概念

Pod 選擇器(podSelector)用于指定策略作用于哪些 Pod(通過標(biāo)簽匹配)。若為空,則匹配命名空間內(nèi)所有 Pod。

命名空間選擇器(namespaceSelector)用于匹配特定命名空間(通過標(biāo)簽),常與 podSelector 結(jié)合使用,限定跨命名空間的流量。

入站規(guī)則(Ingress)控制流入目標(biāo) Pod 的流量,可定義:

  • 允許的源(來自哪些 Pod / 命名空間 / IP)。
  • 允許的端口和協(xié)議(TCP/UDP/SCTP)。

出站規(guī)則(Egress)控制從目標(biāo) Pod 流出的流量,可定義:

  • 允許的目標(biāo)(到哪些 Pod / 命名空間 / IP)。
  • 允許的端口和協(xié)議。

默認(rèn)策略

  • 若未定義任何 NetworkPolicy,所有流量默認(rèn)允許。
  • 若定義了策略,未被規(guī)則允許的流量將被默認(rèn)拒絕。

基本示例

1. 拒絕所有入站流量(默認(rèn)拒絕)

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
  namespace: default
spec:
  podSelector: {}  # 匹配命名空間內(nèi)所有 Pod
  policyTypes:
  - Ingress  # 只控制入站流量

該策略會拒絕 default 命名空間內(nèi)所有 Pod 的入站流量(無任何允許規(guī)則)。

2. 允許特定 Pod 訪問

假設(shè)有標(biāo)簽為 app: frontend 的 Pod 需要訪問標(biāo)簽為 app: backend 的 Pod(端口 8080):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: backend-allow-frontend
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend  # 策略作用于 backend Pod
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend  # 允許 frontend Pod 訪問
    ports:
    - protocol: TCP
      port: 8080  # 只允許 8080 端口

3. 允許跨命名空間訪問

允許 prod 命名空間(標(biāo)簽 env: prod)中的 Pod 訪問 default 命名空間中 app: db 的 Pod(端口 5432):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: db-allow-prod
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: db
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          env: prod  # 匹配 prod 命名空間
    ports:
    - protocol: TCP
      port: 5432

4. 控制出站流量

限制 app: backend 的 Pod 只能訪問 app: db 的 Pod(端口 5432)和外部 IP 段 10.0.0.0/24

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: backend-egress-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: db
    ports:
    - protocol: TCP
      port: 5432
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24  # 允許訪問該 IP 段

注意事項

  1. 順序無關(guān):NetworkPolicy 規(guī)則沒有優(yōu)先級,只要有一條規(guī)則匹配,流量就會被允許。
  2. 命名空間隔離:策略僅作用于所在命名空間的 Pod,跨命名空間需通過 namespaceSelector 配置。
  3. 狀態(tài)性:部分網(wǎng)絡(luò)插件(如 Calico)支持基于連接狀態(tài)的規(guī)則(如允許已建立的連接)。
  4. 默認(rèn)策略建議:生產(chǎn)環(huán)境中通常先配置 “默認(rèn)拒絕所有流量”,再按需開放必要規(guī)則,即 “白名單模式”。

通過 NetworkPolicy,Kubernetes 實現(xiàn)了 Pod 級別的網(wǎng)絡(luò)隔離,是構(gòu)建安全集群網(wǎng)絡(luò)的核心工具之一。實際使用時需結(jié)合具體網(wǎng)絡(luò)插件的特性進(jìn)行配置。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • StatefulSet的每個Pod單獨創(chuàng)建Service實踐

    StatefulSet的每個Pod單獨創(chuàng)建Service實踐

    本文介紹了如何為StatefulSet的每個Pod創(chuàng)建獨立的Service,并提供了一個示例腳本,以批量生成Service定義,通過這種方式,可以實現(xiàn)從集群外部訪問每個Pod的功能,并且可以根據(jù)需要配置不同的Service類型(如NodePort、LoadBalancer、ClusterIP+Ingress等)
    2026-01-01
  • K8S下http請求在ingress和nginx間無限循環(huán)的問題及解決

    K8S下http請求在ingress和nginx間無限循環(huán)的問題及解決

    文章描述了UAT環(huán)境中因Nginx與IngressController代理循環(huán)導(dǎo)致400錯誤的排查過程,發(fā)現(xiàn)proxy_set_header Host配置引發(fā)Host頭攜帶Nginx域名,導(dǎo)致請求反復(fù)轉(zhuǎn)發(fā),最終X-Forwarded-For頭溢出,解決方法是移除該配置
    2025-07-07
  • k8s安裝calico時如何選擇網(wǎng)卡問題

    k8s安裝calico時如何選擇網(wǎng)卡問題

    這篇文章主要介紹了k8s安裝calico時如何選擇網(wǎng)卡問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 使用sealos快速搭建K8s集群環(huán)境的過程

    使用sealos快速搭建K8s集群環(huán)境的過程

    這篇文章主要介紹了使用sealos快速搭建K8s集群環(huán)境,主要包括sealos安裝方法,虛擬機(jī)設(shè)置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • 玩客云安裝青龍面板實現(xiàn)京東簽到薅羊毛功能

    玩客云安裝青龍面板實現(xiàn)京東簽到薅羊毛功能

    這篇文章主要介紹了玩客云安裝青龍面板實現(xiàn)京東簽到薅羊毛,本人準(zhǔn)備的服務(wù)器就是玩客云,只需運行一些常用的?docker?容器就行,需要的朋友可以參考下
    2022-05-05
  • K8S集群需要開放的端口說明介紹

    K8S集群需要開放的端口說明介紹

    這篇文章主要介紹了K8S集群需要開放的端口說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • kubernetes存儲之GlusterFS集群詳解

    kubernetes存儲之GlusterFS集群詳解

    最近工作中用到了GlusterFS作為Kubernetes的存儲,這篇文章主要給大家介紹了關(guān)于kubernetes存儲之GlusterFS集群的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 淺析kubernetes的控制器和標(biāo)簽

    淺析kubernetes的控制器和標(biāo)簽

    這篇文章主要介紹了kubernetes的控制器和標(biāo)簽的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用k8s,感興趣的朋友可以了解下
    2021-04-04
  • K8S的dashboard使用token登錄的操作流程

    K8S的dashboard使用token登錄的操作流程

    Dashboard 支持 Kubeconfig 和 Token 兩種認(rèn)證方式,這里測試 Token 認(rèn)證方式登錄,本文介紹K8S的dashboard如何使用token登錄,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • K8s?EphemeralContainer臨時容器解讀

    K8s?EphemeralContainer臨時容器解讀

    Kubernetes臨時容器用于調(diào)試無shell容器,通過shareProcessNamespace參數(shù)實現(xiàn)安全登錄與故障排查,排查后可刪除,版本1.25及以上默認(rèn)啟用,需使用預(yù)裝debug工具的鏡像(如busybox)
    2025-08-08

最新評論

石狮市| 逊克县| 玛多县| 田东县| 博兴县| 电白县| 塔城市| 盐山县| 桐庐县| 广元市| 肃南| 建德市| 双流县| 靖江市| 石屏县| 扎兰屯市| 渭南市| 扶风县| 沙田区| 永兴县| 南陵县| 法库县| 奉节县| 井研县| 谷城县| 普兰店市| 大田县| 大石桥市| 聂荣县| 宁阳县| 阿城市| 泾川县| 邯郸市| 丹棱县| 大洼县| 祁阳县| 安泽县| 潜山县| 边坝县| 万安县| 泸州市|