目录
1.Kubernetes对集群Pod和容器健康状态如何进行监控和检测的。
2.解释LivenessProbes探针的作用及其适用场景。
[3. 解释ReadinessProbe探针的作用及其适用场景。](#3. 解释ReadinessProbe探针的作用及其适用场景。)
[4. 解释StartupProbe探针的作用及其适用场景。](#4. 解释StartupProbe探针的作用及其适用场景。)
[5. 说明K8s中Pod级别的Graceful Shutdown。](#5. 说明K8s中Pod级别的Graceful Shutdown。)
[6. 解释什么是Kubernetes的Volume。](#6. 解释什么是Kubernetes的Volume。)
[7. 解释emptyDir卷类型的特征。](#7. 解释emptyDir卷类型的特征。)
[8. 解释hostPath卷类型的特征。](#8. 解释hostPath卷类型的特征。)
[9. 解释PV卷类型的特征](#9. 解释PV卷类型的特征)
[10. 什么是PVC,如何使用它。](#10. 什么是PVC,如何使用它。)
[11. PV有哪几种访问模式,详细说明。](#11. PV有哪几种访问模式,详细说明。)
[12. 解释PV的回收策略。](#12. 解释PV的回收策略。)
[13. 如何将特定Pod调度到指定的节点?](#13. 如何将特定Pod调度到指定的节点?)
[14. 什么是节点的亲和性?](#14. 什么是节点的亲和性?)
[15. 什么是污点,它的主要用途是什么?](#15. 什么是污点,它的主要用途是什么?)
[16. 解释ConfigMap的作用。](#16. 解释ConfigMap的作用。)
[17. Secret和ConfigMap相比较有哪些优点。](#17. Secret和ConfigMap相比较有哪些优点。)
[18. 解释ResourceQuota的作用。](#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)。