基本感念

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 字节的字符串。