linux namespace 与 cgroup 是容器技术的基石。本篇的内容是探究docker网络的基本实现,即 linux network namespace 与 veth 的作用,基于探究与学习容器与容器之间通信,容器与外部网络通信,宿主机与容器通信。接下来首先对network namespace 与 veth 做基本介绍,然后模拟docker的网络通信模式。
k8s与安全相关的内容相当多,各种类型的证书、jwt token,相关的概念还有非对称加密、数字签名、数字证书各种内容,本篇的目的就是将这些一并学习。
初次接触k8s最让我感到复杂的是网络,CNI所涉及的技术名词太多,每种不同类型的CNI都有一套各自的实现。本篇的目的是flannel为切入点对k8s集群pod之间通信有个基本的理解。当然我也不是专业的网工,所以内容不够详尽,只能尽可能描述我所理解的内容。本篇参考了不少网上其他人的博客,更像是内容的缝合。
默认的calico-node之间是full mesh形式的,即所有calico-node之间都会建立BGP连接,如果有200个节点就在整个集群一共建立了4w个BGP连接,当集群节点数量比较多时,路由信息的变更都会带来集群流量的激增,在混合云环境中会带来额外的成本开销,也会对集群应用造成影响。参考网络上的文档,如果集群规模超过100个节点就推荐使用route reflector,本篇记录下我对于集群中自有节点和公有云节点部署route reflector的过程。