前言-随着技术的不断发展,针对微服务的结构,已经不仅仅是传统的springcloud微服务架构,并且在和同事的沟通中发现,springcloud的微服务架构是有问题的,像亚马逊这样级别的企业也在使用k8s进行进行系统微服务架构的的构建,k8s在不断地发展过程中,不断地集合了yarn,微服务的设计思想,已经远远超过大家对它只是一个运维工具的设想,所以我也打算学习下k8s,探寻下他的技术设计,并把我的学习流程,进行一个记录
1.是什么
用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的
应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种
机制。
Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、
应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便
对应用请求进行负载均衡。
2.概述
Kubernetes 是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过
Kubernetes 能够进行应用的自动化部署和扩缩容。
3.功能
(1)自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器
(2)自我修复(自愈能力)
当容器失败时,会对容器进行重启
当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度
当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
(3)水平扩展
通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大
或规模剪裁
(3)服务发现
用户不需使用额外的服务发现机制,就能够基于 Kubernetes 自身能力实现服务发现和
负载均衡
(4)滚动更新
可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
(5)版本回退
可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
(6)密钥和配置管理
在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
(7)存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要
存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务
(8)批处理
提供一次性任务,定时任务;满足批量数据处理和分析的场景
3.应用架构分类
(1) 无中心节点架构
GlusterFS
(2) 有中心节点架构
HDFS
K8S
4.集群架构
5.k8s集群架构节点角色功能
Master Node
k8s 集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和
Controller MangerServer 所组成
Worker Node
集群工作节点,运行用户业务应用容器;
Worker Node 包含 kubelet、kube proxy 和 ContainerRuntime;