亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

                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)兩種方向。默認情況下,所有 Pod 是非隔離的,即任何來源的網(wǎng)絡(luò)流量都能夠訪問 Pod,沒有任何限制。當為 Pod 定義了 Network Policy,只有 Policy 允許的流量才能訪問 Pod。

                Pod之間能否通信可通過如下三種組合進行確認:

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

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

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

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

                Calico可以獨立地為Kubernetes提供網(wǎng)絡(luò)解決方案和網(wǎng)絡(luò)策略,也可以和flannel相結(jié)合,由flannel提供網(wǎng)絡(luò)解決方案,Calico僅用于提供網(wǎng)絡(luò)策略,此時將Calico稱為Canal。結(jié)合flannel工作時,Calico提供的默認配置清單式以flannel默認使用的10.244.0.0/16為Pod網(wǎng)絡(luò),因此在集群中kube-controller-manager啟動時就需要通過–cluster-cidr選項進行設(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)中,報文的流入和流出的核心組件是Pod資源,它們也是網(wǎng)絡(luò)策略功能的主要應(yīng)用對象。NetworkPolicy對象通過podSelector選擇 一組Pod資源作為控制對象。NetworkPolicy是定義在一組Pod資源之上用于管理入站流量,或出站流量的一組規(guī)則,有可以是出入站規(guī)則一起生效,規(guī)則的生效模式通常由spec.policyTypes進行 定義。如下圖:

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

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

                apiVersion: networking.k8s.io/v1#定義API版本kind: NetworkPolicy #定義資源類型metadata: name: allow-myapp-ingress #定義NetwokPolicy的名字 namespace: defaultspec: #NetworkPolicy規(guī)則定義 podSelector: #匹配擁有標簽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: #選定當前default名稱空間,標簽為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名稱空間中擁有標簽”app=myapp”的Pod資源開放80/TCP端口給10.244.0.0/16網(wǎng)段,并排除10.244.3.0/24網(wǎng)段的訪問,并且也開放給標簽為app=myapp的所有Pod資源進行訪問。

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

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

                • 隔離 default名字空間下 app=myapp 的 Pod 。
                • 出口限制:允許符合以下條件的 Pod 連接到 default名字空間下標簽為 app=myapp的所有 Pod 的 80 TCP 端口:
                  • a) default名字空間下帶有 app=myapp 標簽的所有 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標簽的名字空間下的任何 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ò)策略

                如果只讓那些擁有標簽 access: true 的 Pod 訪問 nginx 服務(wù), 那么可以創(chuàng)建一個如下所示的 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 標簽的 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 標簽的 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)推薦

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

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

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

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

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

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

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

                  隨著時代的發(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)公繞后這個梗也是挺火的,不過還是有很多網(wǎng)友對關(guān)公繞后這個梗的含義不是很了解,關(guān)公繞后什么意思?這個梗說的是什么呢?下面來看下網(wǎng)絡(luò)…

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

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

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

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

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

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

                  2022年11月23日

                聯(lián)系我們

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