【Kubernetes】知识点2
15. 什么是Pod的根容器?
答:Pod 的根容器是每个 Pod 中默认存在的一个特殊容器pause容器,有时也称为infra容器,它是Pod 启动时创建的第一个容器,也是整个 Pod中所有容器的 “父容器”。其核心作用是为 Pod 内的所有容器提供共享的网络命名空间(Network Namespace)和 PID 命名空间(PID Namespace),并维持Pod的生命周期。
16. 解释Pod的生命周期。
答:Pod的生命周期是指从 Pod 被创建到最终被删除的完整过,起始于Pending阶段,如果至少其中有一个主要容器正常启动,则进入Running,之后取决于Pod中是否有容器以失败状态结束而进入succeeded或者Failed.
-Pending (挂起): Pod 已被K8s系统接受,但有个或者多个容器镜像尚未创建。等待时间包括调度Pod的时间和通过网络下载镜像的时间。
-Running(运行中):该Pod 已经绑定到了一个节点上,Pod 中所有的容器都已被创建,至少有一个容器正在运行,或者正处于启动或重启状态。
-Succeede(成功): Pod中的所有容器都被成功终止,并且不会再重启。
-Failed (失败): Pod中的所有容器都己终止了,并且至少有一个容器是因为失败终止,即容器以非0状态退出或者被系统终止。
-未知(Unknown):因为某些原因无法取得 Pod 的状态,通常是因为与Pod所在主机通信失败。
17. Init类型容器有什么特点,主要用途?
答:特点:Init容器是一种特殊容器,它在Pod内的应用容器启动之前运行,容器会按定义的顺序依次运行,如果Pod的Init容器失败,则kubelet会不断地重启该Init容器直到成功为止。但如果Pod对应的restartPolicy值为“Never", 同时Pod的Init容器启动失败时,则Kubernetes会将整个Pod状态设置为失败。
用途:等待依赖服务就绪;初始化配置;预处理数据;权限与安全隔离等。如业务容器需要连接的数据库、缓存服务等尚未启动时,Init 容器可以循环检测依赖服务的可用性(如通过curl或nc命令),直到依赖就绪后才退出,确保业务容器启动时能正常连接依赖。
18. Sidecar类型容器和Init容器的区别在哪?
答:Sidecar容器(并排容器)与业务容器并行启动,为业务容器提供 “伴随式” 辅助功能。
Init容器仅在业务容器启动之前运行,且严格按定义顺序执行,一旦完成初始化任务就会终止(退出),业务容器才会启动。
19. 什么是静态Pod?
答:静态 Pod(Static Pod)是一种由节点上的kubelet守护进程直接管理的特殊 Pod,静态 Pod 严格绑定在某个特定节点上,无法被调度到其他节点,其生命周期与所在节点的 kubelet 进程强关联
20. 说明K8s控制器的作用?
答:K8s控制器是集群的核心组件,用来持续监控集群的当前状态,并不断调整以匹配用户定义的期望状态。
21. 什么是ReplicaSet,说明它的主要用途。
答:ReplicationController用来确保在任何时候都有特定数量的Pod副本处于运行状态。换句话说, ReplicationController能够确保一个Pod或一组同类的Pod总是可用的。
ReplicaSet的目的是维护一组在任何时候都处于运行状态的Pod副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的Pod的可用性。推荐使用配置了Replica Set的Deployment来建立副本管理机制。
22. Deployment控制器是如何工作的,举例说明其常见用途。
答:Deployment 控制通过管理ReplicaSet来间接管理 Pod,实现无状态应用的创建、更新、扩缩容和回滚等全生命周期管理。Deployment 的核心逻辑基于 “声明式配置” 和 “滚动更新策略。
常见用途:1)创建 Deployment 以将 ReplicaSet 上线。
2) 通过更新 Deployment 的 PodTemplateSpec,声明 Pod 的新状态 。
3) 回滚到较早的 Deployment 版本。
4) 扩大 Deployment 规模以承担更多负载。
23. 解释DaemonSet,列举其使用场景。
答:DaemonSet 会自动在集群的所有节点上创建 Pod,且每个节点仅运行一个副本。当新节点加入集群时,DaemonSet 会自动在新节点上部署对应的 Pod;当节点从集群移除时,该节点上的 DaemonSet Pod 会被自动删除。
使用场景:节点监控与日志收集;安全代理与审计工具;负载均衡与流量转发等。
24. 什么是StatefulSet,其主要作用是什么?
答:StatefulSet控制器用来管理基于相同容器规约的一组Pod。但和Deployment不同的是, StatefulSet为它的每个Pod维护了一个有粘性的ID。这些Pod是基于相同的规约来创建的,但是不能相互替换:无论怎么调度,每个Pod都有一个永久不变的ID。
主要作用:保证实例标识的唯一性与稳定性;确保数据的持久化与一致性;支持有序操作,降低集群风险