k8s 是谷歌开源的容器集群管理,是 google 大规模容器管理技术 google bolg 的开源版本,主要功能包括:
声明式系统:
仅限于描述要达到什么目的,如何达到目的交给系统去操作。
直接声明:直接说明我想要达到什么目的
间接声明:不直接说明我需要达到什么目的,只会把我的需求放在指定的位置,可以在方便的时候拿来处理。
命令式系统:
给出指令之后需要获取到系统的反馈才能决定下一步怎么做,即系统按照我们的指令一步步执行。
k8s的所有管理能力构建在对象抽象的基础上,核心对象包括:
图源网络
k8s 会将一部分节点当作 master 节点(控制节点),剩下的节点都是 worker node 。
基于 Raft 协议的分布式 key-value 存储数据库,可用于服务发现、共享配置以及一致性服务
整个云平台的 api 网关:即是这个云平台集群的入口,用来接收所有用户的请求,然后将需要保存的用户请求保存在一个 etcd 中
主要功能:
controller 里面包含各种对象控制器,比如 node controller 监控 node 节点的健康状态,从而判断节点是不是要做一些操作,service controller 可以判断创建的 service 是不是需要创建负载均衡等。
调度器:监控当前集群所有未调度的pod。会先判断这个 pod 之前有没有做过调度,如果没有就会创建调度任务,调度完之后将数据保存在 etcd 中。
调度器其实是一个特殊的控制器,工作原理一致。
调度阶段:
1、预测阶段: 过滤不能满足业务需求的节点,如资源不足、端口冲突等
2、最优选阶段:对满足需求的节点进行评分,并选择最优节点
3、绑定阶段:将最优节点和 pod 绑定