建立一个类型为NetworkPolicy的Kubernetes对象的yaml文件。数据库
第九行的podSelector指定这个NetworkPolicy施加在哪些pod上,经过label来作pod的过滤。bash
从第16行开始的ingress定义,定义了只有具有标签component=ads,module=app的pod才可以链接component=ads, module=db的pod。app
首先建立一个临时的pod,使用正确的label(component=ads,module=app)去访问db pod:post
kubectl run --restart=Never -it --rm --image=postgres:9.6 --labels="component=ads,module=app" --env="PGCONNECT_TIMEOUT=5" helper --command -- /bin/bashspa
执行完毕后看到提示root@helper:/#, 说明我经过上述命令建立的临时pod成功的链接到了postgreSQL的pod上。rest
输入正确的用户名和密码,能成功链接到postgreSQL pod提供的数据库服务上。component
如今咱们从新建立一个临时pod,不指定label,所以不知足NetworkPolicy里定义的限制条件,所以会看到咱们指望的结果:postgreSQL链接失败。对象
但愿经过例子你们可以理解Kubernetes里NetworkPolicy的工做原理。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":rem