时速云联合创始人兼CTO王磊于11月27日在CSDN总部进行主题为《容器技术及Kubernetes介绍》的视频直播课程,王磊的视频直播课程获得很好的反响。可能有些小伙伴感慨错过了课程直播,我们整理了视频直播课程的干货内容分享给大家。
视频直播中,王磊主要讲了两个方面的内容:Docker相关技术介绍,kubernetes理念及架构。
1. Docker相关技术介绍
首先从docker镜像和docker容器两个大方面讲起的,浅谈了什么是docker;以及docker/容器的应用场景。docker/容器的应用场景方面主要讲了基于容器提供类似IaSS的功能的优势以及缺点等。Docker镜像的内容首先让大家了解什么是镜像以及镜像的特点,主要的内容还是讲如何管理镜像。
2. kubernetes理念及架构
主要介绍了kubernetes轻量级,插件式的架构设计等优势,然后围绕kubernetes的网络,资源管理,存储,服务发现及负载均衡,高可用,安全,日志,监控,Rolling Upgrade,服务编排这些特性来进行解析。
Kubernetes的基本架构和概念
Pod (最⼩部署单元,容器集合,共享存储、⺴络)
ReplicationController (pod⽣命周期控制器,scale 资源伸缩)Service (抽象服务出⼝,通过proxy 对多个容器负载均衡,内部服务发现)
Labels (标签,⽤于分类,查询筛选,规则由⽤户指定)
Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能如下:
1) 使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。
2) 以集群的方式运行、管理跨机器的容器。
3) 解决Docker跨机器容器之间的通讯问题。
4) Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。
当前Kubernetes支持GCE、vShpere、CoreOS、OpenShift、Azure等平台,除此之外,也可以直接运行在物理机上。
接下来本文主要从以下几方面阐述Kubernetes:
1) Kubernetes的主要概念。
2) Kubernetes的构件,包括Master组件、Kubelet、Proxy的详细介绍。
Kubernetes主要概念
1)Pods
Pod是Kubernetes的基本操作单元,把相关的一个或多个容器构成一个Pod,通常Pod里的容器运行相同的应用。Pod包含的容器运行在同一个Minion(Host)上,看作一个统一管理单元,共享相同的volumes和network namespace/IP和Port空间。
2)Services
Services也是Kubernetes的基本操作单元,是真实应用服务的抽象,每一个服务后面都有很多对应的容器来支持,通过Proxy的port和服务selector决定服务请求传递给后端提供服务的容器,对外表现为一个单一访问接口,外部不需要了解后端如何运行,这给扩展或维护后端带来很大的好处。
3)Replication Controllers
Replication Controller确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行,如果少于指定数量的pod副本(replicas),Replication Controller会启动新的Container,反之会杀死多余的以保证数量不变。Replication Controller使用预先定义的pod模板创建pods,一旦创建成功,pod 模板和创建的pods没有任何关联,可以修改pod 模板而不会对已创建pods有任何影响,也可以直接更新通过Replication Controller创建的pods。对于利用pod 模板创建的pods,Replication Controller根据label selector来关联,通过修改pods的label可以删除对应的pods。Replication Controller主要有如下用法:
4) Rescheduling
如上所述,Replication Controller会确保Kubernetes集群中指定的pod副本(replicas)在运行,即使在节点出错时。
5) Scaling
通过修改Replication Controller的副本(replicas)数量来水平扩展或者缩小运行的pods。
6) Rolling updates
Replication Controller的设计原则使得可以一个一个地替换pods来rolling updates服务。7) Multiple release tracks
如果需要在系统中运行multiple release的服务,Replication Controller使用labels来区分multiple release tracks。
8)Labels
Labels是用于区分Pod、Service、Replication Controller的key/value键值对,Pod、Service、 Replication Controller可以有多个label,但是每个label的key只能对应一个value。Labels是Service和Replication Controller运行的基础,为了将访问Service的请求转发给后端提供服务的多个容器,正是通过标识容器的labels来选择正确的容器。同样,Replication Controller也使用labels来管理通过pod 模板创建的一组容器,这样Replication Controller可以更加容易,方便地管理多个容器,无论有多少容器。