Calico默认的policy是:容器只能与同一个calico网络中的容器通信。
 
Calico能够让用户定义灵活的policy规则,精细化控制进出容器的流量,比如下面的实验:
 
    1、创建一个新的calico网络 cal_web 并部署一个httpd的容器 web1
 
    2、定义policy 允许cal_net2 中的容器访问web1的80端口
 
 
#    1、创建calico 网络  cal_web
root@host1:~# docker network create --driver calico --ipam-driver calico-ipam cal_web
88b484859100b4edc3d85aeae8e15d02a05f6c56ea0b2e2a2c820bb460c3fbc4
 
#    2、在cal_web网络中运行httpd容器 web_server
root@host1:~# docker run -d --name web_server --network cal_web httpd
1d63cea6cfe5b4fb8152100f5d1bc172cb514861e5b442b95873e065f3bb307e
 
#    3、在cal_net2网络中运行web客户端容器 web_client
root@host1:~# docker run -itd --name web_client --network cal_net2 busybox
55bba02387aa53a5a0ace12a962e58bbda2bb1e8b304811bd739972d30dd5687
 
#    4、查看web_server 容器ip地址
root@host1:~# docker inspect web_server | jq .[0].NetworkSettings.Networks.cal_web.IPAddress
"192.168.119.2"
 
#    5、用 cal_net2 网络中的 web_client 访问 cal_web 网络中的 web_server
root@host1:~# docker exec web_client wget http://192.168.119.2
Connecting to 192.168.119.2 (192.168.119.2:80)
wget: can't connect to remote host (192.168.119.2): Connection timed out
 
#    6、步骤5中的测试没有成功,编辑 cal_web 网络 policy 文件
root@host1:~# cat web.yaml
- apiVersion: v1
  kind: profile
  metadata:
    name: cal_web
  spec:
    ingress:
    - action: allow
      protocol: tcp
      source:
        tag: cal_net2
      destination:
        ports:
        - 80
 
#    7、应用 cal_web 网络 policy 文件
root@host1:~# calicoctl apply -f web.yaml
Successfully applied 1 'profile' resource(s)
 
#    8、重新测试 web_client 访问 web_server
root@host1:~# docker exec web_client wget http://192.168.119.2
Connecting to 192.168.119.2 (192.168.119.2:80)
index.html           100% |********************************|    45  0:00:00 ETA
 
#    9、在host1上查看 cal_web policy
root@host1:~# calicoctl get profile cal_web -o yaml
- apiVersion: v1
  kind: profile
  metadata:
    name: cal_web
  spec:
    ingress:
    - action: allow
      destination:
        ports:
        - 80
      protocol: tcp
      source:
        tag: cal_net2
 
#    10、在host2上查看 cal_web policy
root@host2:~# calicoctl get profile cal_web -o yaml
- apiVersion: v1
  kind: profile
  metadata:
    name: cal_web
  spec:
    ingress:
    - action: allow
      destination:
        ports:
        - 80
      protocol: tcp
      source:
        tag: cal_net2
 

最新文章

  1. 用 get 同步/异步 方式获取网络数据并输出
  2. [dpdk] 读开发指南(1)
  3. Labview实现幅度信号调制(AM)
  4. pdf增加水印
  5. mysql 插入默认值的问题 sql-mode
  6. rsyslog 同步丢失问题
  7. 捕鱼达人代码例子下载地址 Win版
  8. Docker学习笔记 — Docker私有仓库搭建【转载】
  9. 1197: [HNOI2006]花仙子的魔法
  10. IsKeyboardFocused -- 键盘焦点
  11. 通过正则表达式提取excel特定列中含有关键字的所有行数据
  12. Hadoop2-HDFS学习笔记之入门(不含YARN及MR的调度功能)
  13. selenium的三种等待方式
  14. mongoDB用法整理
  15. Zabbix LLD 设置过滤条件,不自动监控某些item
  16. android 开发概述以及相关背景知识
  17. vue + element ui 实现实现动态渲染表格
  18. 多Tomcat多JDK版本的Window服务添加配置方式
  19. Go 学习之路:Println 与 Printf 的区别
  20. Windows如何设置动态和静态ip地址

热门文章

  1. LeetCode算法题-Relative Ranks(Java实现)
  2. 浏览器和服务器实现跨域(CORS)判定的原理
  3. kernel笔记——定时器与时间管理
  4. Taro文件上传:Blob Url下载Blob对象本身并通过接口上传到服务器
  5. SQL UCASE() 函数
  6. MAC oh-my-zsh
  7. Linux内存管理 (1)物理内存初始化
  8. SQL Server中NULL的一个测试
  9. HttpServletRequest get
  10. Windows 10 Update