Kubernetes
简介
k8s是google开源的容器化编排引擎,它支持自动化部署,大规模可伸缩,应用容器化管理.在生产环境中部署一个应用程序时,通常需要部署该应用程序的多个实例一遍进行均衡负载
在k8s中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理,发现,访问,这些细节都不需要运维人员进行复杂的手工配置和处理
Kubernetes是一个轻便的可以扩展的开源平台,由于管理容器化应用和服务.通过kubernetes能够进行应用的自动化部署和扩缩容.在kubernetes中会将应用的日期组合成一个逻辑单元以更易管理和发现,kubernetes积累了作为谷歌生产环境15年的开发经验,并吸收了来自社区的最佳想法和实践
功能
自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器
自我修复能力
当容器失败时,会对容器进行重启
当锁部署的node节点有问题时,会对容器进行重新部署和重新调度
特性
- 自动装箱:基于容器对用于缓解的资源配置要求自动部署应用容器
- 自我修复:当容器失败时,会对容器进行重启,当所部属的node节点有问题时,会对容器进行重新部署和重新调度,当容器未通过检查时,会关闭此容器知道容器正常运行时,才会对外提供服务
- 水平扩展:通过简单的命令,用户UI界面或基于CPU等资源的使用情况,对应用容器进行大规模剪裁
- 服务发现,用户不需使用额外的服务发现机制,就能够基于k8s自身能力实现服务发现和负载均衡
- 滚动更新:可以根据应用的变化,对容器运行的应用进行一次性或者批量更新
- 版本回退:根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
- 秘钥和配置:在不需要重新构建镜像的情况下,可以部署和更新秘钥和应用配置,类似热部署
- 存储编排:自动实现存储系统挂载及应用,特别对于有状态应用实现数据持久化非常重要,存储系统可以来自于本地,网络存储(NFS,Gluster,Ceph等)公共云存储
- 批处理:提供一次性任务,定时任务,满足批量数据处理和分析的场景
集群架构组件
master(主节点)和node(工作节点)
master组件
apiserver:集群统一入口,以restful方式提供,交给etcd存储
sheduler:节点调度,选择node节点进行应用部署
controller-manage:处理及群众常规后台任务,一个资源对应一个控制器
etcd:存储系统,用于保存集群相关数据
node组件
kubelet: master在node节点的代表,管理本机容器
kube-proxy:提供网络代理,负载均衡
核心概念
pod
- k8s的最小部署单元是pod
- 他是一组容器的集合
- 一组pod是共享网络的
- 生命周期短暂
controller
- 确定预期的pod副本数量
- 无状态应用部署(可以直接用)
- 有状态应用部署(不能直接用)
- 确保所有的node都运行同一个pod
- 一次性任务和定时任务
service
- 定义一组pod访问的规则