社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

CloudMan • 7 年前 • 610 次点击  

第172篇

实践 Network Policy

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

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

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

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

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

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

现在创建如下 Network Policy:

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

② 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


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/IA6lavh3OY
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/12494
 
610 次点击