kubernetes权威指南 第4版 第一二章节读书笔记
1. HPA与之前的RC、Deployment一样,也属于一种Kubernetes资源对象。通过追踪分析指定RC控制的所有目标Pod的负载变化情况,来确定是否需要有针对性地调整目标Pod的副本数量,这是HPA的实现原理。HPA有以下两种方式作为Pod负载的度量指标:CPUUtilizationPercentage 应用程序自定义的度量指标,比如服务在每秒内的相应请求数(TPS或QPS)。CPUUtilizationPercentage是一个算术平均值,即目标Pod所有副本自 身的CPU利用率的平均值。一个Pod自身的CPU利用率是该Pod当前CPU 的使用量除以它的Pod Request的值,比如定义一个Pod的Pod Request为 0.4,而当前Pod的CPU使用量为0.2,则它的CPU使用率为50%,这样就 可以算出一个RC控制的所有Pod副本的CPU利用率的算术平均值了。在CPUUtilizationPercentage计算过程中使用到的Pod的CPU使用量通常是1min内的平均值
2. StatefulSet特性:StatefulSet里的每个Pod都有稳定、唯一的网络标识,可以用来 发现集群内的其他成员。StatefulSet控制的Pod副本的启停顺序是受控的,操作第n个Pod 时,前n-1个Pod已经是运行且准备好的状态。StatefulSet里的Pod采用稳定的持久化存储卷,通过PV或PVC来 实现,删除Pod时默认不会删除与StatefulSet相关的存储卷(为了保证数 据的安全)StatefulSet除了要与PV卷捆绑使用以存储Pod的状态数据,还要与 Headless Service配合使用,即在每个StatefulSet定义中都要声明它属于 哪个Headless Service。Headless Service与普通Service的关键区别在于, 它没有Cluster IP,如果解析Headless Service的DNS域名,则返回的是该 Service对应的全部Pod的Endpoint列表。StatefulSet在Headless Service的 基础上又为StatefulSet控制的每个Pod实例都创建了一个DNS域名:podname.headless.service name
3. PV: accessModes属性,目前有以下类型: ReadWriteOnce:读写权限,并且只能被单个Node挂载 ReadOnlyMany:只读权限,允许被多个Node挂载 ReadWriteMany:读写权限,允许被多个Node挂载
PV是有状态的对象,它的状态有以下几种:Available:空闲状态。Bound:已经绑定到某个PVC上。Released:对应的PVC已经被删除,但资源还没有被集群收 回。Failed:PV自动回收失败。Reclaiming:用户删除PVC释放对PV的占用后,系统根据PV的"reclaim policy"决定对PV执行何种回收操作。 目前,"reclaim policy"有三种方式:Retained、Recycled、Deleted。Retained:保护被PVC释放的PV及其上数据,并将PV状态改成"released",不将被其它PVC绑定。集群管理员手动通过如下步骤释放存储资源:手动删除PV,但与其相关的后端存储资源如(AWS EBS, GCE PD, Azure Disk, or Cinder volume)仍然存在。手动清空后端存储volume上的数据。手动删除后端存储volume,或者重复使用后端volume,为其创建新的PV Delete:删除被PVC释放的PV及其后端存储volume。对于动态PV其"reclaim policy"继承自其"storage class",默认是Delete。集群管理员负责将"storage class"的"reclaim policy"设置成用户期望的形式,否则需要用户手动为创建后的动态PV编辑"reclaim policy"
4. kubelet的职责在于通过RPC管理容器的生命周期,实现容器生命周 期的钩子,存活和健康监测,以及执行Pod的重启策略等
5. 目前还有一个潜在问题是,kubelet处理所有的请求连接,使其有成 为Node通信瓶颈的可能。在设计CRI时,要让容器运行时能够跳过中间 过程。容器运行时可以启动一个单独的流式服务来处理请求(还能对 Pod的资源使用情况进行记录),并将服务地址返回给kubelet。这样 kubelet就能反馈信息给API Server,使之可以直接连接到容器运行时提 供的服务,并连接到客户端
6. 目前已经有多款开源CRI项目可用于Kubernetes:Docker、CRI-O、 Containerd、frakti(基于Hypervisor的容器运行时),各CRI运行时的安 装手册可参考官网https://kubernetes.io/docs/setup/cri/的说明