一.k8s架构

k8s架构介绍 k8s架构原理_架构

kubernetes集群架构(高可用) 多个master节点,每一个对应一群node节点

1.一个master对应一群node节点,node节点负责存储pod

2.node内部可以有一个或多个pod,具体情况看pod所消耗的资源(cpu 内存),同时也必须看硬件资源

3.pod是k8s操作最小单元,pod内部运行的是一个或多个容器

k8s?是一个容器编排工具,但是k8s不直接管理容器,而是间接通过pod的管理容器

pod特点:

1.有字节的ip

2.有自己的hostname

pod实际上相当于一个独立的容器(虚拟机器),而这个pod容器内部封装的是由docker引擎所创建的容器,可以理解为pod就是一个虚拟化分组。

pod内存可以存储一个或多个容器

pod作用?

pod内部封装的是容器,容器内部运行的是开发的应用程序,pod管理上线运行的应用程序。

定义:在通常情况下,在服务上线部署的时候,pod通常被用来部署一组相关的服务(什么一组相关的服务?)

一组相关服务:在一个请求链路上的服务,叫做一组相关服务,通常情况下,这一组相关服务,在调用链路上处于上下游的关系

经验建议:一个pod内部只允许部署一个容器

使用kubernetes构建服务集群,只需创建多个部署了相同服务的pod即可

pod原理?

1.数据存储

2.网络

k8s架构介绍 k8s架构原理_架构_02

在使用了pause容器创建共享网卡后,pod内部容器之间访问就使用localhost,就相当于本地访问一样,因此性能非常高

一个pod节点不能 分裂存储在多个node节点,但是多个pod副本可以随机分配到不同的node节点进行存储        

二.组件一 RC

kubernetes核心组件原理

RC(replicationController)副本控制器

作用:永远保证服务数量和预期的数量保持一致,也就是说服务永远不会宕机

在新版的kubernetes中建议使用replicaSet代替ReplicationController

三.组件-RS

RC和RS的区别:

为啥要使用RS 不使用RC?

RC只支持单个标签的选择器,

RS不仅支持单标签,还支持复合选择器

k8s架构介绍 k8s架构原理_k8s架构介绍_03

lables 标签,用来唯一标识一个组件的,k8s中所有的资源对象都可以被标签类进行标识。通过标签标识后,方便、灵活的查询到这个组件,查询一组相同业务pod

标签选择器:根据标签key=value查询与之对应匹配的资源对象(pod,rs,deployment)

标签选择器-标签-选择资源对象(唯一定位一个资源对象)

复合选择器:支持多个标签选择器

k8s架构介绍 k8s架构原理_链路_04

 注意:如果单独使用RS,就不支持滚动更新。

k8s架构介绍 k8s架构原理_架构_05

资源对象组成关系:

1、deployment部署资源对象,管理rs,支持滚动更新,更新模式就是创建一个新的rs, 然后由rs创建新的版本pod

2.rs控制器,控制pod的数量与预期的数量保持一致。

四.组件-HPA

HPA自动更新,k8s会根据cpu利用率来进行扩容,如果cpu利用率超过80%此时就会对pod进行扩容,如果cpu利用率低于50%就会缩容

五。组件statefullSet

deployment,statefullset都是用来部署服务的,deployment用来部署无状态服务的,不适合部署有状态的服务

statefullSet用来部署有状态服务的

无状态:没有实时的数据需要存储

在服务器集群网络中,把其中一个服务抽离出去,过一段时间再加进来,对服务没有任何影响