kubernetes(K8s)学习笔记:第十三期与第十四期核心知识点自测与详解

kubernetes(K8s)学习笔记:第十三期与第十四期核心知识点自测与详解
kubernetesK8s学习笔记第十三期与第十四期核心知识点自测与详解本自测解析针对 Kubernetes 系列第十三期集群存储与有状态应用上篇动态卷供应——StorageClass Provisioner和第十四期集群存储与有状态应用下篇StatefulSet 有状态应用管理的核心内容。共 10 题每题包含题目回顾、考查知识点、详细解答与分析帮助读者巩固 Kubernetes 动态存储与有状态应用管理的核心技能。文章索引KubernetesK8s学习笔记第十三期集群存储与有状态应用上篇动态卷供应——StorageClass ProvisionerKubernetesK8s学习笔记第十四期集群存储与有状态应用下篇StatefulSet 有状态应用管理更多自我检测系列欢迎浏览每日知识点小问答我的主页AOwhisky这里有更多运维系统性知识整理和其他有趣内容欢迎与我一起探讨学习~第十三期动态卷供应StorageClass Provisioner第 1-5 题题目一动态卷供应与静态卷供应的核心区别题目Kubernetes 中动态卷供应和静态卷供应的核心区别是什么请从 PV 创建方式、管理员工作量、资源利用率、适用场景四个维度对比。为什么动态卷供应是生产环境推荐的方式考查知识点动态卷 vs 静态卷对比 —— 第十三期 §1.1、§5.1两种方式的优缺点详细解答核心区别对比维度静态卷供应动态卷供应PV 创建方式管理员预先手动创建每个 PV系统根据 PVC自动创建PV管理员工作量高每个 PV 手动指定存储路径、容量低只需配置 StorageClass资源利用率可能浪费PV 预分配后闲置高效按需分配用完回收响应速度慢需等待管理员操作秒级自动创建适用场景小规模、固定存储需求大规模、动态存储需求为什么动态卷供应是生产环境推荐方式自动化用户只需创建 PVC系统自动完成 PV 创建和绑定无需管理员干预高效利用资源按需分配避免资源浪费快速响应秒级完成存储分配不影响应用部署速度可扩展支持大规模集群无需为每个 PVC 手动创建 PV标准化通过 StorageClass 统一管理存储套餐降低运维复杂度题目二StorageClass 的核心配置字段题目StorageClass 的provisioner、reclaimPolicy、volumeBindingMode三个字段分别起什么作用NFS 存储和本地存储是否有内置的 ProvisionerLocal Path Provisioner 的volumeBindingMode应该设置为什么值为什么考查知识点StorageClass 核心配置 —— 第十三期 §2各字段含义与适用场景详细解答三个核心字段字段作用可选值provisioner指定用哪个“造卷工具”创建 PVrancher.io/local-path、fuseim.pri/ifs等reclaimPolicyPVC 删除后 PV 的回收策略Delete默认/RetainvolumeBindingModePVC 与 PV 的绑定时机Immediate默认/WaitForFirstConsumerNFS 和本地存储的内置 ProvisionerNFS❌没有内置 Provisioner需部署外部组件如 NFS Provisioner本地存储❌没有内置 Provisioner需部署外部组件如 Local Path ProvisionerLocal Path Provisioner 的 volumeBindingMode应设置为WaitForFirstConsumer原因本地存储绑定到特定节点需要等 Pod 调度后才能确定在哪个节点创建 PV如果使用Immediate模式PV 可能创建在错误的节点上导致 Pod 无法访问YAML 示例apiVersion:storage.k8s.io/v1kind:StorageClassmetadata:name:local-pathprovisioner:rancher.io/local-pathreclaimPolicy:DeletevolumeBindingMode:WaitForFirstConsumer# 本地存储必须使用此模式题目三Local Path Provisioner 的工作原理与局限性题目Local Path Provisioner 的工作原理是什么它使用什么类型的存储为什么 Local Path Provisioner 不支持 Pod 跨节点调度请写出其典型使用场景。考查知识点Local Path Provisioner —— 第十三期 §3工作原理与局限性详细解答工作原理Local Path Provisioner 在每个节点上使用本地磁盘目录默认/opt/local-path-provisioner当用户创建 PVC 时PVC 处于Pending状态volumeBindingMode: WaitForFirstConsumer当 Pod 创建并调度到某个节点后Provisioner 在该节点上创建对应的存储目录系统自动创建 PV 并与 PVC 绑定Pod 使用该 PVC 挂载本地存储Helper Pod 的工作机制以privileged: true权限运行确保有权限创建目录使用system-node-critical优先级不会被驱逐容忍node.kubernetes.io/disk-pressure污点为什么不支持 Pod 跨节点调度PV 创建在特定节点的本地磁盘上PVC 已经绑定了该节点的 PV其他节点无法访问该节点的本地存储因此使用该 PVC 的所有 Pod 副本都必须调度到同一个节点典型使用场景✅ 测试环境的临时存储✅ 对性能要求高、对数据持久性要求不高的场景✅ 单节点存储不需要跨节点共享❌ 不适用于需要跨节点共享数据的生产环境题目四NFS Provisioner 的部署流程与优势题目请简述 NFS Provisioner 的部署流程从 NFS 服务端到 StorageClass。NFS Provisioner 相比 Local Path Provisioner 的核心优势是什么NFS 的volumeBindingMode应该设置为什么值考查知识点NFS Provisioner 部署 —— 第十三期 §4两种 Provisioner 对比详细解答NFS Provisioner 部署流程步骤操作说明1. 部署 NFS 服务端安装nfs-kernel-server创建共享目录配置/etc/exports所有 Worker 节点安装nfs-common2. 创建命名空间kubectl create ns kube-storage隔离相关资源3. 创建 RBAC 权限创建 ServiceAccount、ClusterRole、ClusterRoleBinding赋予 Provisioner 操作 PV/PVC 的权限4. 部署 Provisioner 应用创建 Deployment指定 NFS 服务器地址和共享路径镜像nfs-subdir-external-provisioner5. 创建 StorageClass指定provisioner: fuseim.pri/ifs供 PVC 引用核心优势对比对比项Local Path ProvisionerNFS Provisioner存储位置节点本地磁盘NFS 服务器跨节点共享❌ 不支持✅ 支持RWX 模式Pod 跨节点调度❌ 不支持✅ 支持绑定模式WaitForFirstConsumerImmediate适用场景临时存储、单节点共享存储、多节点、生产环境NFS 的volumeBindingMode应设置为Immediate默认值原因NFS 是共享存储所有节点都可以访问不绑定特定节点创建 PVC 时即可立即创建 PV 并绑定无需等待 Pod 调度题目五动态卷供应实验——PV 创建失败排查题目使用 Local Path Provisioner 创建 PVC 后PVC 一直处于Pending状态。请列出可能的原因和排查步骤。如果使用 NFS Provisioner 时 Pod 出现CrashLoopBackOff可能是什么问题考查知识点常见错误排查 —— 第十三期 §5.5排错思路详细解答Local Path PVC Pending 的可能原因原因排查方法解决方法Provisioner 未部署kubectl get pods -n local-path-storage部署 ProvisionerStorageClass 名称不匹配检查 PVC 的storageClassName修正为正确的 StorageClass 名称节点资源不足kubectl describe pod pod-name检查节点资源或扩容Pod 未创建volumeBindingMode: WaitForFirstConsumer创建使用该 PVC 的 PodHelper Pod 创建失败检查 Helper Pod 日志检查节点权限和磁盘空间排查步骤# 1. 检查 PVC 状态和事件kubectl describe pvcpvc-name# 2. 检查 Provisioner Pod 状态kubectl get pods-nlocal-path-storage# 3. 检查 StorageClasskubectl get sc# 4. 如果使用 Local Path检查节点目录是否存在ls/opt/local-path-provisioner/NFS Provisioner Pod CrashLoopBackOff 的可能原因原因排查方法解决方法NFS 服务端未启动systemctl status nfs-server启动 NFS 服务NFS 共享路径不存在ls /shares/创建共享目录网络不通ping NFS-SERVER-IP检查网络连通性Worker 节点未安装 NFS 客户端which mount.nfs安装nfs-commonNFS 导出配置错误cat /etc/exports修正配置并exportfs -a第十四期StatefulSet 有状态应用管理第 6-10 题题目六StatefulSet 的三大核心特性题目StatefulSet 的三大核心特性是什么请分别说明其含义。为什么 StatefulSet 必须关联 Headless Service考查知识点StatefulSet 核心特性 —— 第十四期 §2Headless Service 的作用详细解答StatefulSet 三大核心特性特性含义固定身份标识每个 Pod 拥有唯一的序号从 0 开始递增hostname 固定为「StatefulSet 名称-序号」重建后保持不变有序操作创建/扩容按0→N-1顺序缩容/删除按N-1→0逆序更新按N-1→0逆序滚动稳定存储通过PVC 模板为每个 Pod 自动创建独立的 PVCPod 重建后自动复用原 PVC数据不丢失为什么必须关联 Headless ServiceStatefulSet 需要为每个 Pod 提供固定的 DNS 解析Headless ServiceclusterIP: None不分配 ClusterIP只负责 DNS 解析Pod 的 DNS 记录格式statefulset-name-ordinal.service-name.namespace.svc.cluster.local例如nginx-0.nginx.default.svc.cluster.local这保证了 Pod 之间可以通过固定的 DNS 名称互相通信Headless Service 示例apiVersion:v1kind:Servicemetadata:name:nginxspec:clusterIP:None# Headless Serviceselector:app:nginxports:-port:80题目七StatefulSet vs Deployment 对比题目请从适用场景、网络、存储、扩缩容、更新策略五个维度对比 StatefulSet 和 Deployment。什么场景下应该使用 StatefulSet 而不是 Deployment考查知识点StatefulSet vs Deployment —— 第十四期 §3选型依据详细解答对比维度StatefulSetDeployment适用场景有状态应用数据库、分布式集群、消息队列无状态应用Web 服务、API 接口网络Headless Service固定 DNS 解析ClusterIP/LoadBalancer共享 IP存储必须 PVC PV每个 Pod 独立存储可选 PVC无持久化要求扩缩容有序0→1→2N-1→0无序瞬间完成更新策略有序更新逆序滚动更新无顺序应该使用 StatefulSet 的场景场景原因数据库MySQL、PostgreSQL需要独立存储主从身份不能混淆分布式中间件ZooKeeper、etcd节点需要固定网络标识集群需要按顺序启动消息队列Kafka节点间需要稳定的通信地址缓存集群Redis Cluster需要固定身份和持久化存储典型判断标准应用实例是否有唯一身份如主从、节点编号应用是否依赖持久化存储应用启动/关闭是否有顺序要求如果以上任一答案为“是”应考虑使用 StatefulSet。题目八PVC 模板volumeClaimTemplates的工作机制题目StatefulSet 中的volumeClaimTemplates是什么它为每个 Pod 创建的 PVC 命名格式是什么当 StatefulSet 被删除时PVC 会自动删除吗为什么考查知识点PVC 模板 —— 第十四期 §2.4存储生命周期详细解答volumeClaimTemplates的作用为 StatefulSet 中的每个 Pod 自动创建独立的 PVC每个 Pod 获得专属的存储卷互不干扰确保 Pod 重建后能复用原有的数据PVC 命名格式template-name-statefulset-name-ordinal示例volumeClaimTemplates:-metadata:name:nginx-dataStatefulSet 名称nginx副本数3创建的 PVC 名称nginx-data-nginx-0nginx-data-nginx-1nginx-data-nginx-2删除 StatefulSet 时 PVC 的行为❌ PVC不会自动删除原因数据是核心资产Kubernetes 不会自动删除 PVC防止数据丢失如需清理必须手动删除PVCkubectl delete pvc nginx-data-nginx-0 nginx-data-nginx-1 nginx-data-nginx-2如果 PV 的reclaimPolicy是Delete删除 PVC 后 PV 和后端存储会被自动清理如果是Retain则需管理员手动清理题目九StatefulSet 的有序操作与启动依赖题目StatefulSet 创建 Pod 时的顺序是什么为什么需要这种有序操作在 etcd 集群中ETCD_INITIAL_CLUSTER环境变量是如何利用 StatefulSet 的固定 DNS 实现集群自动组网的考查知识点有序操作 —— 第十四期 §2.3etcd 集群组网实验 —— 第十四期 §5详细解答创建顺序从序号 0 开始递增0 → 1 → 2 → … → N-1前一个 Pod 必须处于Running 和 Ready状态后才创建下一个每个 Pod 创建间隔约 20~30 秒由minReadySeconds控制缩容顺序从最大序号开始递减N-1 → … → 2 → 1 → 0前一个 Pod 彻底删除后才删除下一个为什么需要有序操作有状态应用通常有启动依赖关系主节点ordinal0必须先启动初始化集群从节点ordinal0依赖主节点的网络地址加入集群如果无序启动从节点可能无法找到主节点集群组网失败etcd 集群自动组网env:-name:ETCD_NAMEvalueFrom:fieldRef:fieldPath:metadata.name# 获取 Pod 名称etcd-0、etcd-1、etcd-2-name:ETCD_INITIAL_CLUSTERvalue:etcd-0http://etcd-0.etcd.statefulset.svc.cluster.local:2380,etcd-1http://etcd-1.etcd.statefulset.svc.cluster.local:2380,etcd-2http://etcd-2.etcd.statefulset.svc.cluster.local:2380工作原理ETCD_NAME通过fieldRef获取 Pod 名称如etcd-0ETCD_INITIAL_CLUSTER使用固定的 DNS 名称StatefulSet 提供的稳定网络标识每个 etcd 节点通过 DNS 名称找到其他节点即使 Pod 重建DNS 名称不变集群自动恢复实现了无需手动配置 IP 的自动组网题目十StatefulSet 的更新策略与生产环境最佳实践题目StatefulSet 支持哪两种更新策略RollingUpdate策略的默认更新顺序是什么如果希望只更新序号大于等于特定值的 Pod金丝雀发布应该配置什么参数请写出生产环境中 StatefulSet 的三条最佳实践。考查知识点StatefulSet 更新策略 —— 第十四期 §8生产环境最佳实践 —— 第十四期 §10.6详细解答两种更新策略策略行为适用场景RollingUpdate默认从最后一个序号开始逆序滚动更新大多数生产场景OnDelete只有手动删除 Pod时才更新需要完全控制更新节奏RollingUpdate 默认顺序... → 2 → 1 → 0逆序从最大的序号开始更新这样可以确保更新过程中集群的最小可用性金丝雀发布配置apiVersion:apps/v1kind:StatefulSetmetadata:name:webspec:updateStrategy:type:RollingUpdaterollingUpdate:partition:2# 只更新序号 2 的 Pod序号 partition的 Pod 保持不变稳定版序号 partition的 Pod 会被更新金丝雀版验证金丝雀版本稳定后可将partition调整为 0 完成全量更新生产环境最佳实践实践说明使用动态卷供应避免手动创建 PV使用 StorageClass 自动管理存储降低运维负担设置资源限制为有状态应用配置合理的 CPU/内存请求和限制避免资源争抢定期备份数据有状态应用的数据是关键资产需定期备份 PV 中的数据使用 Retain 回收策略防止误删 PVC 导致数据永久丢失生产环境强烈建议配置 PodDisruptionBudget保护有状态应用不被同时驱逐确保集群高可用合理设置副本数生产环境至少 3 节点满足 etcd/Redis 多数派要求避免脑裂附知识点对应总表题号主要考查知识点对应笔记章节1第十三期 §1.1、§5.1 动态卷 vs 静态卷2第十三期 §2 StorageClass 核心配置3第十三期 §3 Local Path Provisioner4第十三期 §4 NFS Provisioner5第十三期 §5.5 常见错误排查6第十四期 §2 StatefulSet 核心特性7第十四期 §3 StatefulSet vs Deployment8第十四期 §2.4 PVC 模板9第十四期 §2.3 有序操作§5 etcd 实验10第十四期 §8 更新策略§10.6 生产最佳实践学习建议对于答错的题目请回看第十三期或第十四期对应章节并动手在集群环境中执行相关命令。动态存储供应和有状态应用管理是 Kubernetes 生产环境的核心技能建议通过实际操作加深理解。— Compiled and Authored by Whisky — July 8 th, 2026