kubernetes构架及组件介绍
作者:互联网
传统部署时代
早期在物理机上直接运行应用程序,无法对其定义资源边界,导致资源不分配,其他的程序性能下降
虚拟化部署时代
虚拟化允许应用程序在VM之间隔离,并提供安全界别,但是不能自由访问应用程序
因为虚拟haul可以轻松添加或更新应用程序,减低硬件成本,所有可以更好的利用资源,可以时实现更好的可伸缩性,每个mv都是一台完整的计算机。
因为调用的是虚拟资源所有没有特别的优质底层资源。
kubernetes概述
kubernetes是一个开源的可移植,可扩展的容器编排调度引擎,使用GO语言开进行发。和docker容器结合在一起,可实现容器技术的分布式架构方案。主要用于自动化部署,扩张和管理容器类应用,提供资源调度,部署管理,服务发现,扩容缩容,监控等功能。
它的目标不仅仅是一个容器编排功能,二十题共一个应用规范,用户可以描述集群的架构,定义服务的最终状态,kubernetes可以将系统达到和维持在这个状态。
使用kubernetes具备的好处
-
具备微服务架构
微服务架构背后有多个实例副本支撑,二k8s平台中内嵌的负载均衡调度器发挥着重要作用 -
具备超强的横向扩容能力
kubernetes服务功能
- 数据卷:当pod容器之间想要共享数据时,可以使用数据卷
- 应用程序监控检查
- 复制应用程序实例:保证一个pod或一组同类的pod数量始终可用
- 弹性伸缩:根据设定的指标(cpu利用率)自动缩放pod副本数
- 服务发现:使用环境变量或dns服务插件保证容器中程序发现pod入库访问地址
- 负载均衡:一组pod副本分配一个私有的集群ip地址
- 滚动更新
- 服务编排
- 资源监控
- 提供认证和授权:支持角色访问
kubernetes服务特点
- 服务发现和负载均衡:如果容器的流量很大,kubernetes可以负载均衡分配网络流量,从而包含智能服务部署的稳定性
- 存储编排:可以自动挂载选择的存储系统
- 自动部署和回滚
- 自动二进制打包
- 自我修复:可以重启失败的容器,替换容器,杀死不响应用户定义的云行状况检查的容器
- 密钥与配置管理:
kubernetes应用场景
- 快速部署应用
- 快速扩展应用
- 物非对接新的应用功能
- 节省资源,优化硬件资源的使用
kubernetes架构
- etcd保存了整个集群的状态;
- apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
- controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
- scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
- kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
- Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
- kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
master节点组件
master节点提供集群的管理控制中心,对集群进行全局决策,并检测和响应集群事件,基本上k8s所有的控制命令都是发送给master,master负责具体的执行过程,建议master节点占据一个独立的服务器并做高可用
- kube-apiserver:用于暴露kubernetes api接口,任何资源请求/调用操作都经过它,提供了http rest接口的关键服务进程,是kubernetes中有的资源的增删改查等操作的唯一入口,也是集群控制入口进程
- Etcd:是kubernetes听的默认存储,所有集群数据都保存在其中。使用时建议备份
- kube-scheduler:是负责资源调度的进程,监视新创建且没有分配到node的pod
- kube-controller-manager:运行管理控制器,是集群中吃力常规任务的后台进程,是kubernetesi所有资源对象的自动化控制中心。
- 节点控制器(node controller):对每个节点进行检查pod状态,并且响应
- 复制控制器(replication controller):负责维护正确数量的pod
- 端点控制器(endpoints controller):填充端点对象(即连接servers 和 pods)
- 服务账户和令牌控制器:为新的命名空间创建默认账户和api访问令牌
node节点
node节点是k8s集群中的工作负载节点,每个node都会别master分配一些工作负载,当某个node宕机时,node上的工作负载会被master转移到其他的node节点上去
- kubelet:负责pod对应容器的创建,启停等任务,同时与master节点密切协作,实现管理
- kube-proxy:用于实现酷比二本 Service之间的通信与负载均衡机制
- docker Engine(docker):docker引擎,负责本机的容器创建和管理工作
node节点可以在运行期间动态增加kubernetes集群中,前提是这个节点上已经正确安装,配置和启动上述关键进程。默认情况上下,kubelet会向master注册自己。一旦node节点被纳入集群管理范围,kubelet进程会定时向master汇报自身情况。
插件(Addons)
插件使用kubernetes资源实现集群功能。因为这些提供集群级别的功能,所以插件的命名空间资源我属于kube-system命名空间
- DNS
- dashboard:一个web界面,很方便。
标签:node,容器,kubernetes,组件,集群,构架,master,pod 来源: https://www.cnblogs.com/wml3030/p/15534128.html