• 隔离pod 的网络


    介绍

    所谓得隔离Pod网络就是通过限制 pod 可以与其他哪些 pod 通信,通讯分为入站与出站两个方向来确保 pod 之间的网络安全。是否可以进行这些配置取决于集群中使用的容器网络插件。如果网络插件支持,可以通过 NetworkPolicy 资源配置网络隔离。

    NetworkPolicy

    一个 NetworkPolicy 会应用在匹配它的标签选择器的 pod 上,指明这些允许访问这些 pod  的源地址,或者这些pod  可以访问的目标地址。这些分别由入向( ingress) 和出向( egress )规则指定。这两种规则都可以匹配由标签选择器选出的 pod ,或者一个 namespac 中的所有 pod ,或者通过无类别域间路由(Classless Inter-Domain Routing, CIDR )指定的 IP 地址段。
     
    注意: 1、入向规则与 负载均衡中的 Ingress 资源无关。
        2、networkpolicy 也是命名空间层面的资源,所有关联pod 的时候必须指定在pod 所在的命名空间创建,如果不与Pod在同一个命名空间就不会关联成功。
     

    限制关联pod 的所有入站访问

    1、命名空间中所有pod禁止所有外部访问

    限制所有外部pod  访问这个命名空间下的所有 pod ,不限制出。

    vi np.yaml
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: default-deny            #这个名字不可变,只有这个名字有限制入站访问的功能
      spec:
        podSelector:
          matchLabels: {}             #不指定标签,标识对此命名空间下所有的pod 都生效
    
    kubectl  create  -f  np.yaml  -n  kzf   #指定命名空间下创建
    View Code

    2、只允许同一命名空间中的部分pod 访问

    虽然只添加了允许访问的pod ,但是此情况下默认拒绝所有其他的pod 的访问。

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default-allow
    spec:
      podSelector:
        matchLabels:
          app : centos-lb                #此策略确保了标签app:centos-lb 的pod 的安全性
      ingress:
      - from:
        - podSelector:                  #只是允许标签app:webserver pod 的访问
            matchLabels:
              app: webserver
        ports:
        - port: 5432                    #只能访问此端口
    View Code

     3、通过命名空间标签选择器对指定命名空间下的pod进行网络隔离

    View Code

     
    4、使用CIDR 隔离网络段
    除了通过在pod选择器或命名空间选择器定义哪些pod可以访问NetworkPolicy 资源中指定的目标pod, 还可以通过CIDR表示法指定一 个IP段。
    apiVersion: networking.k8s.io/vl 
    kind: NetworkPolicy 
    metadata: 
      name: shoppingcart-netpolicy
    spec: 
      podSelector: 
        matchLabels: 
         app:  market-server 
      ingress: 
      - from:
        - ipBlock:
            cidr: 192.168.1.0/24        #整个网段能够访问app:market-server  的pod 
        portS:
        - port: 80
    View Code

     限制pod的对外访问流量

    之前的所有例子中,已经通过入向规则限制了进入pod的访问流量。然而,也可以通过出向规则限制pod的对外访问流量。以下代码清单展示了 一个例子。
    ...     
    spec: 
      podSelector:
        matchLabels:
          app: webserver 
      egress: 
      - to:
        - podSelector:
            matchLabels:
            app: database
    View Code
    这个策略应用于包含 app=webserver标签的pod。webserver的pod只能与有app=database 标签的pod通信 ,不能与其他的pod 通讯。而app=database 标签的pod 的入站访问在这里的配置对他无任何影响。此处只是限制的是webserver的
    pod 的出站访问控制策略。
  • 相关阅读:
    Django项目总结: REST Framework 用户注册登录,权限控制,级联操作查询,节流控制自定义
    画皮卡丘
    软件测试 (实际输出与预期输出间的比较过程)
    软件测试方法
    Vue模板语法
    HTTP 与 HTTPS 的区别
    tomcat运行多个项目同一个端口与不同端口的设置
    springboot-WebMvcConfigurer配置拦截器/跨域/格式化/注册控制器
    Spring IOC(控制反转)思想笔记
    工程师最重要的能力是什么?
  • 原文地址:https://www.cnblogs.com/fanggege/p/12213006.html
Copyright © 2020-2023  润新知