1,kubelet是唯一没有以容器形式运行的Kubernetes组件,它在ubuntu中通过systemd服务运行。
2,Cluster是计算、存储和网络资源的集合,Kubernetes利用这些资源运行各种基于容器的应用。
3,Master是Cluster的大脑,它的主要职责是调度,即决定将应用放在哪里运行。
4,Node的职责是运行容器应用。Node由Master管理,Node负责监控并汇报容器的状态,同时根据Master的要求管理容器的生命周期。
5,Pod是Kubernetes的最小工作单元。每个Pod包含一个或多个容器。Pod中的容器会作为一个整体被Master调度到一个Node上运行。
Kubernetes引入Pod主要基于下面两个目的:
(1)可管理性。
有些容器天生就是需要紧密联系,一起工作。Pod提供了比容器更高层次的抽象,将它们封装到一个部署单元中。Kubernetes以Pod为最小单位进行调度、扩展、共享资源、管理生命周期。
(2)通信和资源共享。
Pod中的所有容器使用同一个网络namespace,即相同的IP地址和Port空间。它们可以直接用localhost通信。同样的,这些容器可以共享存储,当Kubernetes挂载volume到Pod,本质上是将volume挂载到Pod中的每一个容器。
Pods有两种使用方式:
(1)运行单一容器。
one-container-per-Pod是Kubernetes最常见的模型,这种情况下,只是将单个容器简单封装成Pod。即便是只有一个容器,Kubernetes管理的也是Pod而不是直接管理容器。
(2)运行多个容器。
问题在于:哪些容器应该放到一个Pod中?
答案是:这些容器联系必须非常紧密,而且需要直接共享资源。