这是我参与「第四届青训营 」笔记创作活动的第2天
-
部署WordPress应用:怎样安装docker
-
容器的定义 容器必须要有一个基础设施物理机,只有一个操作系统。
-
Kubernetes简介
- 为什么要用kubernetes?因为kubernetes依赖于宿主机去生存,方便管理。应用数量巨大,脚本之间很难管理。kubernetes能够解决这些问题
- 如何进行编排操作系统
-Kubernetes 的特点:便携,可拓展,开源
目的:管理容器应用和服务
作用:声明式配置和自动化
如何在kubernetes里面部署wordpress应用?
-
pod -
deployment/StatefulSet -
Volume(写死在pod里,没有办法进行一些自动化的管理/PVC(进行封装,持久化存储的声明)/PV(映射到一个主机的空间,由管理员和kubernetes自动创建)/StorageClass(一个类的存储,没有的话需要管理员) -
Node(携带机器资源)
pod是最小单位,作为容器应用,完全同质,需要用户去创建还有PVC,storage class动态创建一个pv,代表了一个存储介质和存储空间。deployment是一组pod的抽象。
-
kubernetes的设计准则 线下兼容
代码开源
控制闭环
简单到复杂简单借口方便使用
模块化:组件,接口,插件
kubernetes管理调度原则
Kubernetes 的调度器在为 pod 选择运行节点的时候,只会考虑到调度那个时间点集群的状态,经过一系列的算法选择一个当时最合适的节点。但是集群的状态是不断变化的,用户创建的 pod 也是动态的,随着时间变化,原来调度到某个节点上的 pod 现在看来可能有更好的节点可以选择。比如考虑到下面这些情况:
- 调度 pod 的条件已经不再满足,比如节点的 taints 和 labels 发生了变化
- 新节点加入了集群。如果默认配置了把 pod 打散,那么应该有一些 pod 最好运行在新节点上
- 节点的使用率不均匀。调度后,有些节点的分配率和使用率比较高,另外一些比较低
- 节点上有资源碎片。有些节点调度之后还剩余部分资源,但是又低于任何 pod 的请求资源;或者 memory 资源已经用完,但是 CPU 还有挺多没有使用。
K8S控制架构 ERCD:持久化数据中心,维护集群中所有数据的有序性和一致性,时间机制同步数据变更
APIserver:所有组件收敛的入口,对所有组件提供API接口,负责admission,鉴权能力等功能,提供后端ETCD数据Cacher降低ETCD压力,结合ETCD,提供List-Watch机制
Controller-Manager:提供一系列控制器,负责维护各种对象的生命周期,比如:Node controller,PV controller,deployment controller
Scheduler:负责应用实例的调度,把Pod绑定到合适的Node。
Kubelet:基于Pod声明,真正开始启动容器,负责容器生命周期维护
Kube-proxy: 网络代理,负责维护节点网络规则,接管Pod出入流量。
Kubernetes 核心通信机制-List-Watch
- 资源分配:存储卷---Pod/PVC --mounter/volume manager(kubelet) --- PV controller Provisionner/Attach controller(controller manager)
-Kubenetes 的局限性
非原生资源的精细化管理能力
动态资源介入,管理能力
调度功能和性能
调度质量
个人思考与总结
本节课深入学习了Kubernetes资源管理及调度的理论知识,了解了Kubernetes的基础架构,对企业的大数据中心基础架构有了更深入的了解,深入了解了大数据建设中心的集群架构。可以看到Kubernetes资源调度没有完美的方法,资源管理调度,应用优先级,监控等跟很多因素相关,只有根据各种可能的问题提出一些针对性的解决方案,因为集群资源的使用不是静态的,而是随着时间不断变化的。