一、背景介绍
云计算三大类型:
IaaS:即基础设施即服务
PaaS:即平台即服务
SaaS:即软件即服务
docker容器技术的迅猛发展:
一次构建,到处运行
容器的快速轻量
完整的生态环境
二、什么是kubernates
k8s是google开源的容器集群管理系统,在谷歌内部被称borg,在docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
kubernates优势:
容器编排
轻量级
开源
弹性伸缩
负载均衡
三、k8s的核心概念
集群:
集群式一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了kubernetes平台,这里可以看到一个典型的kubernetes架构图
image
从上面可以看到如下组件,使用特别的图标表示service和label:
pod
container(容器)
label(标签)
replication controller(复制控制器)
service(服务)
node(节点)
kubenates master(主节点)
这里分别讲述一下各个组件的概念:
1、pod
运行于node节点上,。pod内包含的容器运行在同一宿主主机上,使用相同的网络命名空间、ip地址和端口、能够通过localhost进行通信,pod是k8s进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活,一个pod可以包含一个容器或者多个相关容器。
2、Replication Controller
Recplication Controller用来管理pod的副本,保证集群中存在置顶数量的pod副本,集群中副本的数量大于置顶数量,则会杀掉置顶数量之外的多余容器数量,反之则会启动少于置顶数量个数的容器,保证数量不变,replication controller是实现弹性伸缩、动态扩容和滚动升级的核心。如动态图所示:
image3、service
service定义了pod的逻辑集合和访问该集合的策略,是真实服务的抽象,service提供了一个统一的服务入口以及服务代理和发现机制,使用户不需要了解后台pod如何运行。
如果pods是短暂的,那么重启时ip地址发生了变化,那么怎么才能从前端容器正确指向后台容器呢?
service是定义一系列pod以及份这些pod的策略的一层抽象,service通过label找到Pod组,因为service是抽象的,所以在图标里通常看不到它的存在,这也就让这一概念更难以理解了。
现在,假定有两个后台pod,并且定义后台service的名词为'back-service',labe选择器为(tier=back,app=mapp),back-service的service会完成如下两件重要的事情:
-
会为service创建一个本地集群的dns入口,因此前端pod只需要dns查找主机名为'back-service',就能够解析出前端应用程序可用的ip地址。
-
现在前端已经得到了后台服务的ip地址,但是它应该选择2个后台pod的哪一个呢?service在这两个后台pod之间提供透明的负载均衡,会将请求分发给其中的容易一个,通过每个node上运行的代理(kube-proxy)完成。如图:
4、label
k8s中的容器api对象都是通过Label进行 ,label的实质是一系列的k/v键值对,label是replication controllerh和service运行的基础,二者通过label进行判别node上运行的pod。
5、node
node是k8s集群架构中运行pode的服务器节点,通常称为minion,node是k8s集群操作的单元,用来承载被分配的pod的运行,是pod运行的宿主机,每个节点都运行如下的k8s关键主键:
- kubelet:是主节点代理
- kube-proxy:service使用其将连接路由到Pod
- docker或者rocket:k8s使用的容器技术来创建容器
四、深入体验
接下来可以继续深入的看看k8s官方文档,或者访问 https://kubernetes.io/docs/tutorials/kubernetes-basics/cluster-interactive/ 在这里边敲代码,加深体验。
网友评论