K8S集群管理(3)
目录
1.Kubernetes对集群Pod和容器健康状态如何进行监控和检测的。
2.解释LivenessProbes探针的作用及其适用场景。
3. 解释ReadinessProbe探针的作用及其适用场景。
4. 解释StartupProbe探针的作用及其适用场景。
5. 说明K8s中Pod级别的Graceful Shutdown。
6. 解释什么是Kubernetes的Volume。
7. 解释emptyDir卷类型的特征。
8. 解释hostPath卷类型的特征。
9. 解释PV卷类型的特征
10. 什么是PVC,如何使用它。
11. PV有哪几种访问模式,详细说明。
12. 解释PV的回收策略。
13. 如何将特定Pod调度到指定的节点?
14. 什么是节点的亲和性?
15. 什么是污点,它的主要用途是什么?
16. 解释ConfigMap的作用。
17. Secret和ConfigMap相比较有哪些优点。
18. 解释ResourceQuota的作用。
1.Kubernetes对集群Pod和容器健康状态如何进行监控和检测的。
Kubernetes 主要通过探针(Probes) 机制监控 Pod 和容器的健康状态,由节点上的 kubelet 组件执行检测。探针包括三种类型:LivenessProbe(存活探针)、ReadinessProbe(就绪探针)、StartupProbe(启动探针)。
探针通过在容器内执行命令、发送 HTTP 请求或检测 TCP 端口等方式,判断容器状态。
2.解释LivenessProbes探针的作用及其适用场景。
作用:检测容器内的应用是否 “存活”(运行正常)。若探测失败,kubelet 会重启容器,确保应用恢复可用状态。
适用场景:应用可能出现 “假死” 状态(如进程未退出但无法响应请求、死锁)的情况。例如,Web 服务因内存泄漏无响应,LivenessProbe 可触发重启恢复服务。
3. 解释ReadinessProbe探针的作用及其适用场景。
作用:检测容器是否 “准备就绪”(可接收请求)。若探测失败,Pod 会从 Service 的端点列表中移除,不再接收流量。
适用场景:应用启动过程中需要加载数据或依赖(如数据库连接初始化),此时容器已运行但暂不能处理请求。例如,后端服务启动时需同步配置,就绪探针失败时暂不接收用户请求。
4. 解释StartupProbe探针的作用及其适用场景。
作用:检测容器内的应用是否 “完全启动”。仅在启动探针成功后,LivenessProbe 和 ReadinessProbe 才开始生效,避免启动缓慢的应用被误判为故障。
适用场景:启动时间长的应用(如大型 JVM 服务、初始化脚本耗时久的应用)。例如,数据分析服务启动需加载 10 分钟数据,StartupProbe 可设置较长超时时间,防止 LivenessProbe 提前触发重启。
5. 说明K8s中Pod级别的Graceful Shutdown。
当删除 Pod 时,Kubernetes 会执行以下优雅终止流程:
向 Pod 中所有容器的主进程发送SIGTERM信号,通知应用准备终止。
等待terminationGracePeriodSeconds(默认 30 秒),期间应用可处理收尾工作(如保存数据、关闭连接)。
若超时后容器仍未退出,kubelet 发送SIGKILL信号强制终止。
目的:避免强制终止导致数据丢失或服务中断,确保应用 “体面退出”。
6. 解释什么是Kubernetes的Volume。
Volume(卷)是 Pod 中容器可共享的存储空间,用于持久化数据或实现容器间数据共享。
生命周期与 Pod 绑定:Pod 创建时卷被初始化,Pod 删除时卷被清理(部分类型除外,如 hostPath)。
支持多种存储类型(如 emptyDir、hostPath、PV 等),可对接本地存储或分布式存储(如 NFS、云存储)。
7. 解释emptyDir卷类型的特征。
创建时机:Pod 被调度到节点时自动创建,初始为空。
生命周期:与 Pod 一致,Pod 删除时卷被永久删除。
存储位置:默认使用节点的本地磁盘,也可配置为内存(medium: Memory)。
用途:Pod 内多个容器共享临时数据(如日志缓存、中间计算结果)。
8. 解释hostPath卷类型的特征。
定义:将节点的本地文件或目录直接挂载到 Pod 中。
数据持久性:数据存储在节点本地,Pod 删除后数据仍保留在节点上。
局限性:跨节点调度时数据不共享(不同节点的 hostPath 路径独立),存在安全风险(可能暴露节点文件系统)。
用途:需访问节点本地文件的场景(如读取节点日志、挂载 Docker 守护进程文件)。
9. 解释PV卷类型的特征
PV(PersistentVolume,持久卷)是集群级别的持久化存储资源,由管理员预先创建,独立于 Pod 生命周期。
特征:
包含存储容量、访问模式、存储类型、回收策略等属性。
支持多种后端(如 NFS、Ceph、云厂商存储服务)。
与 PVC(PersistentVolumeClaim)配合使用,实现 “存储即服务”(用户无需关心底层存储细节)。
10. 什么是PVC,如何使用它。
PVC(PersistentVolumeClaim,持久卷声明)是用户对存储资源的 “请求”,用于申请 PV 的资源。
使用流程:
用户创建 PVC,指定所需的存储容量(storage)、访问模式(如ReadWriteOnce)等。
Kubernetes 自动匹配满足条件的 PV 并绑定(“PV-PVC 绑定”)。
在 Pod 的volumes中引用该 PVC,容器即可挂载使用对应存储。
11. PV有哪几种访问模式,详细说明。
PV 的访问模式定义了存储如何被节点或 Pod 访问,包括:
ReadWriteOnce(RWO):仅允许一个节点以读写方式挂载,多个 Pod 在同一节点可共享。
ReadOnlyMany(ROX):允许多个节点以只读方式挂载。
ReadWriteMany(RWX):允许多个节点以读写方式挂载(需存储后端支持,如 NFS、Ceph)。
ReadWriteOncePod(RWOP):仅允许一个 Pod 以读写方式挂载(K8s 1.22 + 新增,更严格的隔离)。
12. 解释PV的回收策略。
回收策略定义了当 PVC 被删除后,PV 的处理方式,包括:
Retain(保留):PV 保留,数据不删除,需管理员手动清理和重用。
Delete(删除):PV 自动删除,关联的底层存储(如云盘)也会被删除(适用于云存储)。
Recycle(回收,已废弃):仅支持 NFS 等,删除 PVC 后清空 PV 数据,可被重新绑定(推荐用 Retain + 手动清理替代)。
13. 如何将特定Pod调度到指定的节点?
nodeSelector:在 Pod.spec 中定义nodeSelector,匹配节点标签(如nodeSelector: {env: prod})。
节点亲和性(nodeAffinity):更灵活的规则(如in、notIn),分为 “必须满足” 和 “优先满足” 两种策略。
污点(Taint)与容忍度(Toleration):节点设置污点排斥 Pod,仅带有对应容忍度的 Pod 可调度。
nodeName:直接指定节点名称(跳过调度器,不推荐,缺乏灵活性)。
14. 什么是节点的亲和性?
节点亲和性是 Pod 与节点的 “亲和关系” 规则,用于将 Pod 调度到具有特定属性的节点,比 nodeSelector 更灵活。
类型:
requiredDuringSchedulingIgnoredDuringExecution:必须满足条件,否则 Pod 无法调度。
preferredDuringSchedulingIgnoredDuringExecution:优先满足条件,不满足也可能调度(影响调度优先级)。
15. 什么是污点,它的主要用途是什么?
污点(Taint)是节点的键值对属性,用于 “排斥” Pod,仅当 Pod 配置了对应的容忍度(Toleration)时,才能被调度到该节点。
格式:key=value:effect(effect 包括 NoSchedule(禁止新 Pod 调度)、PreferNoSchedule(尽量不调度)、NoExecute(已运行的 Pod 会被驱逐))。
用途:
专用节点(如 GPU 节点,仅允许 AI 任务 Pod 调度)。
节点维护(标记为 NoSchedule,避免新 Pod 调度)。
基于硬件特性隔离(如高性能节点仅允许特定 Pod 使用)。
16. 解释ConfigMap的作用。
ConfigMap 用于存储非敏感配置数据(如应用参数、环境变量),以键值对形式存在,实现 “配置与代码分离”。
使用方式:作为环境变量注入、命令行参数、文件挂载到容器。
优势:方便配置更新(无需重新构建镜像)、支持多环境(开发 / 测试 / 生产)配置隔离。
17. Secret和ConfigMap相比较有哪些优点。
Secret 用于存储敏感信息(如密码、令牌、证书),相比 ConfigMap 的优点:
数据会被 Base64 编码(虽非加密,但避免明文暴露)。
访问权限更严格(仅授权的 Pod 可访问)。
支持加密存储(通过 etcd 加密配置,防止数据在后端泄露)。
避免敏感信息嵌入镜像或配置文件,降低泄露风险。
18. 解释ResourceQuota的作用。
ResourceQuota(资源配额)用于限制命名空间内资源的总使用量,防止资源滥用,确保公平分配。
可限制的资源:
计算资源:Pod 总数、CPU / 内存的请求(request)和限制(limit)总和。
存储资源:PVC 数量、存储请求总和。
用途:管理员通过配置 ResourceQuota,控制每个命名空间的资源上限(如 “prod” 命名空间最多使用 100 核 CPU)。