赞
踩
Kubernetes是用于管理容器化应用程序集群的工具,在计算机领域中,此过程通常称为编排;
用管弦乐编排比喻上面的服务编排是很恰当的,就像乐队指挥一样,Kubernetes协调地将许多微服务组合在一起构成了应用程序。Kubernetes会自动且持续地监视集群并对其组成进行调整;
了解Kubernetes架构对于部署和维护容器化的应用程序至关重要。
Kubernetes或简称k8s,是Google在2014年开源的一个容器集群管理系统;
K8s 是一个用于自动执行应用程序部署的系统。现代应用程序分散在云,虚拟机和服务器之间,手动管理应用程序不再是可行的选择。
K8s 将虚拟机和物理机转换为统一的API切面。然后,开发人员可以使用Kubernetes API来部署,扩展和管理容器化的应用程序。
它的体系结构还为分布式系统提供了一个灵活的框架。K8s为您的应用程序自动协调扩展和故障转移,并提供部署模式。
它有助于管理运行应用程序的容器,并确保生产环境中没有停机时间。例如,如果某个容器发生故障,则另一个容器会自动取代其位置,而最终用户根本不会注意到。
Kubernetes不仅是一个编排系统。它是一组独立的,相互关联的控制过程。它的作用是在当前状态下连续工作,并朝着期望的方向移动过程;
K8s 提供了容器编排、资源调度、弹性伸缩、部署管理,服务发现等一系列功能;
Kubernetes 目标是让容器化应用简单、高效。Kubernetes 的服务、支持和工具被广泛可用。
传统部署时代
虚拟化部署时代
容器部署时代
1)自我修复
2)弹性伸缩
3)自动部署和回滚
4)服务发现和负载均衡
5)机密和配置管理
6)存储编排
7)批量处理
Master组件:提供集群的管理控制中心。
① kube-apiServer(核心组件)
② kube-controller-manager
1. 节点控制器:负责在节点出现故障时进行通知和响应;
2. 复制控制器:负责为系统中的每个复制控制器对象维护正确数量的Pod;
3. 端点控制器:填充“端点”对象(即,加入“服务和窗格”);
4. 服务帐户和令牌控制器:为新的名称空间创建默认帐户和API访问令牌。
③ kube-scheduler
④ Etcd
1. 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
2. 安全:支持SSL证书验证
3. 快速:根据官方提供的benchmark数据,单实例支持每秒2K+读操作
4. 可靠:采用raft算法,实现分布式系统数据的可用性和一致性
提供Kubernetes运行时环境,以及维护pod,节点组件有:
① kublet
② kube-proxy
③ docker或rocket
1. kube-dns:负责为整个集群提供DNS服务;
2. Ingress Controller:为服务提供外网入口;
3. Heapster:提供资源监控;
4. Dashboard:提供GUI;
5. Federation:提供跨可用区的集群;
6. Fluentd-elasticsearch:提供集群日志采集、存储与查询
1. 假设用户需创建 tomcat 资源(网站/调度); 2. 请求发送至master 首先需要经过apiserver(资源控制请求的唯一入口); 3. apiserver 接收到请求后首先会先记载在Etcd中; 4. Etcd的数据库根据controllers manager(控制器) 查看创建的资源状态(有无状态化); 5. 通过controllers 触发 scheduler (调度器); 6. scheduler 通过验证算法 验证架构中的nodes节点,筛选出最适合创建该资源,接着分配给这个节点进行创建; 7. node节点中的kubelet 负责执行master给与的资源请求,根据不同指令,执行不同操作; 8. 对外提供服务则由kube-proxy开设对应的规则(代理); 9. container 容器开始运行(runtime 生命周期开始计算); 10. 外界用户进行访问时,需要经过kube-proxy 访问到container; 11. 如果container 因故障而被销毁了,master节点的controllers 会再次通过scheduler 资源调度通过kubelet再次创建容器,恢复基本条件限制。
Pod
Controllers
① ReplicaSet:确保预期的 Pod 副本数量(参数,可进行设置)
② Deployment:无状态应用(例如:web、nignx、apache、tomcat)
③ StatefulSet:有状态应用部署,该应用独一无二无法重新创建进行完美替代,例如mysql、Oracle数据库
④ DaemonSet:确保所有的Node运行同一个Pod(把所有的Node设置为同一个命名空间)
⑤ Job:一次性任务(类比 linux:at)
⑥ Cronjob:定时任务(类比 linux:crontab)
更高层次对象,部署和管理Pod
Service
Label
Namespaces
Annotations
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。