K8S的概述和特点
概述
- K8S是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过K8S能够进行应用的自动化部署和扩缩容。在K8S中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。K8S积累了作为Google生产环境运行工作负载15年的经验,并吸收了来自于社区的最佳想法和实践。
特点
自动装箱
- 基于容器对应用运行环境的资源配置去自动部署应用容器
自我修复(自愈能力)
-
当容器运行失败时,会对容器进行重启
-
当所部署的Node节点有问题时,会对容器进行重新部署和重新调度
-
当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
水平扩展
- 通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应用容器进行规模扩大或规模裁剪
服务发现
- 用户不需要使用额外的服务发现机制,就能够基于K8S自身能力实现服务发现和负载均衡
滚动更新
- 可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
版本回退
- 可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
密钥和配置管理
- 在不需要重新构建镜像的情况下,可以部署和更新密钥以及应用配置,类似热部署
存储编排
- 自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要,存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph等)、公共云存储服务
K8S架构组件
Master node(Master节点)
Api Server
- 集群统一入口,提供restful方式接口进行操作,交给etcd存储
scheduler
- 节点调度,选择Worker node进行应用部署
controller-manager
- 处理集群中常规后台任务,一个资源对应一个控制器,比如:订单管理对应一个订单管理的控制器,购物车对应购物车的控制器
etcd
- 存储系统,用于保存集群相关的数据
Worker node(工作节点)
kubelet
- master派到woker node的代表,管理本机容器
kube-proxy
- 提供网络代理、负载均衡等操作
k8S的核心概念
Pod
- 最小的部署单元
- 一组容器的集合
- 共享网络
- 生命周期是短暂的
Controller
- 确保预期的pod副本数量
- 进行无状态应用部署(无状态指没有任何约束条件,可以直接部署)
- 进行有状态的应用部署(有状态指具有一定的约束条件,比如应用需要固定的ip端口)
- 确保所有的node运行同一个pod
- 一次性任务和定时任务
Service
- 进行有状态的应用部署(有状态指具有一定的约束条件,比如应用需要固定的ip端口)
- 确保所有的node运行同一个pod
- 一次性任务和定时任务
Service
- 定义一组pod的访问规则