K8s中的控制器、Job、CronJob、Server发现、健康检查、存储卷,相关知识总结

1. 解释 DaemonSet,其使用场景。

控制器能确保在全部(或者某些)节点上各运行一个 Pod 的副本。当有新节点加入 集群时,也会为新节点启动一个 Pod,当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。

在每个节点上运行集群守护进程;在每个节点上运行日志收集守护进程;在每个节点上运行监控守护进程。

2. 什么是 StatefulSet,其主要作用是什么?

用来管理基于相同容器规约的一组 Pod。为它的每个 Pod 维护了一个有粘性的 ID

3. Job 与 CronJob 的功能。

一次性作业 和 周期性作业

4. Kubernetes 如何在集群的 Pod 之间提供网络服务?

通过服务(Service)对象,为一组具有相同功能的 Pod 提供稳定的访问入口和负载均衡。

5. iptables 和 IPVS 代理模式 Service 的区别。

性能方面,IPVS 通常比 iptables 具有更好的性能,尤其是在处理大量连接时。规则处理上,iptables 基于规则链进行匹配和处理,相对较为复杂;IPVS 则专门为负载均衡设计,规则处理更高效。在服务类型支持上,IPVS 对某些特定类型的服务支持更友好。

6. ClusterIP 类型 Service 的用法。

ClusterIP 类型的 Service 主要用于在集群内部提供服务访问。

例如,有一个后端的数据库服务部署在 Kubernetes 集群中,不希望直接暴露到外部,只在集群内部被其他组件访问。这时可以创建一个 ClusterIP 类型的 Service 来关联这个数据库 Pod 。

7. NodePort 类型 Service 的用法。

NodePort 类型的 Service 可将服务暴露在集群节点的指定端口上,以便从集群外部访问。

例如,一个内部开发的 Web 应用,需要外部用户能够访问,就可以创建一个 NodePort 类型的 Service ,外部用户通过节点的 IP 和指定的端口来访问该应用。

8. Headless 类型 Service 的用法。

Headless Service 不会分配 ClusterIP ,常用于需要直接访问后端 Pod 的场景。

比如,一个分布式数据库系统,每个 Pod 都有独立的状态和标识,客户端需要直接与特定的 Pod 进行通信,就可以使用 Headless Service 。

9. Ingress 的实现原理和它所实现的功能。

Ingress 本质上是 Kubernetes 中的一种 API 对象,用于将外部网络的请求路由到集群内的服务。它基于 HTTP 或 HTTPS 协议工作,通过定义规则来匹配进入集群的流量,并将其转发到相应的后端服务。

Ingress 控制器负责监听 Ingress 资源的定义,并根据规则配置网络基础设施(如负载均衡器),实现流量的路由和分发。

统一入口管理:为集群中的多个服务提供一个统一的外部访问入口,简化了网络配置。

基于路径和域名的路由:可以根据请求的 URL 路径和域名将流量导向不同的服务。

负载均衡:在多个后端服务实例之间均衡分配流量,提高服务的可用性和性能。

TLS 终止:处理 HTTPS 流量的解密,并将请求转发到后端的明文服务。

10. Kubernetes 对集群 Pod 和容器健康状态如何进行监控和检测的。

Readiness Probes(就绪探针):用于检查 Pod 是否准备好接收流量。如果就绪探针检测失败,Pod 不会被纳入服务的流量分发。

Liveness Probes(存活探针):用于检查 Pod 是否正在运行。如果存活探针检测失败,Kubernetes 会重启该 Pod。

11. LivenessProbes 探针的作用及其适用场景。

LivenessProbes(存活探针)主要用于检测容器是否正在运行且健康。如果存活探针检测到容器不健康,Kubernetes 会自动重启该容器,以确保应用的持续可用性。

当应用可能会由于某种错误进入死锁或不可恢复的状态时。

对于长时间运行的任务,如果可能出现进程卡住的情况。

对于关键的业务服务,需要及时恢复以保证服务的连续性。

12. ReadinessProbe 探针的作用及其适用场景。

用于检查 Pod 是否准备好接收流量。它能让 Kubernetes 知道某个 Pod 是否已经准备好为客户端请求提供服务。

应用启动时需要进行一些初始化操作,在完成这些操作之前不应该接收流量。

当应用依赖外部服务,在与外部服务建立连接成功之前不适合接收流量。

对于有多个副本的服务,确保只有完全准备好的 Pod 副本才被纳入服务的流量分发。

13. StartupProbe 探针的作用及其适用场景。

用于解决应用启动时间较长的问题。它可以在应用启动阶段进行探测,确保应用在启动过程中不会因为其他探针(如 LivenessProbe 或 ReadinessProbe)的失败判断而被误杀。

当应用的启动过程较为复杂且耗时较长时。

对于新部署的应用,需要一定时间来预热和准备好处理请求。

防止应用在启动尚未完成时,就因为其他探针的误判而被频繁重启。

14. K8s 中 Pod 级别的 Graceful Shutdown。

 在 Kubernetes 中,Pod 级别的 Graceful Shutdown 指的是在 Pod 被删除或终止之前,给容器足够的时间来完成正在进行的任务,并优雅地关闭。这通常通过发送终止信号给容器,并等待一段时间(默认 30 秒)来实现。

15. 什么是 Kubernetes 的 Volume。

Volume 是 Kubernetes 中用于在 Pod 中的容器之间共享数据,或者将数据持久化存储的一种机制。

16. emptyDir 卷类型的特征。

 emptyDir 卷在 Pod 分配到节点时创建,并且初始为空。只要 Pod 在该节点上运行,卷就会一直存在,但其内容会在 Pod 被删除时清除。常用于临时存储数据,例如在同一 Pod 中的多个容器之间共享数据。

17. hostPath 卷类型的特征。

hostPath 卷将节点上的文件或目录挂载到 Pod 中。这使得 Pod 可以访问节点上的特定路径,但不具备跨节点的可移植性。

18. PV 卷类型的特征,

PV(PersistentVolume)是集群中的一块存储资源,具有独立于 Pod 的生命周期。它可以由管理员预先创建,或者通过动态供应机制创建。

19. 什么是 PVC,如何使用它。

PVC(PersistentVolumeClaim)是用户对存储资源的请求。用户创建 PVC 来指定所需的存储大小和访问模式,Kubernetes 会自动将其与合适的 PV 进行绑定。

20. PV 的几种访问模式

ReadWriteOnce(RWO):只能被单个节点以读写方式挂载。

ReadOnlyMany(ROX):可以被多个节点以只读方式挂载。

ReadWriteMany(RWX):可以被多个节点以读写方式挂载。

21.  PV 的回收策略。

Retain:保留 PV 及其中的数据,管理员需要手动处理。

Delete:删除 PV 及相关的存储资源。

Recycle:清理 PV 中的数据,使其可以被重新使用。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐