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
 

070、如何定制Calico 网络policy(2019-04-15 周一)的更多相关文章

  1. 第 8 章 容器网络 - 070 - 如何定制 Calico 网络 Policy?

    定制 Calico 网络 Policy Calico 默认的 policy 规则是:容器只能与同一个 calico 网络中的容器通信. Calico 能够让用户定义灵活的 policy 规则,精细化控 ...

  2. 如何定制 Calico 网络 Policy - 每天5分钟玩转 Docker 容器技术(70)

    Calico 默认的 policy 规则是:容器只能与同一个 calico 网络中的容器通信.本节讨论如何定制 policy. calico 能够让用户定义灵活的 policy 规则,精细化控制进出容 ...

  3. 071、如何定制calico网络的IP池(2019-04-16 周二)

    参考https://www.cnblogs.com/CloudMan6/p/7571272.html   在前面的学习中,我们没有特别配置,calico会自动为网络分配subnet,当然我们也可以根据 ...

  4. 第 8 章 容器网络 - 071 - 如何定制 Calico 的 IP 池?

    定制IP池 首先定义一个 IP Pool,比如: calicoctl create -f ipPool.yml 用此 IP Pool 创建 calico 网络. docker network crea ...

  5. [k8s]docker calico网络&docker cluster-store

    docker cluster-store选项 etcd-calico(bgp)实现docker夸主机通信 配置calico网络 - 启动etcd etcd --listen-client-urls h ...

  6. Calico网络插件

    以下大部分是本人参考各种资料{官方文档.书籍}对知识的汇总和整理,其中有理解错误的地方请大神留言和指正,嘿嘿~~ 1.概述 参考文档:https://projectcalico.docs.tigera ...

  7. K8S Calico网络插件

    0.前言 参考文档:https://github.com/containernetworking/cni Pod网络插件,为了实现Pod网络而需要的插件.组件.由于Kubernetes通过开放的CNI ...

  8. 如何部署 Calico 网络?- 每天5分钟玩转 Docker 容器技术(67)

    Calico 是一个纯三层的虚拟网络方案,Calico 为每个容器分配一个 IP,每个 host 都是 router,把不同 host 的容器连接起来.与 VxLAN 不同的是,Calico 不对数据 ...

  9. 如何定制 Calico 的 IP 池?- 每天5分钟玩转 Docker 容器技术(71)

    在前面的小节中,我们没有特别配置,calico 会为自动为网络分配 subnet,当然我们也可以定制. 首先定义一个 IP Pool,比如: cat << EOF | calicoctl ...

随机推荐

  1. Redis操作hash

    来自:http://www.cnblogs.com/alex3714/articles/6217453.html Hash操作 hash表现形式上有些像pyhton中的dict,可以存储一组关联性较强 ...

  2. django url分发,视图,模板回顾

    Django基础轮廓 MTV+controller 一 url分发系统: 1 简单使用 url(r'^articles/2003/$', views.special_case_2003), # spe ...

  3. 回去试idea

    https://blog.csdn.net/s_eal/article/details/81486472?utm_source=blogxgwz0

  4. linux安装成功后怎么调出终端

    一.Ubuntu 桌面如下,点击搜索 二.输入terminal 终端 三.锁定到菜单栏 四.接下来就可以练习linux下的常用命令,如:ls  mkdir  cat    touch 等等 这些命令后 ...

  5. JavaScript的函数闭包详细解释

    闭包是指有权访问另一个函数作用域中的变量的函数 一.创建闭包的常见的方式: 就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量. //通过闭包可以返回局部变量 function b ...

  6. Linux运维期中架构(50台集群)

    一.期中架构 二.期中架构-前端部分 三.第三阶段作业-期中架构

  7. pip 升级 pip

    For Python2 sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade pip For Python3 ...

  8. 【区块链】【一】Hash 算法【转】

    问题导读1.哈希算法在区块链的作用是什么?2.什么是哈希算法?3.哈希算法是否可逆?4.比特币采用的是什么哈希算法? 作用在学习哈希算法前,我们需要知道哈希在区块链的作用哈希算法的作用如下:区块链通过 ...

  9. Bootstrap开发框架视频整理

    最近到客户处进行实地培训,整理了很多培训的材料,现将它们录制相关主题的视频,作为我的Bootstrap开发框架的知识补充,希望给感兴趣的朋友进行了解.培训内容主要包括基础框架部分.MVC框架部分.Bo ...

  10. RuntimeError: An attempt has been made to start a new process before the current process has finished its bootstrapping phase. This probably means that you are not using fork to start your c

    Error Msg: Traceback (most recent call last): File "<string>", line 1, in <module ...