实践 Network Policy - 天天5分钟玩转 Docker 容器技术(172)

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

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

当前没有定义任何 Network Policy,验证应用能够被访问:app

  1. 启动一个 busybox Pod,能够访问 Service,也能够 Ping 到副本 Pod。
    spa

  2. 集群节点能够访问 Service, 也能够 Ping 到副本 Pod。
    3d

  3. 集群外(192.168.56.1)能够访问 Service。
    code

如今建立以下 Network Policy:htm

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

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

③ 只能访问 80 端口。部署

经过 kubectl apply 建立 Network Policy。

验证 Network Policy 的有效性:

  1. busybox Pod 已经不能访问 Service。

    若是 Pod 添加了 label access: "true" 就能访问到应用,但 Ping 已经被禁止。

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

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

若是但愿让集群节点和集群外(192.168.56.1)也可以访问到应用,能够对 Network Policy 作以下修改:

应用新的 Network Policy:

如今,集群节点和集群外(192.168.56.1)已经可以访问了:

除了经过 ingress 限制进入的流量,也能够用 egress 限制外出的流量。你们能够参考官网相关文档和示例,这里就不赘述了。

小结

Kubernetes 采用的是扁平化的网络模型,每一个 Pod 都有本身的 IP,而且能够直接通讯。

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

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

书籍:

1.《天天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html

2.《天天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

3.《天天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

相关文章
相关标签/搜索