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的属性。

答:

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调度到指定的节点?

答:

节点选择器(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相比较有哪些优点。

答:

Secret 与 ConfigMap 相比,优点在于专门用于存储敏感信息(如密码、令牌、证书):

数据会被 Base64 编码(非加密,需配合 RBAC 和加密配置增强安全性)。

访问控制更严格,默认仅在需要时挂载到 Pod,减少敏感数据暴露风险。

支持挂载为文件或环境变量,使用方式与 ConfigMap 类似,但更适合敏感信息管理。

 49. 解释ResourceQuota的作用。

答:

ResourceQuota(资源配额)用于限制命名空间内资源的使用总量,防止资源滥用。作用:

限制 Pod、Service、ConfigMap 等对象的数量。

限制 CPU、内存等计算资源的总请求量和限制量。

确保不同命名空间公平使用集群资源,适用于多团队共享的集群环境。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐