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

k8s中的NetworkPolicy使用詳解

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

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

核心作用

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

工作原理

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

其核心邏輯是:

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

關鍵概念

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

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

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

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

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

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

默認策略

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

基本示例

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

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

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

2. 允許特定 Pod 訪問

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

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

總結

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

相關文章

  • 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)導致400錯誤的排查過程,發(fā)現(xiàn)proxy_set_header Host配置引發(fā)Host頭攜帶Nginx域名,導致請求反復轉發(fā),最終X-Forwarded-For頭溢出,解決方法是移除該配置
    2025-07-07
  • k8s安裝calico時如何選擇網卡問題

    k8s安裝calico時如何選擇網卡問題

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

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

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

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

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

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

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

    kubernetes存儲之GlusterFS集群詳解

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

    淺析kubernetes的控制器和標簽

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

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

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

    K8s?EphemeralContainer臨時容器解讀

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

最新評論

渝北区| 渝北区| 固原市| 银川市| 南城县| 雷波县| 榆中县| 汾阳市| 宿松县| 临邑县| 连云港市| 新疆| 大港区| 南郑县| 民勤县| 泸州市| 资兴市| 东安县| 额尔古纳市| 柳河县| 同德县| 汨罗市| 铜陵市| 个旧市| 江西省| 南投县| 衡阳市| 泰和县| 囊谦县| 赣榆县| 田东县| 聂拉木县| 融水| 廊坊市| 青冈县| 蒙城县| 靖安县| 浮山县| 政和县| 高唐县| 广昌县|