1.Kubernetes(K8S)架构
K8S的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的workflows 和更高级的自动化任务。 Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。
K8S架构图
核心组件(1-4属于master,5-7属于Nodes):
1.etcd保存了整个集群的状态;
2.apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
3.controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
4.scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
5.kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理;
6.Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
7.kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
常用插件:
CoreDNS负责为整个集群提供DNS服务
Ingress Controller为服务提供外网入口
Prometheus提供资源监控
Dashboard提供GUI
Federation提供跨可用区的集群
更抽象一点的架构图
K8S架构图
K8S Master架构
etcd保存了整个集群的状态;
apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
Node架构
K8S的分层设计理念
Kubernetes设计理念和功能类似Linux的分层架构,如下图
核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
接口层:kubectl命令行工具、客户端SDK以及集群联邦
生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴:
Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等