这是我参与「第四届青训营 」笔记创作活动的的第13天
Kubernetes
概念
- Pod:Kubernetes 的基本构建块。 一个 Pod 包含一组(一个或多个)容器。 通常,每个 Pod 有一个容器。
- Depolyment:- Deployment是一个部署在Pod内的一个或多个容器映像(Docker ..etc)的组,并通过Kubernetes部署控制器监视和创建,更新或删除此类部署
- StatefulSet:StatefulSet 是用于管理有状态应用的工作负载对象,与 ReplicaSet和Deployment这两个对象不同,StatefulSet 不仅能管理 Pod 的对象,还它能够保证这些 Pod 的顺序性和唯一性。
- Volume:Kubernetes提供了更强大的Volume机制和插件,解决了容器数据持久化以及容器间共享数据的问题。Kubernetes存储卷的生命周期与Pod绑定
- 容器挂掉后Kubelet再次重启容器时,Volume的数据依然还在
- Pod删除时,Volume才会清理。数据是否丢失取决于具体的Volume类型,比如emptyDir的数据会丢失,而PV的数据则不会丢
- PV:PV是集群中的一块存储,一般可以由集群的管理员事先供应,或者使用storage class的方式来动态供应。pv属于集群资源,它们的生命周期跟使用它们的pod时相互独立。
- PVC:表达的是用户对存储的请求(persistant volume claim),也是kubernetes中独立存在的API资源。Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源。
- Node:Kubernetes 通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载。 节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。 每个节点包含运行 Pod 所需的服务; 这些节点由 控制面 负责管理。
Kubernetes架构
-
ETCD
- 持久化数据中心
- 维护集群中所有数据的有序性和一致性
- 事件机制同步数据变更
-
APIServer
- 对所有组件提供 API 接口
- 负责 admission,鉴权等功能
- 提供后端 etcd 数据 cacher,降低 ETCD 压力
- 结合 ETCD,提供 List-Watch 机制
-
Controller-manager
- 提供一系列控制器,负责维护各种对象的生命周期 比如: Node controller, PV controller, Deployment controller, StatefulSet controller 等
-
Kubelet
- 基于 Pod 声明,真正开始启动容器,负责容器生命周期维护
-
Kube-proxy
- 网络代理,负责维护节点网络规则,接管 Pod 出入流量
-
核心通信机制 - List-Watch
- 资源上报
- 资源分配
- 状态维护
- 资源回收
- 调度流程