在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Kubernetes網(wǎng)絡(luò)策略之詳解

    Kubernetes網(wǎng)絡(luò)策略之詳解

    NetWork Policy簡介

    隨著微服務(wù)架構(gòu)的日漸盛行,Serverless框架的逐步落地,應(yīng)用上云后帶來了模塊間網(wǎng)絡(luò)調(diào)用需求的大規(guī)模增長,Kubernetes 自 1.3 引入了 Network Policy,其提供以應(yīng)用為中心, 基于策略的網(wǎng)絡(luò)控制,用于隔離應(yīng)用以減少攻擊面。

    網(wǎng)絡(luò)策略(Network Policy )是 Kubernetes 的一種資源。Network Policy 通過 Label 選擇 Pod,并指定其他 Pod 或外界如何與這些 Pod 通信。

    Pod的網(wǎng)絡(luò)流量包含流入(Ingress)和流出(Egress)兩種方向。默認(rèn)情況下,所有 Pod 是非隔離的,即任何來源的網(wǎng)絡(luò)流量都能夠訪問 Pod,沒有任何限制。當(dāng)為 Pod 定義了 Network Policy,只有 Policy 允許的流量才能訪問 Pod。

    Pod之間能否通信可通過如下三種組合進(jìn)行確認(rèn):

    • 其他被允許的 Pods(例如:Pod 無法限制對自身的訪問)
    • 被允許訪問的namespace
    • IP CIDR(例如:與 Pod 運(yùn)行所在節(jié)點(diǎn)的通信總是被允許的)

    在定義基于 Pod 或namespace的 NetworkPolicy 時(shí),可以使用標(biāo)簽選擇器來設(shè)定哪些流量可以進(jìn)入或離開 Pod。同時(shí),當(dāng)創(chuàng)建基于 IP 的 NetworkPolicy 時(shí),可以基于 IP CIDR 來定義策略。

    Kubernetes的網(wǎng)絡(luò)策略功能也是由第三方的網(wǎng)絡(luò)插件實(shí)現(xiàn)的,因此,只有支持網(wǎng)絡(luò)策略功能的網(wǎng)絡(luò)插件才能進(jìn)行配置網(wǎng)絡(luò)策略,比如Calico、Canal、kube-router等等。

    部署calico網(wǎng)絡(luò)插件提供網(wǎng)絡(luò)策略功能

    Calico可以獨(dú)立地為Kubernetes提供網(wǎng)絡(luò)解決方案和網(wǎng)絡(luò)策略,也可以和flannel相結(jié)合,由flannel提供網(wǎng)絡(luò)解決方案,Calico僅用于提供網(wǎng)絡(luò)策略,此時(shí)將Calico稱為Canal。結(jié)合flannel工作時(shí),Calico提供的默認(rèn)配置清單式以flannel默認(rèn)使用的10.244.0.0/16為Pod網(wǎng)絡(luò),因此在集群中kube-controller-manager啟動時(shí)就需要通過–cluster-cidr選項(xiàng)進(jìn)行設(shè)置使用該網(wǎng)絡(luò)地址,并且—allocate-node-cidrs的值應(yīng)設(shè)置為true。

    本文使用calico作為網(wǎng)絡(luò)插件,并提供網(wǎng)絡(luò)策略功能來加以說明

    1、下載calico安裝文件,修改網(wǎng)段

    curl -LO https://docs.projectcalico.org/archive/v3.15/manifests/calico.yaml

    將配置文件中CALICO_IPV4POOL_CIDR注釋取消,并將值修改為: 10.244.0.0/16

    2、安裝calico

    kca -f calico.yaml

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

    在Kubernetes系統(tǒng)中,報(bào)文的流入和流出的核心組件是Pod資源,它們也是網(wǎng)絡(luò)策略功能的主要應(yīng)用對象。NetworkPolicy對象通過podSelector選擇 一組Pod資源作為控制對象。NetworkPolicy是定義在一組Pod資源之上用于管理入站流量,或出站流量的一組規(guī)則,有可以是出入站規(guī)則一起生效,規(guī)則的生效模式通常由spec.policyTypes進(jìn)行 定義。如下圖:

    默認(rèn)情況下,Pod對象的流量控制是為空的,報(bào)文可以自由出入。在附加網(wǎng)絡(luò)策略之后,Pod對象會因?yàn)镹etworkPolicy而被隔離,一旦名稱空間中有任何NetworkPolicy對象匹配了某特定的Pod對象,則該P(yáng)od將拒絕NetworkPolicy規(guī)則中不允許的所有連接請求,但是那些未被匹配到的Pod對象依舊可以接受所有流量。

    就特定的Pod集合來說,入站和出站流量默認(rèn)是放行狀態(tài),除非有規(guī)則可以進(jìn)行匹配。還有一點(diǎn)需要注意的是,在spec.policyTypes中指定了生效的規(guī)則類型,但是在networkpolicy.spec字段中嵌套定義了沒有任何規(guī)則的Ingress或Egress時(shí),則表示拒絕入站或出站的一切流量。定義網(wǎng)絡(luò)策略的基本格式如下:

    apiVersion: networking.k8s.io/v1#定義API版本kind: NetworkPolicy #定義資源類型metadata: name: allow-myapp-ingress #定義NetwokPolicy的名字 namespace: defaultspec: #NetworkPolicy規(guī)則定義 podSelector: #匹配擁有標(biāo)簽app:myapp的Pod資源 matchLabels: app: myapp policyTypes: #NetworkPolicy類型,可以是Ingress,Egress,或者兩者共存 – Ingress – Egress ingress: #定義入站規(guī)則 – from: – ipBlock: #定義可以訪問的網(wǎng)段 cidr: 10.244.0.0/16 except: #排除的網(wǎng)段 – 10.244.3.0/24 – podSelector: #選定當(dāng)前default名稱空間,標(biāo)簽為app:myapp可以入站 matchLabels: app: myapp ports: #開放的協(xié)議和端口定義 – protocol: TCP port: 80 egress: – to: – ipBlock: #指定端口上的流量匹配到 10.244.0.0/24 中的任何目的地 cidr: 10.244.0.0/24 ports: – protocol: TCP port: 80 該網(wǎng)絡(luò)策略就是將default名稱空間中擁有標(biāo)簽”app=myapp”的Pod資源開放80/TCP端口給10.244.0.0/16網(wǎng)段,并排除10.244.3.0/24網(wǎng)段的訪問,并且也開放給標(biāo)簽為app=myapp的所有Pod資源進(jìn)行訪問。

    • 必需字段:與所有其他的 Kubernetes 對象一樣,NetworkPolicy 需要 apiVersion、 kind 和 metadata 字段。
    • spec:NetworkPolicy 規(guī)約中包含了在名字空間中定義特定網(wǎng)絡(luò)策略所需的所有信息。
    • podSelector:每個(gè) NetworkPolicy 都包括一個(gè) podSelector,它選擇適用該該策略的 Pod。示例中的策略選擇帶有 “app=myapp” 標(biāo)簽的 Pod。若podSelector為空的,則選擇名字空間下所有 Pod。
    • policyTypes: 每個(gè) NetworkPolicy 都包含一個(gè) policyTypes 列表,其中包含 Ingress 或 Egress 或(兩者亦可)。policyTypes 字段表示給定的策略是應(yīng)用于 所選 Pod 的入口流量還是來出口流量(兩者亦可)。如果 NetworkPolicy 未指定 policyTypes 則默認(rèn)情況下始終設(shè)置 Ingress;如果 NetworkPolicy 有任何出口規(guī)則的話則設(shè)置 Egress。
    • ingress: 每個(gè) NetworkPolicy 可包含一個(gè) ingress 規(guī)則的白名單列表。每個(gè)規(guī)則都允許同時(shí)匹配 from 和 ports 部分的流量。示例策略中包含一條 簡單的規(guī)則:它匹配某個(gè)特定端口,第一個(gè)通過 ipBlock 指定,第二個(gè)通過 podSelector 指定。
    • egress: 每個(gè) NetworkPolicy 可包含一個(gè) egress 規(guī)則的白名單列表。每個(gè)規(guī)則都允許匹配 to 和 port 部分的流量。該示例策略包含一條規(guī)則, 該規(guī)則指定端口上的流量匹配到 10.0.0.0/24 中的任何目的地。

    該網(wǎng)絡(luò)策略總結(jié)如下:

    • 隔離 default名字空間下 app=myapp 的 Pod 。
    • 出口限制:允許符合以下條件的 Pod 連接到 default名字空間下標(biāo)簽為 app=myapp的所有 Pod 的 80 TCP 端口:
      • a) default名字空間下帶有 app=myapp 標(biāo)簽的所有 Pod
      • b) IP 地址范圍為10.244.0.0–10.244.0.255 和 10.244.3.0–10.244.255.255(即除了 10.244.3.0/24 之外的所有 10.244.0.0/16)
    • 入口限制:允許從帶有 app=myapp標(biāo)簽的名字空間下的任何 Pod 到 CIDR 10.244.0.0/16 下 80 TCP 端口。

    部署應(yīng)用

    1、部署nginx服務(wù)

    [root@localhost ~]# kubectl create deployment nginx –image=nginxdeployment.apps/nginx created[root@localhost ~]# kubectl expose deployment nginx –port=80service/nginx exposed

    2、測試網(wǎng)絡(luò)

    [root@localhost ~]# kubectl get svc,podNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 10.96.0.1 443/TCP 9dservice/nginx ClusterIP 10.105.249.196 80/TCP 22mNAME READY STATUS RESTARTS AGEpod/nginx-6799fc88d8-dpqrp 1/1 Running 0 22m[root@localhost ~]# kubectl run busybox –rm -ti –image=busybox /bin/shIf you don’t see a command prompt, try pressing enter./ # wget –spider –timeout=1 nginxConnecting to nginx (10.105.249.196:80)remote file exists

    3、測試網(wǎng)絡(luò)策略

    如果只讓那些擁有標(biāo)簽 access: true 的 Pod 訪問 nginx 服務(wù), 那么可以創(chuàng)建一個(gè)如下所示的 NetworkPolicy 對象:

    cat << EOF | kubectl apply -f -apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: access-nginxspec: podSelector: matchLabels: app: nginx ingress: – from: – podSelector: matchLabels: access: "true"EOFnetworkpolicy.networking.k8s.io/access-nginx created

    • 不帶 access=true 標(biāo)簽的 Pod 還是無法訪問 nginx 服務(wù)
    • 1 2 3 4 5 [root@localhost ~]# kubectl run busybox –rm -ti –image=busybox /bin/sh If you don’t see a command prompt, try pressing enter. / # wget –spider –timeout=1 nginx Connecting to nginx (10.105.249.196:80) wget: download timed out
    • 而帶有 access=true 標(biāo)簽的 Pod 可以訪問 nginx 服務(wù)
    • 1 2 3 4 5 [root@localhost ~]# kubectl run busybox –rm -ti –labels=”access=true” –image=busybox /bin/sh If you don’t see a command prompt, try pressing enter. / # wget –spider –timeout=1 nginx Connecting to nginx (10.105.249.196:80) remote file exists
    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月19日 21:10
    下一篇 2022年6月19日 21:10

    相關(guān)推薦

    • 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文(計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字)

      今天小編給各位分享計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文的知識,其中也會對計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! 計(jì)算機(jī)網(wǎng)絡(luò)方面的論文3000字…

      2022年11月26日
    • 抖音帶貨怎么做入門(抖音帶貨怎么做入門教學(xué))

      相信很多小伙伴都有注意到,現(xiàn)在抖音已經(jīng)成為大家最常光顧的一個(gè)平臺了,作為一個(gè)日活破億的流量池,如今抖音上的用戶數(shù)量極大。因此,現(xiàn)在在抖音上帶貨、賣貨的人也是越來越多了,那么想在抖音…

      2022年11月25日
    • 手機(jī)上怎么買世界杯彩票(手機(jī)上怎么買世界杯輸贏)

      現(xiàn)在手機(jī)已經(jīng)成為大家生活中非常重要的工具之一,只要一部手機(jī)就可以解決衣食住行,最近世界杯火熱進(jìn)行,一些小伙伴想要買彩票,那么,手機(jī)上可以買世界杯彩票嗎?世界杯買球軟件是真的嗎?手機(jī)…

      2022年11月25日
    • 淘寶直播平臺抽成多少(淘寶直播平臺抽成比例)

      隨著時(shí)代的發(fā)展,現(xiàn)在直播帶貨已經(jīng)成為主要帶貨方式,其中淘寶是主流帶貨平臺,不少人在上面直播帶貨賺錢,一些小伙伴也想加入,那么淘寶直播平臺抽成多少?下面小編為大家?guī)硖詫氈辈テ脚_抽成…

      2022年11月24日
    • 成都健康碼崩了是怎么回事(成都健康碼系統(tǒng)崩了)

      健康碼是大家出行必備的工具,有小伙伴反映自己健康碼崩了,上不了地鐵,那么成都健康碼崩了是怎么回事?成都健康碼怎么突然崩了?成都健康碼崩了是怎么辦?下面小編為大家?guī)沓啥冀】荡a崩了原…

      2022年11月24日
    • rnm退錢是什么意思網(wǎng)絡(luò)用語(rnm退錢是什么人)

      最近關(guān)于網(wǎng)絡(luò)用語使用還是有不少咨詢的,隨著卡塔爾世界杯的開啟,網(wǎng)上也出現(xiàn)了不少新的網(wǎng)絡(luò)流行用語,其中rnm退錢的梗也引發(fā)不少網(wǎng)友的好奇。rnm退錢是什么意思?很多網(wǎng)友對此好奇,rn…

      2022年11月24日
    • 關(guān)公繞后什么意思網(wǎng)絡(luò)用語(睜眼關(guān)公什么意思)

      關(guān)于一些網(wǎng)絡(luò)用語使用大家也都是比較關(guān)注的,最近關(guān)于關(guān)公繞后這個(gè)梗也是挺火的,不過還是有很多網(wǎng)友對關(guān)公繞后這個(gè)梗的含義不是很了解,關(guān)公繞后什么意思?這個(gè)梗說的是什么呢?下面來看下網(wǎng)絡(luò)…

      2022年11月24日
    • 免費(fèi)清理c盤的軟件(清理c盤空間不影響系統(tǒng))

      電腦用久了慢如龜速,還卡頓,這最大的原因啊就是C盤空間不足造成的。 即使電腦配置再好,或者硬盤再快,如果長時(shí)間沒有打掃C盤,打開文件或者穩(wěn)定之類的,都卡得讓人頭大。 這時(shí)候呢不要去…

      2022年11月24日
    • 1千克等于多少磅

      克,此定義在1958年被美國以及其他英聯(lián)邦會員國承認(rèn)換算回來,一千克等于262磅,一磅等于037千克英國在1963年開始,依據(jù)度量衡法案的規(guī);1 磅=16 盎司=04536 千克 …

      2022年11月24日
    • 媽寶是什么意思網(wǎng)絡(luò)用語(媽寶男是什么意思)

      近期有關(guān)一些網(wǎng)絡(luò)用語使用也有不少人咨詢,其中媽寶這個(gè)詞在網(wǎng)上熱度也是挺高的。媽寶是什么意思?部分網(wǎng)友可能對媽寶這個(gè)詞的含義不是很了解,據(jù)悉在網(wǎng)絡(luò)上面有媒體人評論大s的時(shí)候使用到了媽…

      2022年11月23日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息