中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

k83中的calico網絡策略

發布時間:2020-06-16 14:43:36 來源:億速云 閱讀:582 作者:元一 欄目:系統運維

Calico概念

將系統微服務化后采用dubbo框架開發部署解決模塊之間內部調用關系。Dubbo框架中生產者組件會自動啟動一個服務端口,在DCOS平臺采用彈性伸縮過程中需要考慮服務組件端口沖突和跨容器訪問網絡問題。于是引入calico網絡方案來解決dubbo框架服務調用問題。

Calico是一個純3層的數據中心網絡方案,而且無縫集成像OpenStack這種IaaS云架構,能夠提供可控的VM、容器、裸機之間的IP通信。

Calico的原理是通過修改每個主機節點上的iptables和路由表規則,實現容器間數據路由和訪問控制,并通過Etcd協調節點配置信息的。因此Calico服務本身和許多分布式服務一樣,需要運行在集群的每一個節點上。

常見的CNI網絡插件包含以下幾種:

Flannel:為Kubernetes提供疊加網絡的網絡插件,基于TUN/TAP隧道技術,使用UDP封裝IP報文進行創建疊 加網絡,借助etcd維護網絡的分配情況,缺點:無法支持網絡策略訪問控制。
Calico:基于BGP的三層網絡插件,也支持網絡策略進而實現網絡的訪問控制;它在每臺主機上都運行一個虛擬路由,利用Linux內核轉發網絡數據包,并借助iptables實現防火墻功能。實際上Calico最后的實現就是將每臺主機都變成了一臺路由器,將各個網絡進行連接起來,實現跨主機通信的功能。
Canal:由Flannel和Calico聯合發布的一個統一網絡插件,提供CNI網絡插件,并支持網絡策略實現。
其他的還包括Weave Net、Contiv、OpenContrail、Romana、NSX-T、kube-router等等。而Flannel和Calico是目前最流行的選擇方案。

1.全部拒絕

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-egress
  namespace: cs1
  #應用于cs1 名稱空間,不寫名稱空間對default應用
spec:
  podSelector: {}
  ingress:
  egress:
  #定義出站規則,這里沒有寫任何策略,表示全部拒絕。
  policyTypes:
  - Egress
  - Ingress
  #這里面有Egress就表示要定義出站規則,不寫Egress就是默認通行,Ingress是入站原理一樣
  #建議大家把兩個都寫上去 然后使用"podSelector:" 來控制是否能通行

2.全部允許

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all-egress
  namespace: cs1
spec:
  podSelector: {}
  ingress:
  - {}
  #這樣表示"ingress"方向的全部允許通行
  egress:
  - {}
  #這樣表示"egress"方向的全部允許通行
  policyTypes:
  - Egress
  - Ingress

這個網絡策略只對名稱空間起效,宿主機依然可以訪問

3.作用范圍

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name:  deny-all
  namespace: default
  #只作用于 default 名稱空間
spec:
  podSelector:
  #匹配pod 范圍 如果匹配該名稱空間的所有POD 輸入"{}" 即可
    matchLabels:
      access: "true"
      #匹配POD中有 access=true的標簽
  policyTypes:
  - Ingress
  - Egress
  ingress:
  egress:

4.限制IP策略

k83中的calico網絡策略
#上圖每個cs容器的IP

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name:  deny-all
spec:
  podSelector: {}
  policyTypes:
  - Egress
  - Ingress
  ingress:
  egress:
    - to:
    #注意:egress用to,ingress用from
      - ipBlock:
          cidr: 192.168.0.0/16
          #放行192.168.0.0/16網絡
          except:
          - 192.168.94.134/32
          #但不包括這個ip

k83中的calico網絡策略
exec進入pod 能看見ping192.168.94.134 這個IP是不通的

5.基于名稱空間label限制

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: namespace-allow
  namespace: default
spec:
  policyTypes: ["Ingress"]
  podSelector: {}
  ingress:
   - from:
     - namespaceSelector:
        matchLabels:
          name: cs1
                    #表示只有打了"name=cs1"的名稱空間才允許進

6.基于名稱空間label限制滿足多個條件

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: namespace-allow
  namespace: default
spec:
  policyTypes: ["Ingress","Egress"]
  podSelector: {}
  ingress:
  - from:
    - namespaceSelector:
        matchExpressions:
        - key: name
          operator: In
          values: ["cs1","cs2"]
          #中括號里面的可以 與default名稱空間 ingress通信
                    #表示,名稱空間有標簽name=cs1,name=cs2 的 可以與default名稱空間通信

7基于pod label

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: namespace-allow
  namespace: default
spec:
  policyTypes: ["Ingress"]
  podSelector: {}
  ingress:
  - from:
    - podSelector:
        matchLabels:
          access: "true"
   #允許pod 便簽有 access=true的通行

#基于pod label 實驗沒成功不知道啥問題

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苍溪县| 临洮县| 漳浦县| 慈利县| 昌江| 峨眉山市| 十堰市| 马山县| 永胜县| 手游| 新郑市| 西青区| 富宁县| 清原| 保德县| 甘孜县| 孝义市| 定远县| 彭山县| 昭平县| 汕头市| 沐川县| 登封市| 建德市| 凤阳县| 新竹县| 昌都县| 中方县| 莱州市| 河北省| 昭觉县| 大连市| 房山区| 肥城市| 于田县| 措勤县| 青阳县| 兴安县| 中宁县| 佳木斯市| 上思县|