Kubernetes 的一些重要概念
-
Cluster
Cluseter 是计算、存储和网络资源的集合,Kubernetes 利用这些资源运行各种基于容器的应用。
-
Master
Master 是 Cluster 的大脑, 它的主要责任是调度, 即决定将应用放在哪里运行。Master 运行 Linux 操作系统,可以是物理机或虚拟机。为了实现高可用,可以运行多个 Master。
-
Node
Node 的责任是运行容器应用。Node 由Master 管理,Node 负责监控并汇报容器的状态,同时根据 Master 的要求管理容器的生命周期。Node 运行在 Linux 操作系统上,可以是物理机或者是虚拟机。
-
Pod
Pod 是 Kubernetes 的最小工作单元。每个Pod 包含一个或多个容器。Pod 中的容器会作为一个整体被 Master 调度到一个 Node 上运行。
-
Controller
Kubernetes 通常不会直接创建 Pod, 而是通过 Controller 来管理 Pod 的。Controller 中定义了 Pod 的部署特性, 比如有几个副本、在什么样的 Node 上运行等。为了满足不同的业务场景, Kubernetes提供了多种 Controller, 包括 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等。
- Deployment 是最常用的 Controller, Deployment可以管理Pod的多个副本, 并确保 Pod 按照期望的状态运行。
- ReplicaSet 实现了 Pod 的多副本管理。使用 Deployment 时会自动创建ReplicaSet, 也就是说 Deployment 是通过 ReplicaSet 来管理 Pod 的多个副本的,通常不需要直接使用 ReplicaSet。
- DaemonSet 用于每个 Node 最多只运行一个 Pod 副本的场景。DaemonSet 通常用于运行 daemon。
- StatefuleSet 能够保证 Pod 的每个副本在整个生命周期中名称是不变的,而其他 Controller 不提供这个功能。当某个 Pod 发生故障需要删除并重新启动时,Pod 的名称会发生变化, 同时 StatefulSet 会保证副本按照固定的顺序启动,更新或者删除。
- Job 用于运行结束就删除的应用。而其他 Controller 中的 Pod通常是长期持续运行的。
-
Service
Kubernetes Service 定义了外界访问一组特定 Pod 的方式。Service 有自己的 IP 和端口,Service 为 Pod 提供了负载均衡。
Kubernetes 运行容器(Pod)与访问容器(Pod)这两项任务分别由 Controller 和 Service 执行。 -
Namespace
Namespace 可以将一个物理的 Cluster 逻辑上划分成多个虚拟 Cluster, 每个 Cluster 就是一个Namespace。不同 Namespace 里的资源时完全隔离的。
Kubernetes 默认创建了两个 Namespace:
- default:创建资源时如果不置顶,将会被放到这个 Namespace 中。
- kube-system:Kubernetes 自己创建的系统资源将放到这个Namespace中。