亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解k8s?NetworkPolicy?網(wǎng)絡(luò)策略是怎么樣的

 更新時間:2023年04月12日 09:41:07   作者:路由器沒有路  
這篇文章主要為大家介紹了k8s?NetworkPolicy?網(wǎng)絡(luò)策略是怎么樣的深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

隨著微服務(wù)的流行,越來越多的云服務(wù)平臺需要大量模塊之間的網(wǎng)絡(luò)調(diào)用。

在 Kubernetes 中,網(wǎng)絡(luò)策略(NetworkPolicy)是一種強大的機制,可以控制 Pod 之間和 Pod 與外部網(wǎng)絡(luò)之間的流量。

Kubernetes 中的 NetworkPolicy 定義了一組規(guī)則,這些規(guī)則允許或者拒絕特定流量的傳輸。通過使用 NetworkPolicy,Kubernetes 管理員能夠更好地掌控容器網(wǎng)絡(luò),確保應(yīng)用程序的網(wǎng)絡(luò)安全性。

NetworkPolicy 可以實現(xiàn)什么

NetworkPolicy 可被定義為 Pod 標(biāo)簽選擇器、命名空間選擇器或者兩者的組合。它可以實現(xiàn)以下功能:

  • 限制 Pod 之間的流量:通過指定 Ingress 規(guī)則,可以阻止來自其他 Pod 的流量進入目標(biāo) Pod。
  • 允許 Pod 之間的流量:需要為目標(biāo) Pod 配置 Egress 規(guī)則,以便只允許來自特定 Pod 的流量進入。
  • 限制 Pod 與外部網(wǎng)絡(luò)的通信:通過指定 Egress 規(guī)則,可以控制哪些類型的外部流量可以進入 Pod,并防止未經(jīng)授權(quán)的訪問。
  • 允許 Pod 與外部網(wǎng)絡(luò)的通信:需要為目標(biāo) Pod 配置 Ingress 規(guī)則,以便只允許來自特定 IP 地址、端口或協(xié)議的流量進入。

使用 NetworkPolicy 時,需要考慮什么

使用 NetworkPolicy 時,需要考慮以下幾個方面:

  • NetworkPolicy 只在支持它的網(wǎng)絡(luò)插件中起作用,例如 Calico、Cilium 和 Weave Net 等。
  • 沒有定義任何 NetworkPolicy 規(guī)則,則所有的流量都會被允許。
  • 定義 NetworkPolicy 后,它只適用于當(dāng)前命名空間中的 Pod。
  • 在 NetworkPolicy 中指定標(biāo)簽選擇器時,應(yīng)保證其唯一性,以免給其他 Pod 帶來影響。

網(wǎng)絡(luò)策略有哪些

默認(rèn)情況下,如果名字空間中不存在任何策略,則所有進出該名字空間中 Pod 的流量都被允許。

Namespace 隔離流量

默認(rèn)情況下,所有 Pod 之間都是互通的。每個 Namespace 可以配置獨立的網(wǎng)絡(luò)策略,來隔離 Pod 之間的網(wǎng)絡(luò)流量。

由此,可以通過創(chuàng)建匹配 Pod 的 Network Policy 來作為默認(rèn)的網(wǎng)絡(luò)策略,比如默認(rèn)拒絕所有 Pod 之間 Ingress 的通信,如下:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
    - Ingress

默認(rèn)拒絕 Pod 之間 Egress(出口) 通信的策略:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
    - Egress

甚至是默認(rèn)拒絕 Pod 之間 Ingress(入口) 和 Egress(出口) 通信的策略:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress

Pod 隔離

Pod 隔離可以分為出口的隔離入口的隔離。其實這里的“隔離”不是絕對的,而是還有一些其它限制。

比如可以通過使用標(biāo)簽選擇器(這里可以是 namespaceSelector 和 podSelector)來控制 Pod 之間的流量。

如下面的 Network Policy:

  • 允許 default namespace 中帶有 role=myfront 標(biāo)簽的 Pod 訪問 default namespace 中帶有 role=mydb 標(biāo)簽 Pod 的 6379 端口
  • 允許帶有 project=myprojects 標(biāo)簽的 namespace 中所有 Pod 訪問 default namespace 中帶有 role=mydb 標(biāo)簽 Pod 的 6379 端口
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: mydb
  ingress:
    - from:
        - namespaceSelector:
            matchLabels:
              project: myproject
        - podSelector:
            matchLabels:
              role: myfront
      ports:
        - protocol: tcp
          port: 6379

另外一個同時開啟 Ingress 和 Egress 通信的策略為:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: mydb
  policyTypes:
    - Ingress
    - Egress
  ingress:
    - from:
        - ipBlock:
            cidr: 192.168.0.0/16
            except:
              - 192.168.1.0/24
        - namespaceSelector:
            matchLabels:
              project: myproject
        - podSelector:
            matchLabels:
              role: myfront
      ports:
        - protocol: TCP
          port: 6379
  egress:
    - to:
        - ipBlock:
            cidr: 10.1.0.0/24
      ports:
        - protocol: TCP
          port: 5978

它用來隔離 default namespace 中帶有 role=mydb 標(biāo)簽的 Pod:

  • 允許 default namespace 中帶有 role=myfront 標(biāo)簽的 Pod 訪問 default namespace 中帶有 role=mydb 標(biāo)簽 Pod 的 6379 端口
  • 允許帶有 project=myprojects 標(biāo)簽的 namespace 中所有 Pod 訪問 default namespace 中帶有 role=mydb 標(biāo)簽 Pod 的 6379 端口
  • 允許 default namespace 中帶有 role=mydb 標(biāo)簽的 Pod 訪問 10.1.0.0/24 網(wǎng)段的 TCP 5987 端口

使用場景

禁止訪問指定服務(wù)

kubectl run web --image=nginx --labels app=web,env=prod --expose --port 80

網(wǎng)絡(luò)策略如下:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: web-deny-all
spec:
  podSelector:
    matchLabels:
      app: web
      env: prod

只允許指定 Pod 訪問服務(wù)

kubectl run apiserver --image=nginx --labels app=bookstore,role=api --expose --port 80

網(wǎng)絡(luò)策略如下:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: api-allow
spec:
  podSelector:
    matchLabels:
      app: bookstore
      role: api
  ingress:
  - from:
      - podSelector:
          matchLabels:
            app: bookstore

禁止 namespace 中所有 Pod 之間的相互訪問

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
  namespace: default
spec:
  podSelector: {}

禁止其他 namespace 訪問服務(wù)

kubectl create namespace secondary
kubectl run web --namespace secondary --image=nginx \
    --labels=app=web --expose --port 80

網(wǎng)絡(luò)策略配置如下:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  namespace: secondary
  name: web-deny-other-namespaces
spec:
  podSelector:
    matchLabels:
  ingress:
  - from:
    - podSelector: {}

此策略可以確保即使沒有被其他任何 NetworkPolicy 選擇的 Pod 也不會被允許流出流量。 此策略不會更改任何 Pod 的入站流量隔離行為。

只允許指定 namespace 訪問服務(wù)

kubectl run web --image=nginx \
    --labels=app=web --expose --port 80

網(wǎng)絡(luò)策略如下:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: web-allow-prod
spec:
  podSelector:
    matchLabels:
      app: web
  ingress:
    - from:
        - namespaceSelector:
            matchLabels:
              purpose: production

允許外網(wǎng)訪問服務(wù)

kubectl run web --image=nginx --labels=app=web --port 80
kubectl expose deployment/web --type=LoadBalancer

網(wǎng)絡(luò)策略如下:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: web-allow-external
spec:
  podSelector:
    matchLabels:
      app: web
  ingress:
    - ports:
        - port: 80
      from: []

有了這個策略,任何額外的策略都不會導(dǎo)致來自這些 Pod 的任何出站連接被拒絕。 此策略對進入任何 Pod 的隔離沒有影響。

以上這些使用場景的 YAML 配置定義就不再贅述了,有不明白的地方可以看下我之前的文章。

總結(jié)

Kubernetes 中的 NetworkPolicy 是一個非常重要的特性,可以控制容器網(wǎng)絡(luò)的流量和安全,確保應(yīng)用程序的可靠性和安全性。

為了更好地使用它,需要對其有一定的理解并遵循相應(yīng)的配置和管理規(guī)則。

以上就是詳解k8s NetworkPolicy 網(wǎng)絡(luò)策略是怎么樣的的詳細(xì)內(nèi)容,更多關(guān)于k8s NetworkPolicy 網(wǎng)絡(luò)策略的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • k8s編排之DaemonSet知識點詳解

    k8s編排之DaemonSet知識點詳解

    這篇文章主要為大家介紹了k8s編排之DaemonSet知識點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Rainbond功能架構(gòu)及應(yīng)用管理官方文檔介紹

    Rainbond功能架構(gòu)及應(yīng)用管理官方文檔介紹

    這篇文章主要為大家介紹了Rainbond功能機構(gòu)及使用官方文檔,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • k8s?pod和service網(wǎng)絡(luò)暴露詳解

    k8s?pod和service網(wǎng)絡(luò)暴露詳解

    這篇文章主要介紹了借助iptables的路由轉(zhuǎn)發(fā)功能,打通k8s集群內(nèi)的pod和service網(wǎng)絡(luò),與外部網(wǎng)絡(luò)聯(lián)通,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Spark三種屬性配置方式詳解

    Spark三種屬性配置方式詳解

    有時間還是多學(xué)習(xí)知識比較好,這篇文章主要介紹了Spark三種屬性配置方式詳解,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • k8s中pod不停重啟問題定位原因與解決方法

    k8s中pod不停重啟問題定位原因與解決方法

    這篇文章主要給大家介紹了關(guān)于k8s中pod不停重啟問題定位原因與解決方法的相關(guān)資料,Kubernetes是一款高度可擴展、可靠的容器編排和管理系統(tǒng),它簡化了容器的部署、管理和自動化操作,需要的朋友可以參考下
    2023-08-08
  • k8s安裝CICD?devtron過程詳解

    k8s安裝CICD?devtron過程詳解

    這篇文章主要為大家介紹了k8s安裝CICD?devtron過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Kubernetes控制器中DaemonSet與Job的使用教程

    Kubernetes控制器中DaemonSet與Job的使用教程

    這篇文章主要介紹了Kubernetes控制器中DaemonSet與Job的使用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • k8s如何給node添加標(biāo)簽(最新推薦)

    k8s如何給node添加標(biāo)簽(最新推薦)

    k8s集群如果由大量節(jié)點組成,可將節(jié)點打上對應(yīng)的標(biāo)簽,然后通過標(biāo)簽進行篩選及查看,更好的進行資源對象的相關(guān)選擇與匹配,這篇文章主要介紹了k8s如何給node添加標(biāo)簽,需要的朋友可以參考下
    2023-02-02
  • K8s實戰(zhàn)教程之容器和?Pods資源分配問題

    K8s實戰(zhàn)教程之容器和?Pods資源分配問題

    這篇文章主要介紹了K8s實戰(zhàn)教程之容器和?Pods資源分配,本篇文章通過配置集群中運行的容器的?CPU?請求和限制,你可以有效利用集群上可用的?CPU?資源,通過將?Pod?CPU?請求保持在較低水平,可以使?Pod?更有機會被調(diào)度,需要的朋友可以參考下
    2022-07-07
  • 淺析k8s中各組件和kube?apiserver通信時的認(rèn)證和鑒權(quán)問題

    淺析k8s中各組件和kube?apiserver通信時的認(rèn)證和鑒權(quán)問題

    這篇文章主要介紹了k8s中各組件和kube?apiserver通信時的認(rèn)證和鑒權(quán),本文使用的k8s集群是用kubekey搭建,命令是./kk create cluster --with-kubernetes v1.21.5 --with-kubesphere v3.2.1,需要的朋友可以參考下
    2022-06-06

最新評論