文章第一句话为“这是我参与「第四届青训营 」笔记创作活动的第29天
-
Kubernetes
- 定义:做一个容器编排,即管理容器应用和服务,声明配置和自动化
-
核心概念
- Pod:Kubernetes最小的单位
- Deployment/statefulset:Pod的分装、声明、更上一级的概念,可以跨不同存储卷
- Volume/PVC/PV/StorageClass:类存储,方便客户省去管理员的操作
- Node:机器的抽象概念,可携带很多资源
-
设计准则
- 声明式
- control loops
- 追求简单
- modularity
- legacy compatible
- 强调开发
-
架构
- ETCD:持久化数据中心;维护集群中所有数据的有序性和一致性;事件机制同步数据变更
- APIServer:其他组件交流的入口;负责admission,鉴权等功能;提供后端数据cacher,降低ETCD压力;结合ETCD提供List-Water机制(重要)
- Controller-Manager:控制控制器,负责维护各种对象的生命周期
- Scheduler:负责应用实例的调度,把Pod绑定到合适的Node
- Kubelet:基于Pod声明,真正开始启动容器,负责容器生命周期维护
- Kube-proxy:网络代理,负责维护节点网络规则,控制进出流量
-
List-Water机制:核心通信机制
- list保证pod不丢,watch:查看增量pod
-
核心功能
- 服务发现和负载均衡;存储编排;自动发布,回滚;自愈;密钥,配置管理;资源管理,应用编排调度
-
资源管理
-
资源种类
- 计算类、存储类(没有固定api)
- 对于外来的资源也可以上报或分配
-
资源分配
- 计算资源
- 存储卷
- 资源回收
-
-
调度
-
资源申请
- limits:上限
- requests:底线
-
调度流程
- 开始:watch机制
- 过滤节点
- (成功的前提)给节点打分;(不成功)尝试抢占
- (成功)给节点排序;(抢占失败)调度失败-》结束
- 选择最合适节点
- 结束
-
-
Kubernets还可优化:精细化管理能力、动态资源方面、调度功能、性能和质量
-
课外
- 容器:需要有物理机去运行,轻量便携,一次打包可以任意运行
- cAdvisor:资源采集器
-
总结:在在学习这节课之前,我在学校学习过程中已经学习到docker,但是也没有进一步扩展,但是今天的学习则是对容器,比如docker的进一步延伸,也就是在容器的基础上进行学习,老师也为我们讲解了实际工作中Kubernets的使用以及可能更加优化的地方对于大体量的公司可能缺点还是比较明显,但对于个体他还是比较通用的。