1. Cluster

        cluster是计算、存储和网络资源的集合,Kubernetes利用这些资源运行各种基于容器的应用。

2. Master

        Master是Cluster的大脑,它的主要职责是调度,即决定将应用放在哪里运行。 

3. Node

        Node的职责是运行容器应用。Node由Master管理,Node负责监控并汇报容器的状态,同时根据Master的要求管理容器的生命周期。 

4. Pod

        Pod是k8s最小的工作单元。每隔Pod包含一个或多个容器。Pod中的容器会作为一个整体被Master调度到一个Node上运行。 Pod可以运行单一容器也可以运行多个容器。

k8s引入pod的目的:

(1)可管理性

        有些容器天生就是需要紧密联系,一起工作。k8s可以以pod为最小单元进行调度、扩展、共享资源、管理生命周期。

(2)通信和资源共享

        Pod中所有容器使用同一网络namespace,即相同的IP地址和Port空间。它们可以直接用localhost通信。同样的,这些容器可以共享存储。

5.  Controller

        Kubernetes通常不会直接创建Pod,而是通过Controller来管理Pod。Controller中定义了Pod的部署特性,比如由几个副本,在什么样的Node上运行等。k8s提供了多种Controller,包括:Deployment、ReplicaSet、DaemonSet、StatefulSet、Job等。

(1)Deployment是最常用的Controller,Deployment可以管理Pod的多个副本,并确保Pod按照期望的状态运行。 

(2)ReplicaSet实现了Pod的多副本管理,使用Deployment时会自动创建ReplicaSet,也就是说Deployment是通过ReplicaSet来管理Pod的多个副本的,我们通常不需要直接使用ReplicaSet

(3)DeamanSet用于每隔Node最多只运行一个Pod副本的场景。正如其名,DaemonSet通常用于运行daemon。

(4)StatefulSet能够保证Pod的每个副本在整个生命周期中名称是不变的,而其他的Controller不提供这个功能。而且StatefulSet会保证副本按固定顺序启动或删除。

(5)Job用于运行结束就删除的应用,而其他Controller中的pod通常是长期持续运行。

6.  Service

        Deployment可以部署多个副本,每个Pod都有自己的IP,外界如何访问这些副本呢?答案是通过Service。

        Kubernetes Service定义了外界访问一组特定Pod的方式。Service有自己的IP和端口,Service为Pod提供了负载均衡。

        k8s运行容器(Pod)和访问容器(Pod)分别由Controller和Service执行。

7. Namespace

        如果由多个用户或项目组使用同一个k8s Cluster,如何将它们创建的Controller、Pod等资源分开呢?答案是Namespace

        Namespace可以将一个物理的Cluster逻辑上划分成多个虚拟Cluster,每个Cluster就是一个Namespace。不同Namespace里的资源是完全隔离的。 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐