云架构师的进阶之路(九)

基于Mesos和Kubernetes了解容器平台

搭建完毕虚拟化层和云平台层,接下来就是容器层了。

Docker有几个核心技术,一个是镜像,一个是运行时,运行时又分看起来隔离的namespace和用起来隔离的cgroup。

Docker的镜像也是一种Copy on Write的镜像格式,下面的层级是只读的,所有的写入都在最上层。

云架构师的进阶之路(九)

对于运行时,Docker使用的namespace除了network namespace外,还有很多,如下表格所示。

云架构师的进阶之路(九)

Docker对于cgroup的使用是在运行Docker的时候,在路径/sys/fs/cgroup/cpu/docker/下面控制容器运行使用的资源。

可见容器并没有使用更新的技术,而是一种新型的交付方式,也即应用的交付应该是一容器镜像的方式交付,容器一旦启动起来,就不应该进入容器做各种修改,这就是不可改变基础设施。

由于容器的镜像不包含操作系统内核,因而小的多,可以进行跨环境的迁移和弹性伸缩。

下面的文章,总结了几点容器的正确使用姿势。

容器化的本质?基于镜像的跨环境迁移

有关容器的六大误区和八大正确场景

有了容器之后,接下来就是容器平台的选型,其实swarm, mesos, kubernetes各有优势,也可以在不同的阶段,选择使用不同的容器平台。

Docker, Kubernetes, DCOS 不谈信仰谈技术

容器平台选型的十大模式:Docker、DC/OS、K8S谁与当先?

基于Mesos的DCOS更像是一个数据中心管理平台,而非仅仅容器管理平台,他可以兼容Kubernetes的编排,同时也能跑各种大数据应用。

云架构师的进阶之路(九)

 

DC/OS的基本思想——为什么说他是数据中心操作系统

号称了解mesos双层调度的你,先来回答下面这五个问题!

DC/OS的容器功能

DC/OS的网络功能

DC/OS的存储功能

DC/OS的服务发现与负载均衡功能

在容器领域,基于Kubernetes的容器编排已经成为事实标准。

云架构师的进阶之路(九)

基于万节点Kubernetes支撑大规模云应用实践

支撑大规模公有云的Kubernetes改进与优化 (1)

支撑大规模公有云的Kubernetes改进与优化 (2)

支撑大规模公有云的Kubernetes改进与优化 (3)

为支撑高并发应用的 Kubernetes 的性能优化

当我们深入分析Kubernetes管理容器模式的时候,我们也能看到熟悉的面孔。

在Kubernetes里面,租户之间靠namespace进行隔离,这个不是Docker的namespace,而是Kubernetes的概念。

API Server的鉴权,也是基于Role Based Access Control模式。

Kubernetes对于namespace,也有Quota配置,使用ResourceQuota。

云架构师的进阶之路(九)

当Kubernetes想选择一个节点运行pod的时候,选择的过程也是通过预选和优选两个阶段。

  • 预选(Filtering)
  • PodFitsResources满足资源
  • PodSelectorMatches符合标签
  • PodFitsHost符合节点名称
  • 优选(Weighting)
  • LeastRequestedPriority资源消耗最小
  • BalancedResourceAllocation资源使用最均衡

Kubernetes规定了以下的网络模型定义。

  • 所有的容器都可以在不使用NAT的情况下同别的容器通信
  • 所有的节点都可以在不使用NAT的情况下同所有的容器通信
  • 容器的地址和别人看到的地址一样

也即容器平台应该有自己的私有子网,常用的有Flannel, Calico, Openvswitch都是可以的。

既可以使用Overlay的方式,如图flannel.

云架构师的进阶之路(九)

也可以使用BGP的方式,如图Calico

云架构师的进阶之路(九)