【kubernetes/k8s概念】k8s 网络策略

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhonglinzhang/article/details/85252962

      默认 Pod 是未隔离的,它们可以从任何的源接收请求。Pod 的使用网络策略后,Pod 就会变成隔离的。 一旦 Namespace 中配置的网络策略能够选择一个特定的 Pod,这个 Pod 将拒绝任何该网络策略不允许的连接。(Namespace 中其它未被网络策略选中的 Pod 将继续接收所有流量)

       默认情况下,每个Pod之间是可以相互访问的。但在某些场景中,不同的Pod不应该互通,这个时候就需要进行访问控制

前提

     需要有一个支持网络策略的 Kubernetes 集群。支持 NetworkPolicy 的网络如下:

  • Calico
  • Romana
  • Weave 网络

测试例子

  1. 创建nginx deployment并将服务暴露

kubectl run nginx --image=nginx --replicas=2

kubectl expose deployment nginx --port=80

  2. 测试服务能够被其它的 pod 访问

        与nginx的80通

    

    3. 添加networkpolicy限制访问 nginx 服务

          kubectl apply -f 

          拥有标签 access: true 的 pod 可以访问

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: access-nginx
spec:
  podSelector:
    matchLabels:
      run: nginx
  ingress:
  - from:
    - podSelector:
        matchLabels:
          access: "true"

  4. 当访问标签没有定义时测试访问服务

[root@httpserver-7777-845f5fd9c8-7tpw6 /]# curl nginx:80 
curl: (7) Failed connect to nginx:80; Connection timed out

猜你喜欢

转载自blog.csdn.net/zhonglinzhang/article/details/85252962