k8s网络策略-命名空间级别的限制

k8s网络策略-命名空间级别的限制

1、需求描述

​ 在实际的生产集群中,有时候不同的命名空间有限制访问的情况存在,比如测试的命名空间不可以访问生产命名空间的Pod,A服务的命名空间不可以访问B服务命名空间的Pod等类似这样的网络隔离需求,k8s支持命名空间和Pod级别的网络隔离,本文讲解的是命名空间级别的网络隔离。

2、环境准备

  • k8s集群版本:v1.29

  • 测试Pod yaml文件

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: test1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
      namespace: test1
    spec:
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
      type: ClusterIP
    
    

    本次一共需要三个Pod、service、namespace做测试,分别修改Pod和service的name和对应的namespace名称即可

  • 测试网络策略yaml文件

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: allow-test1-to-test2
      namespace: test2
    spec:
      podSelector:
        matchLabels: {}
      policyTypes:
      - Ingress
      ingress:
      - from:
        - namespaceSelector:
            matchLabels:
              kubernetes.io/metadata.name: test1
          podSelector: {}
        ports:
        - port: 80
          protocol: TCP
    

配置说明:

1、namespace是策略配置作用于哪个命名空间

2、podSelector是选择test2这个命名空间下的Pod标签,matchLabels: {}表示匹配所有Pod标签

3、Ingress是配置入站规则,egress是出站规则

4、from是配置源端信息(因为是入站,限制源端访问过来的流量)

5、namespaceSelector选择入站的命名空间

需要特别注意的是这儿的命名空间标签KV一定要执行 “kubectl describe ns ns名称” 命名来确认

root@ek8s-master01:/k8syaml# kubectl describe ns test1
Name:         test1
Labels:       kubernetes.io/metadata.name=test1  #以这个为准
Annotations:  <none>
Status:       Active

No resource quota.

No LimitRange resource.

6、ports可以指定端口,也可以不配置就不限制端口

3、开始实验

  • 资源下发

    kubectl apply -f dep-nginx-test1.yaml
    kubectl apply -f dep-nginx-test2.yaml
    kubectl apply -f dep-nginx-test3.yaml
    

在这里插入图片描述

  • 测试网络

    • 命名空间test3访问test2的Pod

      在这里插入图片描述
      访问不通

    • 命名空间test1访问test2的Pod

    在这里插入图片描述
    可以正常访问

    • 命名空间test2访问test2的Pod
      在这里插入图片描述
      访问不通

4、结论

k8s配置的networkPolicy网络规则是强规则,配置之后也作用于同命名空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值