基本感念 =================== Kubemetes 对外暴露的是一个巨大的资源池,这让我们在部署和运行我们的应用程序时, 不用关注底层的硬件服务器资源。 使用Kubemetes部署多个应用程序时,它可以为每个应用程序都选择一个合适的服务器, 部署之后它能够保证每个应用程序彼此之间实现通信。 Kubernetes组件 ------------------ 部署Kubernetes时,您将获得一个集群。可以按其职责分为两部分,分别为控制平面组件和工作节点组件。 控制平面组件通常称为Master节点。负责提供运算的部分通常称为工作节点。 Kubernetes集群由一组称为节点(Node)的机器来运行容器化的应用程序。每个群集至少有一个工作节点。 工作节点托管Pods, 是应用程序工作负载的组成部分。 控制平面管理集群中的工作节点和Pod。在生产环境中,控制平面通常在多台计算机上运行, 而集群(cluster)通常在多个节点上运行,从而提供了容错能力和高可用性。 Master 节点 -------------- 控制节点功能可以分为以下四部分。 * kube-apiserver 主节点上负责提供 Kubernetes API 服务的组件。是操作资源的唯一入口,并 提供了认证、授权、访问控制、API注册和发现机制等。 * etcd 是兼具一致性和高可用性的键值数据库,它作为保存 Kubernetes 所有集群数据的后台数据库。 * kube-scheduler 主节点上的组件,负责资源调度,按照预定的调度策略,将Pod调度到相应的机器上。 也就是该组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。 * controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。 工作节点(Node) --------------- * kubelet 运行在每个节点上的集群代理,并使服务器与主服务器通信。 * kube-proxy 是一个网络代理, 实现了Kubernetes Service概念的一部分,例如服务发现和负载均衡。 * 容器运行时,通常是docker. Container(容器) --------------- Container容器技术是一种轻量级的虚拟化技术,它使用命名空间(namespace) 隔离不同的软件运行环境, 并通过镜像自包含软件的运行环境,从而使得容器可以很方便的在任何地方运行。 Pod ----- Kubernetes 使用 Pod 来管理容器,每个 Pod 可以包含一个或多个紧密相关的容器。 Pod是k8s调度的最小单元。 Node ------ Node 是 Pod 真正运行的主机。即可以是物理机,也可以是虚拟机。 Label ---------- Label 是用于标识 Kubernetes 对象,以 key/value 的方式附加到对象上。 key 最长不能超过 63 字节,value 是不超过 253 字节的字符串。