Kubernetes知识点(三)
32. Kubernetes对集群Pod和容器健康状态如何进行监控和检测的。
答:K8s 通过探针机制监控 Pod 和容器的健康状态,包括存活探针、就绪探针和启动探针)。kubelet 定期执行这些探针检查容器状态,根据结果采取重启容器、标记 Pod 不可用等操作,确保应用健康运行。
33. 解释LivenessProbes探针的作用及其适用场景。
答:LivenessProbe(存活探针)用于检测容器是否运行正常。当探测失败时,kubelet 会重启容器。适用场景:确保应用在崩溃、死锁等状态下能自动恢复,如检测 Web 服务是否能响应请求。
34. 解释ReadinessProbe探针的作用及其适用场景。
答:ReadinessProbe(就绪探针)用于判断容器是否已准备好接收请求。未通过探测时,Pod 会从服务的端点列表中移除。适用场景:应用启动需要加载数据或初始化配置,确保仅当应用完全就绪后才接收流量。
35. 解释StartupProbe探针的作用及其适用场景。
答:StartupProbe(启动探针)的作用是判断容器内的应用是否已启动完成。在启动探针探测成功之前,存活探针和就绪探针不会执行。适用场景为:针对启动缓慢的应用(如大型 JVM 应用),避免因启动时间过长导致存活探针误判而重启容器。
36. 说明K8s中Pod级别的Graceful Shutdown。
答:Pod 级别的 Graceful Shutdown(优雅关闭)是指在删除 Pod 时,Kubernetes 会先向容器内的进程发送终止信号(SIGTERM),并等待设定的终止宽限期,让进程完成收尾工作(如保存数据、关闭连接),若超时则会强制终止(SIGKILL)。可通过 terminationGracePeriodSeconds 字段来配置宽限期。
37. 解释什么是Kubernetes的Volume。
答:Kubernetes 的 Volume(存储卷)是 Pod 中容器可以访问的共享存储目录,主要用于数据持久化或在容器之间共享数据。Volume 的生命周期与 Pod 相关联,当 Pod 被删除时,卷中内容是否保留取决于卷的类型。
38. 解释emptyDir卷类型的特征。
答:emptyDir 卷是在 Pod 被调度到节点时创建的临时目录,初始状态为空,可供所有容器共享。当 Pod 从节点移除时,emptyDir 中的数据会被永久删除。适用于临时缓存、容器间数据交换等场景。
39. 解释hostPath卷类型的特征。
答:hostPath 卷会将节点的文件或目录挂载到 Pod 中,使容器能够访问节点的文件系统。其特征为:数据持久化存储在节点本地,当 Pod 调度到其他节点后,无法访问原节点的 hostPath 数据。适用于需要访问节点日志、配置文件等场景(使用时需谨慎,可能会使 Pod 与节点产生耦合)。
40. 解释PV卷类型的特征,
答:PV(PersistentVolume,持久卷)是集群级别的存储资源,由管理员预先创建或者通过 StorageClass 动态供应,独立于 Pod 的生命周期,可被多个 Pod 共享。PV 具有固定的存储容量、访问模式和回收策略,能够提供数据持久化存储能力。
41. 什么是PVC,如何使用它。
答:PVC(PersistentVolumeClaim,持久卷声明)是用户对存储资源的请求。用户通过 PVC 指定所需的存储容量、访问模式等,Kubernetes 会自动匹配符合条件的 PV 并进行绑定。使用方法是:创建 PVC 来定义存储需求,在 Pod 的 Volume 中引用 PVC 的名称,从而实现存储资源的动态分配。
42. PV有哪几种访问模式,详细说明。
答:PV 的访问模式(Access Modes)有以下几种:
ReadWriteOnce(RWO):只允许单个节点以读写方式进行挂载。
ReadOnlyMany(ROX):允许多个节点以只读方式进行挂载。
ReadWriteMany(RWX):允许多个节点以读写方式进行挂载。
ReadWriteOncePod(RWOP):仅允许单个 Pod 以读写方式进行挂载(Kubernetes 1.27 + 版本支持)。
43. 解释PV的回收策略。
答:PV 的回收策略是指当 PVC 释放 PV 时的处理方式,包括:
Retain(保留):PV 会被保留,数据不会被删除,需要管理员手动处理。
Delete(删除):PV 及其存储后端的数据会被自动删除(适用于云存储等 动态供应的 PV)。
Recycle(回收):仅清空 PV 中的数据(已废弃,推荐使用 Delete 或 Retain)。
44. 如何将特定Pod调度到指定的节点?
答:可通过以下方式将特定 Pod 调度到指定节点:
节点选择器(nodeSelector):在 Pod.spec 中指定 nodeSelector,以匹配节点标签。
节点亲和性(nodeAffinity):这是更灵活的标签匹配规则,支持软策略(preferredDuringSchedulingIgnoredDuringExecution)和硬策略(requiredDuringSchedulingIgnoredDuringExecution)。
污点和容忍(Taints and Tolerations):节点设置污点来排斥 Pod,而 Pod 设置容忍则可以被调度到该节点。
节点名称(nodeName):直接指定节点名称,跳过调度器,适用于特殊场景。
45. 什么是节点的亲和性?
答:节点亲和性(Node Affinity)是 Pod 的调度规则,通过匹配节点标签来控制 Pod 调度到哪些节点。与 nodeSelector 相比,它支持更复杂的逻辑(如 In、NotIn、Exists 等),并分为:
硬亲和性(requiredDuringSchedulingIgnoredDuringExecution):必须满足条件,否则 Pod 无法被调度。
软亲和性(preferredDuringSchedulingIgnoredDuringExecution):优先满足条件,即使不满足也可能被调度。
46. 什么是污点,它的主要用途是什么?
答:污点(Taint)是节点的属性,用于排斥不满足条件的 Pod。每个污点包含键(key)、值(value)和效果(effect):
NoSchedule:阻止未容忍该污点的新 Pod 调度到节点上。
PreferNoSchedule:尽量阻止未容忍该污点的 Pod 调度到节点上。
NoExecute:已运行的未容忍该污点的 Pod 会被驱逐,新 Pod 也无法调度到该节点。
其主要用途是:标记特殊节点(如 GPU 节点、污点节点),控制 Pod 的调度,确保节点资源得到合理使用。
47. 解释ConfigMap的作用。
答:ConfigMap 用于存储非敏感的配置数据(如环境变量、配置文件),以键值对的形式存在。其作用包括:
实现配置与应用代码的解耦,方便进行配置管理和更新。
能够被多个 Pod 共享,通过环境变量或文件挂载的方式注入到容器中。
48. Secret和ConfigMap相比较有哪些优点。
答:与 ConfigMap 相比,Secret 的优点在于它专门用于存储敏感信息(如密码、令牌、证书):
其数据会经过 Base64 编码(并非加密,需要配合 RBAC 和加密配置来增强安全性)。
访问控制更为严格,默认情况下只在需要时才挂载到 Pod,减少了敏感数据的暴露风险。
支持以文件或环境变量的形式挂载,使用方式与 ConfigMap 类似,但更适合管理敏感信息。
49. 解释ResourceQuota的作用。
答:ResourceQuota(资源配额)用于限制命名空间内资源的使用总量,防止资源被滥用。其作用是:
限制 Pod、Service、ConfigMap 等对象的数量。
限制 CPU、内存等计算资源的总请求量和限制量。
确保不同命名空间能够公平地使用集群资源,适用于多团队共享的集群环境。