一.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.网络
在使用了pause容器创建共享网卡后,pod内部容器之间访问就使用localhost,就相当于本地访问一样,因此性能非常高
一个pod节点不能 分裂存储在多个node节点,但是多个pod副本可以随机分配到不同的node节点进行存储
二.组件一 RC
kubernetes核心组件原理
RC(replicationController)副本控制器
作用:永远保证服务数量和预期的数量保持一致,也就是说服务永远不会宕机
在新版的kubernetes中建议使用replicaSet代替ReplicationController
三.组件-RS
RC和RS的区别:
为啥要使用RS 不使用RC?
RC只支持单个标签的选择器,
RS不仅支持单标签,还支持复合选择器
lables 标签,用来唯一标识一个组件的,k8s中所有的资源对象都可以被标签类进行标识。通过标签标识后,方便、灵活的查询到这个组件,查询一组相同业务pod
标签选择器:根据标签key=value查询与之对应匹配的资源对象(pod,rs,deployment)
标签选择器-标签-选择资源对象(唯一定位一个资源对象)
复合选择器:支持多个标签选择器
注意:如果单独使用RS,就不支持滚动更新。
资源对象组成关系:
1、deployment部署资源对象,管理rs,支持滚动更新,更新模式就是创建一个新的rs, 然后由rs创建新的版本pod
2.rs控制器,控制pod的数量与预期的数量保持一致。
四.组件-HPA
HPA自动更新,k8s会根据cpu利用率来进行扩容,如果cpu利用率超过80%此时就会对pod进行扩容,如果cpu利用率低于50%就会缩容
五。组件statefullSet
deployment,statefullset都是用来部署服务的,deployment用来部署无状态服务的,不适合部署有状态的服务
statefullSet用来部署有状态服务的
无状态:没有实时的数据需要存储
在服务器集群网络中,把其中一个服务抽离出去,过一段时间再加进来,对服务没有任何影响