2019独角兽企业重金招聘Python工程师标准>>>

前面我们完成了 Calico 网络的部署并运行了容器,今天将讨论 Calico 的连通性。

测试一下 bbox1 与 bbox2 的连通性:

ping 成功,数据包流向如下图所示。

① 根据 bbox1 的路由表,将数据包从 cal0 发出。

② 数据经过 veth pair 到达 host1,查看路由表,数据由 enp0s8 发给 host2(192.168.56.105)。

192.168.183.64/26 via 192.168.56.105 dev enp0s8  proto bird

③ host2 收到数据包,根据路由表发送给 calic8bf9e68397,进而通过 veth pair cali0 到达 bbox2。

192.168.183.65 dev calic8bf9e68397  scope link

接下来我们看看不同 calico 网络之间的连通性。

创建 cal_net2。

docker network create --driver calico --ipam-driver calico-ipam cal_net2

在 host1 中运行容器 bbox3,连接到 cal_net2:

docker container run --net cal_net2 --name bbox3 -tid busybox

calico 为 bbox3 分配了 IP 192.168.119.5

验证 bbox1 与 bbox3 的连通性。

虽然 bbox1 和 bbox3 都位于 host1,而且都在一个 subnet 192.168.119.0/26,但它们属于不同的 calico 网络,默认不能通行。

calico 默认的 policy 规则是:容器只能与同一个 calico 网络中的容器通信

calico 的每个网络都有一个同名的 profile,profile 中定义了该网络的 policy。我们具体看一下 cal_net1 的 profile:

calicoctl get profile cal_net1 -o yaml

① 命名为 cal_net1,这就是 calico 网络 cal_net1 的 profile。

② 为 profile 添加一个 tag cal_net1。注意,这个 tag 虽然也叫 cal_net1,其实可以随便设置,这跟上面的 name: cal_net1 没有任何关系。此 tag 后面会用到。

③ egress 对从容器发出的数据包进行控制,当前没有任何限制。

④ ingress 对进入容器的数据包进行限制,当前设置是接收来自 tag cal_net1 的容器,根据第 ① 步设置我们知道,实际上就是只接收本网络的数据包,这也进一步解释了前面的实验结果。

既然这是默认 policy,那就有方法定制 policy,这也是 calico 较其他网络方案最大的特性。下一节就我们讨论如何定制 calico policy。

转载于:https://my.oschina.net/u/2397560/blog/1538888

Calico 的默认连通性 - 每天5分钟玩转 Docker 容器技术(69)相关推荐

  1. 日志管理之 Docker logs - 每天5分钟玩转 Docker 容器技术(87)

    高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要. 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要.考虑到容器短暂和不固定的生命周期,当我们需 ...

  2. k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)

    在实践之前,必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石. Cluster  Cluster 是计算.存储和网络资源的集合,Kubernetes 利用 ...

  3. DaemonSet 典型应用场景 - 每天5分钟玩转 Docker 容器技术(129)

    Deployment 部署的副本 Pod 会分布在各个 Node 上,每个 Node 都可能运行好几个副本.DaemonSet 的不同之处在于:每个 Node 上最多只能运行一个副本. DaemonS ...

  4. 回滚 - 每天5分钟玩转 Docker 容器技术(141)

    kubectl apply 每次更新应用时 Kubernetes 都会记录下当前的配置,保存为一个 revision(版次),这样就可以回滚到某个特定 revision. 默认配置下,Kubernet ...

  5. 在 Scale Up 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(145)

    2019独角兽企业重金招聘Python工程师标准>>> 对于多副本应用,当执行 Scale Up 操作时,新副本会作为 backend 被添加到 Service 的负责均衡中,与已有 ...

  6. Kubernetes Dashboard - 每天5分钟玩转 Docker 容器技术(173)

    前面章节 Kubernetes 所有的操作我们都是通过命令行工具 kubectl 完成的.为了提供更丰富的用户体验,Kubernetes 还开发了一个基于 Web 的 Dashboard,用户可以用 ...

  7. 开发自己的 chart - 每天5分钟玩转 Docker 容器技术(167)

    Kubernetes 给我们提供了大量官方 chart,不过要部署微服务应用,还是需要开发自己的 chart,下面就来实践这个主题. 创建 chart 执行 helm create mychart 的 ...

  8. 外网如何访问 Service?- 每天5分钟玩转 Docker 容器技术(139)

    除了 Cluster 内部可以访问 Service,很多情况我们也希望应用的 Service 能够暴露给 Cluster 外部.Kubernetes 提供了多种类型的 Service,默认是 Clus ...

  9. 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)

    前面我们已经学习了如何部署 service,也验证了 swarm 的 failover 特性.不过截止到现在,有一个重要问题还没有涉及:如何访问 service?这就是本节要讨论的问题. 为了便于分析 ...

最新文章

  1. 基于YOLO的手部检测和计数实现(课程设计,训练和测试)(1)
  2. 华为有了鸿蒙就可以翻身吗,鸿蒙2.0要来了,华为手机能靠此翻身吗?
  3. matlab生成图像路径列表和标签,打乱顺序
  4. rhel7+apache+c cgi+动态域名实现web访问
  5. Jquery的ajax提交成功后刷新页面
  6. 方法有多少个参数才算多?
  7. QC与IE8 、WINDOWS 7 兼容问题的解决方案
  8. 页面滚动效果库,有点儿皮!
  9. ECshop生态全面开放,城市合伙人招募火热启动
  10. typeof与instanceof的区别
  11. 常见面试算法:k-近邻算法原理与python案例实现
  12. [转载] Python字典及基本操作(超级详细)
  13. Java Hello World程序
  14. 项目管理的方法论 一
  15. jq ui datepicker添加时分秒
  16. kali之搜狗输入法安装下载
  17. 如何从官网下载Chrome浏览器离线安装包
  18. Python学习手册(笔记)
  19. MySQL大表优化方案(推荐一)
  20. 世纪互联与华为联手打造云数据中心是一步好旗!

热门文章

  1. python数值类型教程_Python数值类型 int、float、complex 详解
  2. CSS基础——盒子模型【学习笔记】
  3. Centos使用yum极速安装Java 1.8
  4. HTTPRunner学习笔记
  5. java 图片识别_JAVA识别图片中的文字
  6. axios post json_助你解析Axios原理之一:如何实现多种请求方式
  7. get请求可以传body吗_面试必备:GET和POST的区别详细解说
  8. c语言基本数据类型1,1、C语言基本数据类型
  9. shared_ptr and
  10. 3.4.1 - Numeric Types