k8s基本介绍
kubernetes,简称k8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署、规划、更新、维护的一种机制。
容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更透明,便于监控和管理。
k8s是Google开源的一个容器编排引擎、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在k8s中,可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节不需要运维人员去进行复杂的手工配置和处理。
k8s特性
- 自动装箱:基于容器对应用运行环境的资源配置,要求自动部署应用容器。
- 自我修复:当容器失效时,会对容器进行重启,当所部署的node节点有问题时,会对容器进行重新部署和重新调度。当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务。
- 水平扩展:通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应用容器进行规模扩大或规模裁剪。
- 服务发现:用户不需使用额外的服务发现机制,就能基于kubernetes自身能力实现服务发现和负载均衡。
- 滚动更新:可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新。
- 版本回退:可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退。
- 密钥和配置管理:在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
- 存储编排:自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要,存储系统可以来自于本地目录、网络存储NFS等、公有云存储服务。
- 批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景。
k8s集群架构组件
- Master(主控节点)、Worker(工作节点)
- API Server为集群统一入口,以restful方式提供操作,交给etcd存储;
- Scheduler用于节点调度,选择node节点应用部署;
- controller-manager处理集群中常规的后台任务,一个资源对应一个控制器;
- etcd存储系统,用于保存集群相关数据;
- kubelet管理当前节点容器;
- kube-proxy提供网络代理,实现负载均衡操作。

k8s核心概念
- Pod:k8s中最小的部署单元,可以理解为一组容器的集合,共享网络,生命周期是短暂的;
- controller:确保预期pod副本数量,无状态应用部署和有状态应用部署,确保所有node运行同一个pod,支持一次性任务和定时任务;
- service:定义一组pod的访问规则。