一、背景介绍

云计算三大类型:

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是实现弹性伸缩、动态扩容和滚动升级的核心。如动态图所示:

image

3、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)完成。如图:

image

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/ 在这里边敲代码,加深体验。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐