Kubernetes 基本概念与组件¶
宏观概念¶
(1) Master
:
Master
节点是 Kubernetes 集群的控制节点,负责整个集群的管理和控制。
Master
节点上包含以下组件:
kube-apiserver
: 该集群控制的唯一入口, 提供 HTTP REST 服务kube-controller-manager
: 负责维护集群的状态, k8s集群中所有资源对象的自动化控制中心kube-scheduler
: 负责 Pod 的调度 (按照预定的调度策略将 Pod 调度到相应的机器上)etcd
: 保存了整个集群的状态, 就是一个数据库
(2) Node
:
Node
节点是 Kubernetes 集群中的工作节点,Node
上的工作负载由 Master
节点分配,工作负载主要是运行容器应用。
Node
节点上包含以下组件:
kubelet
: 负责Pod
的创建、启动、监控、重启、销毁等工作, 同时与Master
节点协作,实现集群管理的基本功能 (Volume 和 Network ...)kube-proxy
: 负责为 Service 提供 cluster 内部的服务发现和负载均衡- 运行 "容器化应用" (
Pod
)
(3) Pod
:
Kubernetes 最基本的部署调度单元
每个 Pod
可以由一个或多个业务容器和一个根容器(Pause 容器)组成。一个 Pod
表示某个应用的一个实例
常用服务¶
太多了, 详见官网
这里我们选择最重要的 "工作负载管理", 即: ReplicaSet
&& Deployment
两个概念来展开
(1) ReplicaSet:
ReplicaSet
的作用是: 维持在任何给定时间运行的一组稳定的副本 Pod
通常,你会定义一个 Deployment
,并用这个 Deployment
自动管理 ReplicaSet
ReplicaSet
确保任何时间都有指定数量的 Pod
副本在运行
(2) Deployment:
Deployment
是一个更高级的概念,它管理 ReplicaSet
,并向 Pod
提供声明式的更新以及许多其他有用的功能
建议直接使用 Deployment
建议: 使用 Deployment
而不是直接使用 ReplicaSet
,除非你需要自定义更新业务流程或根本不需要更新
这实际上意味着, 你可能永远不需要操作 ReplicaSet
对象:
而是使用 Deployment
,并在 spec
部分定义你的应用
YAML | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
如何理解 Node / Pod / ReplicaSet 的关系
(1) Node:
一个物理厨房。它可以是一台真实的物理服务器,也可以是一台云主机(虚拟机)
Node = 拥有计算能力的机器
(2) Pod:
是 k8s 部署应用的最小单位。它就像一个披萨制作小组
这个小组里可以只有一个核心厨师(一个核心业务容器,比如制作披萨的师傅)
也可以包含一个核心厨师外加几个助手(多个辅助容器,比如一个专门准备面团的,一个专门切配料的)
重要的是,这个小组(Pod)的所有成员共享同一个工作台和储物柜(即共享网络和存储空间),他们配合紧密,共同完成“制作披萨”这个任务
Pod = 运行着你的应用容器的最小工作单元,它必须跑在某个 Node 上
(3) ReplicaSet:
ReplicaSet 的字面意思是“副本集”。它不是一个实体,而是一个管理者,就像是厨房值班经理
经理的核心职责是:确保店里永远有规定数量的披萨制作小组在岗。
老板下达指令:“我要求,任何时候都必须有 3 个披萨制作小组 (Pod) 处于工作状态!”
- 值班经理 (ReplicaSet) 就会去检查。发现现在只有 2 个小组,他会立刻再招募一个新的小组 (创建新 Pod)
- 如果他发现有 4 个小组在岗,太多了,他就会辞退一个 (删除一个 Pod)
- 如果某个小组的厨师突然生病请假了(Pod 崩溃了),经理会立刻找一个新的小组来顶替 (重新创建一个 Pod)
ReplicaSet 是一个抽象的管理规则