③. Kubernetes概述及不是什么
Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes拥有一个庞大且快速增长的生态系统。Kubernetes的服务、支持和工具广泛可用。
②. 名称Kubernetes源于希腊语,意为"舵手"或"飞行员"。Google在2014年开源了Kubernetes项目。 Kubernetes建立在Google在大规模运行生产工作负载方面拥有十几年的经验的基础上,结合了社区中最好的想法和实践。
③. Kubernetes不是传统的、包罗万象的PaaS(平台即服务)系统。 由于Kubernetes在容器级别而不是在硬件级别运行,它提供了PaaS产品共有的一些普遍适用的功能, 例如部署、扩展、负载均衡、日志记录和监视。 但是,Kubernetes不是单体系统,默认解决方案都是可选和可插拔的。 Kubernetes提供了构建开发人员平台的基础,但是在重要的地方保留了用户的选择和灵活性
不限制支持的应用程序类型。 Kubernetes 旨在支持极其多种多样的工作负载,包括无状态、有状态和数据处理工作负载。 如果应用程序可以在容器中运行,那么它应该可以在 Kubernetes 上很好地运行。
不部署源代码,也不构建你的应用程序。 持续集成(CI)、交付和部署(CI/CD)工作流取决于组织的文化和偏好以及技术要求。
不提供应用程序级别的服务作为内置服务,例如中间件(例如,消息中间件)、 数据处理框架(例如,Spark)、数据库(例如,mysql)、缓存、集群存储系统 (例如,Ceph)。这样的组件可以在 Kubernetes 上运行,并且/或者可以由运行在 Kubernetes 上的应用程序通过可移植机制(例如, 开放服务代理)来访问。
不要求日志记录、监视或警报解决方案。它提供了一些集成作为概念证明,并提供了收集和导出指标的机制。
不提供或不要求配置语言/系统(例如 jsonnet),它提供了声明性API, 该声明性API可以由任意形式的声明性规范所构成。RESTful,写yaml文件
不提供也不采用任何全面的机器配置、维护、管理或自我修复系统。
④. Kubernetes工作原理
①. 控制平面组件(Control Plane Components) :相当于山水总部
控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)
②.kube-apiserver:相当于秘书
API 服务器是Kubernetes控制面的组件, 该组件公开了 Kubernetes API。 API 服务器是 Kubernetes 控制面的前端
Kubernetes API 服务器的主要实现是 kube-apiserver。 kube-apiserver 设计上考虑了水平伸缩,也就是说,它可通过部署多个实例进行伸缩。 你可以运行 kube-apiserver 的多个实例,并在这些实例之间平衡流量。
③. etcd资料库(键值数据库(redis)记账本,记事本)
etcd是兼具一致性和高可用性的键值数据库,可以作为保存Kubernetes所有集群数据的后台数据库。
您的Kubernetes集群的etcd数据库通常需要有个备份计划。
要了解etcd更深层次的信息,请参考etcd文档。
④.kube-scheduler(调度者)
控制平面组件,负责监视新创建的、未指定运行节点(node)的Pods,选择节点让Pod在上面运行。
调度决策考虑的因素包括单个Pod和Pod集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限。
⑤. kube-controller-manager:相当于决策者
在主节点上运行控制器的组件。
从逻辑上讲,每个控制器都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。
⑥. cloud-controller-manager:相当于外联部
云控制器管理器是指嵌入特定云的控制逻辑的控制平面组件。云控制器管理器允许您链接集群到云提供商的应用编程接口中,并把和该云平台交互的组件与只和您的集群交互的组件分离开。
⑦. Node组件:kubelet(相当于厂长、每一个node节点上必须安装的组件)
一个在集群中每个节点(node)上运行的代理。它保证容器(containers)都运行在Pod中。
kubelet接收一组通过各类机制提供给它的PodSpecs,确保这些PodSpecs中描述的容器处于运行状态且健康。kubelet不会管理不是由Kubernetes创建的容器。
⑧. Node组件:kube-proxy(相当于外面的门卫大爷、代理网络)
kube-proxy是集群中每个节点上运行的网络代理,实现Kubernetes服务(Service)概念的一部分。
kube-proxy维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与Pod进行网络通信。
如果操作系统提供了数据包过滤层并可用的话,kube-proxy会通过它来实现网络规则。否则,kube-proxy仅转发流量本身。