【K8S 系列】认识k8s、k8s架构
一、什么是k8s?
Kubernetes 简称 k8s,是支持云原生部署的一个平台,k8s 本质上就是用来简化微服务的开发和部署的,用于自动化部署、扩展和管理容器化应用的开源容器编排技术。对于传统的docker其实也提供了容器编排的技术docker-compose,但是docker-compose只能管理一台主机上的容器,而对于k8s来讲可以管理多主机上的容器。
二、应用部署方式的转变
2.1.传统部署(资源不隔离):
优点:简单,不需要其它技术的参与
缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响,当某一进程用户访问量大就会造成服务器资源分配不均,争抢资源。
2.2.虚拟化部署(在一台物理机上运行多个虚拟机,虚拟化过重):
优点:程序环境不会相互产生影响,提供了一定程度的安全性
缺点:增加了操作系统,浪费了部分资源
2.3.容器化部署(与虚拟化类似,但是共享了操作系统):
优点:可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等,运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦。
三、k8s的特点
(1)自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器
(2)弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整
(3)服务发现:服务可以通过自动发现的形式找到它所依赖的服务
(4)负载均衡:如果一个服务启动了多个容器,能够自动实现请求的负载均衡
(5)版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本
(6)存储编排:可以根据容器自身的需求自动创建存储卷
四、容器管理架构升级
4.1.Borg架构
4.2.kubernet 架构
五、K8S架构解读
5.1.master节点:集群的控制平面,负责集群的决策 ( 管理 )
(1) ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制。
(2)Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上。
(3)ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等。
(4)Etcd :负责存储集群中各种资源对象的信息。
5.2.node节点:集群的数据平面,负责为容器提供运行环境 ( 干活 )
(1)Kubelet : 负责维护容器的生命周期,存储、网络。
(2)KubeProxy : 负责提供集群内部的服务发现和负载均衡。
(3)Docker : 负责节点上容器的各种操作,作为容器的运行时环境。
(4)Pod:一个节点上可以部署多个Pod,一个Pod可以部署多个容器。
更多推荐
所有评论(0)