21.什么是ReplicaSet**,说明它的主要用途。**
**答:**ReplicaSet 简称 RS,它控制 pod 的副本数始终与预设的值相等,RS 会持续监视这些 Pod 的运行
状态,并在 Pod 发生故障时重启 Pod。K8s 官方建议使用 Deployments 代替 RS 来控制 Pod 副本
的量,因为 Deployments 支持记录了历史变更的声明式更新,方便进行 RS 的升级和回退等。
22. Deployment****控制器是如何工作的,举例说明其常见用途。
**答:**一个 Deployment 能够为 Pod 和 ReplicaSet 提供声明式的更新能力。管理员描述 Deployment
中的目标状态,Deployment 控制器会以可控的进度更改 RS 的实际状态使其变为期望状态。
Deployments 的典型用例有:
- 创建 Deployment 以将 ReplicaSet 上线。
- 通过更新 Deployment 的 PodTemplateSpec,声明 Pod 的新状态 。
- 回滚到较早的 Deployment 版本。
- 扩大 Deployment 规模以承担更多负载。
23.解释DaemonSet**,列举其使用场景。**
**答:**DaemonSet 能确保集群全部(或者某些)节点上都运行一个 Pod 的副本。当有节点加入时,会为其
新增一个 Pod。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建
的所有 Pod。
DaemonSet 的一些典型用法: - 在每个节点上运行集群守护进程。
- 在每个节点上运行日志收集守护进程。
- 在每个节点上运行监控守护进程。
24.什么是StatefulSet**,其主要作用是什么?**
**答:**StatefulSet 是用来管理有状态应用工作负载的 API 对象。和 Deployment 类似,StatefulSet
可管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个
Pod 维护了一个有粘性的 ID,也就是这些 Pod 是基于相同的规约来创建的,但是不能相互替换:无
论怎么调度,每个 Pod 都有一个永久不变的 ID。
例如,如果希望使用存储卷为工作负载提供持久存储,就可以引入 StatefulSet 作为解决方案。
在这种环境中,StatefulSet 中的单个 Pod 一旦出现故障,则启动新 Pod 替换失败 Pod 时,持久
的 Pod 标识符就使得新 Pod 与持久卷的的匹配变得更加容易。
25.说明Job与CronJob****的功能。
**答:**Job 负责批量处理短暂的一次性任务,仅执行一次,并保证处理的一个或者多个 Pod 成功结束。
CronJob 负责定时任务,在指定的时间周期运行指定的任务,比如备份、生成报表等。