欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

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

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

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

使用 NetworkPolicy 時(shí),需要考慮什么

使用 NetworkPolicy 時(shí),需要考慮以下幾個(gè)方面:

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

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

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

Namespace 隔離流量

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

由此,可以通過(guò)創(chuàng)建匹配 Pod 的 Network Policy 來(lái)作為默認(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 隔離可以分為出口的隔離入口的隔離。其實(shí)這里的“隔離”不是絕對(duì)的,而是還有一些其它限制。

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

如下面的 Network Policy:

  • 允許 default namespace 中帶有 role=myfront 標(biāo)簽的 Pod 訪問(wèn) default namespace 中帶有 role=mydb 標(biāo)簽 Pod 的 6379 端口
  • 允許帶有 project=myprojects 標(biāo)簽的 namespace 中所有 Pod 訪問(wèn) 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

另外一個(gè)同時(shí)開啟 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

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

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

使用場(chǎng)景

禁止訪問(wèn)指定服務(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èn)服務(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 之間的相互訪問(wèn)

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

禁止其他 namespace 訪問(wèn)服務(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: {}

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

只允許指定 namespace 訪問(wèn)服務(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èn)服務(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: []

有了這個(gè)策略,任何額外的策略都不會(huì)導(dǎo)致來(lái)自這些 Pod 的任何出站連接被拒絕。 此策略對(duì)進(jìn)入任何 Pod 的隔離沒(méi)有影響。

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

總結(jié)

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

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

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

相關(guān)文章

  • k8s編排之DaemonSet知識(shí)點(diǎn)詳解

    k8s編排之DaemonSet知識(shí)點(diǎn)詳解

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

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

    這篇文章主要為大家介紹了Rainbond功能機(jī)構(gòu)及使用官方文檔,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    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)通,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Spark三種屬性配置方式詳解

    Spark三種屬性配置方式詳解

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

    k8s中pod不停重啟問(wèn)題定位原因與解決方法

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

    k8s安裝CICD?devtron過(guò)程詳解

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

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

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

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

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

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

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

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

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

最新評(píng)論