实践 Network Policy — Kubernetes(59)steemCreated with Sketch.

in kubernetes •  7 years ago 

为了演示 Network Policy,我们先部署一个 httpd 应用,其配置文件 httpd.yaml 为:

840.png

httpd 有三个副本,通过 NodePort 类型的 Service 对外提供服务。部署应用:

841.png

当前没有定义任何 Network Policy,验证应用可以被访问:

  1. 启动一个 busybox Pod,可以访问 Service,也可以 Ping 到副本 Pod。
    842.png

  2. 集群节点可以访问 Service, 也可以 Ping 到副本 Pod。
    843.png

  3. 集群外(192.168.56.1)可以访问 Service。
    844.png

现在创建如下 Network Policy:

845.png

① 定义将此 Network Policy 中的访问规则应用于 label 为 run: httpd 的 Pod,即 httpd 应用的三个副本 Pod。

ingress 中定义只有 label 为 access: "true" 的 Pod 才能访问应用。

③ 只能访问 80 端口。

通过 kubectl apply 创建 Network Policy。

846.png

验证 Network Policy 的有效性:

  1. busybox Pod 已经不能访问 Service。
    847.png
    如果 Pod 添加了 label access: "true" 就能访问到应用,但 Ping 已经被禁止。
    848.png

  2. 集群节点已经不能访问 Service, 也 Ping 不到副本 Pod。
    849.png

  3. 集群外(192.168.56.1)已经不能访问 Service。
    850.png

如果希望让集群节点和集群外(192.168.56.1)也能够访问到应用,可以对 Network Policy 做如下修改:

851.png

应用新的 Network Policy:

852.png

现在,集群节点和集群外(192.168.56.1)已经能够访问了:

853.png

854.png

除了通过 ingress 限制进入的流量,也可以用 egress 限制外出的流量。大家可以参考官网相关文档和示例,这里就不赘述了。

小结

Kubernetes 采用的是扁平化的网络模型,每个 Pod 都有自己的 IP,并且可以直接通信。

CNI 规范使得 Kubernetes 可以灵活选择多种 Plugin 实现集群网络。

Network Policy 则赋予了 Kubernetes 强大的网络访问控制机制。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

感谢博主,天天看,两本书都买了,感谢分享!!!