日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

k8s学习-网络策略NetworkPolicy(概念、模版、创建、删除等)

發布時間:2023/12/16 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s学习-网络策略NetworkPolicy(概念、模版、创建、删除等) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 概念
  • 前置條件
  • k8s自帶的隔離
  • 模版
  • 實戰
    • 創建
    • 刪除
  • 參考


概念

如果你希望在 IP 地址或端口層面(OSI 第 3 層或第 4 層)控制網絡流量, 則你可以考慮為集群中特定應用使用 Kubernetes 網絡策略(NetworkPolicy)。
NetworkPolicy 是一種以應用為中心的結構,允許你設置如何允許 Pod 與網絡上的各類網絡“實體” (我們這里使用實體以避免過度使用諸如“端點”和“服務”這類常用術語, 這些術語在 Kubernetes 中有特定含義)通信。 NetworkPolicies 適用于一端或兩端與 Pod 的連接,與其他連接無關。

前置條件

網絡策略通過網絡插件(本文的k8s集群安裝時安裝了calico)來實現。 要使用網絡策略,你必須使用支持 NetworkPolicy 的網絡解決方案。

k8s自帶的隔離

k8s的命名空間是沒有強制隔離性的,訪問service時加上.namespace的名稱即可。
k8s的Pod是沒有隔離行的,任意命名空間下的Pod可以訪問任意命名空間下的Pod。

模版

apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata:name: test-network-policynamespace: default spec:podSelector:matchLabels:role: dbpolicyTypes:- Ingress- Egressingress:- from:- ipBlock:cidr: 172.17.0.0/16except:- 172.17.1.0/24- namespaceSelector:matchLabels:project: myproject- podSelector:matchLabels:role: frontendports:- protocol: TCPport: 6379egress:- to:- ipBlock:cidr: 10.0.0.0/24ports:- protocol: TCPport: 5978

以上模版的含義如下:
1.隔離 “default” 名字空間下 “role=db” 的 Pod 。

2.(Ingress 規則)允許以下 Pod 連接到 “default” 名字空間下的帶有 “role=db” 標簽的所有 Pod 的 6379 TCP 端口:

  • “default” 名字空間下帶有 “role=frontend” 標簽的所有 Pod
  • 帶有 "project=myproject"標簽的所有名字空間中的 Pod
  • IP 地址范圍為 172.17.0.0–172.17.0.255 和172.17.2.0–172.17.255.255 (即,除了 172.17.1.0/24 之外的所有 172.17.0.0/16)

3.(Egress 規則)允許 “default” 命名空間中任何帶有標簽 “role=db” 的 Pod 到 CIDR 10.0.0.0/24 下 5978 TCP 端口的連接。

選擇器有以下四個:

  • podSelector:此選擇器將在與 NetworkPolicy 相同的名字空間中選擇特定的
    Pod,應將其允許作為入站流量來源或出站流量目的地。

  • namespaceSelector:此選擇器將選擇特定的名字空間,應將所有 Pod 用作其入站流量來源或出站流量目的地。

  • namespaceSelectorpodSelector:一個指定 namespaceSelector 和 podSelector
    的 to/from 條目選擇特定名字空間中的特定 Pod。

  • ipBlock:此選擇器將選擇特定的 IP CIDR 范圍以用作入站流量來源或出站流量目的地。 這些應該是集群外部 IP,因為 Pod IP 存在時間短暫的且隨機產生。

在設計一個 Network Policy 的時候要做哪些事情?

  • 第一件事是控制對象,就像這個實例里面 spec 的部分。spec 里面通過 podSelector 或者 namespace 的selector,可以選擇做特定的一組 pod 來接受我們的控制;
  • 第二個就是對流向考慮清楚,需要控制入方向還是出方向?還是兩個方向都要控制?
  • 第三個,如果要對選擇出來的方向加上控制對象來對它進行描述,具體哪一些 stream可以放進來,或者放出去?類比這個流特征的五元組,可以通過一些選擇器來決定哪一些可以作為我的遠端,這是對象的選擇;也可以通過 IPBlock這種機制來得到對哪些 IP 是可以放行的;最后就是哪些協議或哪些端口。其實流特征綜合起來就是一個五元組,會把特定的能夠接受的流選擇出來 。

實戰

創建

創建一個名字為all-port-from-namespace的NetworkPolicy。
這個NetworkPolicy允許internal命名空間下的Pod訪問該命名空間下的80端口。
不允許不是internal命令空間的下的Pod訪問
不允許訪問沒有監聽80端口的Pod。

all-port-from-namespace.yaml如下:

apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata:name: all-port-from-namespacenamespace: internal spec:podSelector: {}policyTypes:- Ingressingress:- from:- podSelector: {}ports:- port: 80protocal: TCP

創建NetworkPolicy all-port-from-namespace

kubectl create -f all-port-from-namespace.yaml


搭建詳情請查看k8s學習-CKA真題-網絡策略NetworkPolicy

刪除

kubectl delete networkpolicy all-port-from-namespace -n internal

參考

k8s - 網絡策略
CNCF x 阿里云 網絡概念及策略控制

總結

以上是生活随笔為你收集整理的k8s学习-网络策略NetworkPolicy(概念、模版、创建、删除等)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。