Kubernetes是谷歌的开源容器编排引擎。架构和设计思想来自谷歌内部的调度工具——Borg。Borg是谷歌内部使用的一个著名的大型集群管理系统。它基于LinuxContainer(LXC)技术,提供面向应用的容器集群部署和管理系统。Kubernetes的目标是消除编排物理/虚拟计算、网络和存储基础架构的负担,并使应用程序操作员和开发人员能够完全专注于以容器为中心的原语以进行自助操作。自动化资源管理并最大限度地提高跨多个数据中心的资源利用率。Kubernetes是一个完整的容器集群管理引擎。它提供了多种机制和接口来保证应用程序的快速发布和健康运行。它还提供了丰富的命令行工具(CLI)和API接口,方便与集群交互。同时,Kubernetes提供了多级安全防护和隔离机制、多租户应用支持能力、应用生命周期管理、可扩展的自动资源调度机制、多粒度资源配额管理能力、多平台支持的统一配置管理组件。-租户。Kubernetes支持多个可用区,提供了一套完整的容器管理工具,为容器集群管理提供一站式服务。Kubernetes架构Kubernetes的整体架构如下图所示:Kubernetes主要由以下几个核心组件组成:etcd保存了整个集群的状态;kube-apiserver提供资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;kube-controller-manager负责维护集群的状态,如故障检测、自动扩容、滚动更新等;kube-scheduler负责资源调度,根据预定的调度策略将Pod调度到相应的机器上;kubelet负责维护容器的生命周期,同时负责Volume(CVI)和网络(CNI)的管理;Containerruntime负责镜像管理以及Pod和容器(CRI)的实际运行。默认的容器运行时是Docker;;代理负责为Service提供集群内的服务发现和负载均衡。除了核心组件,还有一些推荐的Add-ons:kube-dns负责为整个集群提供DNS服务。IngressController为服务提供外部网络访问。Heapster提供资源监控。Dashboard提供GUIFederation,提供跨可用性集群。Fluentd-elasticsearch提供集群。日志收集、存储和查询下图描述了pod对象的创建,Kubernetes各个组件之间的交互及其工作流程的时序图:通过上图,我们可以理解创建pod对象时Kubernetes各个组件之间的交互以及它的工作流程,让Kubernetes的从业者能够更好的理解Kubernetes各个组件的作用以及它们之间是如何交互的。
