深入Kubernetes络技术 -...

19
深入Kubernetes络技术 陈星宇 浙江大学 SEL(VLIS)实验室 www.sel.zju.edu.cn

Transcript of 深入Kubernetes络技术 -...

Page 1: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

深入Kubernetes⽹网络技术

陈星宇  浙江大学 SEL(VLIS)实验室  www.sel.zju.edu.cn  

Page 2: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

陈星宇:    浙江大学 计算机系研究生  研究方向 分布式系统 轻量级虚拟化  Docker  User  and  Lover    Google  Kubernetes  Contributor    Email  :  [email protected]  GitHub  id  :  WIZARD-­‐CXY  

Docker  Meetup.  杭州  

Page 3: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

演讲流程  

1 • 回顾简介Docker网络模型

2 • 简介Kubernetes网络模型

3 • 高级Kubernetes网络实现

Docker  Meetup.  杭州   3  

Page 4: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

 Docker网络模型

Docker  Meetup.  杭州  

1  bridge  (默认模式)    2  container:containerID  与其他容器共用网络命名空间    3  host  与宿主机共享网络命名空间    4  none  高级 用户自行设置

Page 5: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

 Docker网络模型

1 当Docker  daemon进程启动时,它在主机系统上启动一个名为docker0的新的虚拟网桥接口。Docker分配一个虚拟子网,给未来的容器使用。  

2 当新的容器启动时,一对新的虚拟接口被创建并赋予docker0网桥的子网范围内的地址。      3   Docker自动配置iptables规则允许同一主机上的容器互相通信并允许容器与外界通信。

Docker  Meetup.  杭州  

Page 6: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

 Docker网络模型

•  由上面讲的默认Docker网络模型,Docker容器无法跨主机通信。不在同一个虚拟网桥上!  

•  使用NAT技术将容器服务端口暴露到宿主机  但是暴露的端口需要被静态或动态配置

Docker  Meetup.  杭州  

Page 7: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

What  is  Kubernetes?

Docker  Meetup.  杭州  

Page 8: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

•  IP  per  Pod  :  每一个pod有一个独立的IP地址,使用这个IP地址可以直接与其他机器上的容器通信  

 •  同一个Pod里的容器使用localhost通信  

•  每个pod里自带一个infra容器,其他真正的用户容器共用他的net和ipc命名空间  

  ⺴⽹网络模式—net=container:<infraContainerID>  

Kubernetes  网络模型

Docker  Meetup.  杭州  

Page 9: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

Kubernetes网络模型

Kubernetes运行对网络的要求:    •  1 所有容器可以不使用NAT技术就可以与其他容器通信  

•  2 所有节点(物理机 虚拟机 容器)都可以不使用NAT同容器通信    •  3 容器看到的IP地址和别的机器看到的IP是一致的        这种模式便利了将虚拟机里的app迁移到容器里与服务发现等功能

Docker  Meetup.  杭州  

Page 10: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

如何实现Kubernetes对网络的要求

•  Google  Compute  Engine  

•  很多种开源的解决方法!  

•  本质是在一般的网路上再架设一层overlay  network  ,  使容器的网络运行在这层overlay 网络上。

Docker  Meetup.  杭州  

Page 11: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

Flannel

•  Flannel(h`ps://github.com/coreos/flannel)     满足Kubernetes网络要求的一个非常简单的搭建overlay  network的工具。它可以在几分钟内安装成功。很多使用Kubernetes的人都使用flannel搭建成功overlay  network。    比如由我们开发的针对Ubuntu  系统的Kubernetes部署方法:  h`ps://github.com/GoogleCloudPlacorm/kubernetes/blob/master/docs/gedng-­‐started-­‐guides/ubuntu_mulfnodes_cluster.md  

Docker  Meetup.  杭州  

Page 12: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

Flannel运行原理

Flannel使用Linux通用TUN/  TAP设备,并使用UDP封装IP数据包创建一个覆盖网络。它使用etcd维护子网的分配和ovelay网络和实际IP的映射。

Docker  Meetup.  杭州  

Page 13: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

其他技术

•  OpenVSwitch  with  GRE  tunnels  (h`p://wiredcraj.com/blog/mulf-­‐host-­‐docker-­‐network/)  

•  Weave  (h`ps://github.com/zedo/weave)  •  Calico  (h`ps://github.com/Metaswitch/calico)  •  OpenVPN  used  in  Azure  •  Socketplane  (h`ps://github.com/socketplane/socketplane/)  

Docker  Meetup.  杭州  

Page 14: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

socketplane  with  powerstrip

•  socketplane              最近刚被Docker收购,用以加强原来Docker薄弱的网络环节,是SDN的工具    

•  powerstrip     可插拔可配置的HTTP代理,允许Docker用户自定义pre-­‐hook  ,post-­‐hook。允许我们在真正的docker  daemon做容器创建启动删除等操作前做额外的操作,非常适合用于开发测试Docker插件。  

Docker  Meetup.  杭州  

Page 15: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

socketplane  特色

•  1 集成OpenVSwitch功能  •  2 使用VXLAN划分多个子网,  适合云系统多租户网络隔离的要求  

•  3 分布式的IP管理,防止多台主机上docker容器IP地址冲突  

•  4 使用mDNS技术,新节点自动加入集群,集群大小轻松伸缩

Docker  Meetup.  杭州  

Page 16: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

         Powerstrip

Docker  Meetup.  杭州  

Page 17: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

与Kubernetes  结合

•  启动socketplane  adapter 非常简单!  

•  更改kubelet里的docker_endpoint变量指向powerstrip  

 •  使用kubernetes里的label携带pod的网络信息如它属于哪个VLAN      

 •  将label信息用于启动容器的额外参数!

Docker  Meetup.  杭州  

Page 18: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

参考链接

•  h`p://blog.oddbit.com/2014/08/11/four-­‐ways-­‐to-­‐connect-­‐a-­‐docker/  •  h`ps://clusterhq.com/blog/powerstrip-­‐prototype-­‐docker-­‐extensions-­‐

today/  •  h`p://wiredcraj.com/blog/mulf-­‐host-­‐docker-­‐network/  

Docker  Meetup.  杭州  

Page 19: 深入Kubernetes络技术 - files.meetup.comfiles.meetup.com/16521172/ChenXinyu_Kubernetes_Network_Details.pdf · 演讲流程! 1 •回顾简介Docker网络模型 2 •简介Kubernetes网络模型

Docker  Meetup.  浙江大学 .  杭州