K8s Pod / Deployment / Service 高频面试问答

K8s Pod / Deployment / Service 高频面试问答

精简口述版,面试直接说

Pod

Q1:什么是 Pod?

A:Pod 是 K8s最小调度单元,不是容器。一个 Pod 可以包含 1 个或多个紧密耦合容器,共享网络命名空间、共享存储卷,调度和启停是原子的。同一 Pod 内容器localhost互通。

Q2:Pod 里多容器一般是什么场景?

A:主业务容器 + sidecar 边车容器。比如日志采集、流量代理、监控、证书更新。

Q3:Pod 有哪些生命周期阶段?

A:Pending(调度中)→ Running(运行)→ Failed(异常退出)→ Succeeded(正常一次性任务完成)→ Unknown(节点失联,状态无法采集)

Q4:Pod 的重启策略 restartPolicy?适用场景

A:

  • Always:默认,容器退出就重启(Deployment 用)
  • OnFailure:异常退出才重启,正常退出不重启(Job)
  • Never:退出绝不重启(一次性任务)

Q5:什么是探针(Probe),三种探针区别?

A:健康检查,kubelet 执行。

  1. livenessProbe 存活探针:容器死了就重启容器
  2. readinessProbe 就绪探针:没就绪就把 Pod 从 Service 后端 Endpoint 摘除,不接收流量,就绪后再加回
  3. startupProbe 启动探针:给慢启动应用,启动阶段跳过存活检查,启动完成后再启用 liveness

Q6:Pod 为什么不建议直接创建,要用 Deployment?

A:直接创建 Pod 没有自愈、扩缩容、滚动更新能力。节点宕机 Pod 不会重建。Deployment 管理 Pod 模板。


Deployment

Q1:Deployment 作用?底层依赖什么资源?

A:无状态应用管理,支持滚动更新、回滚、扩缩容。底层创建 ReplicaSet,ReplicaSet 负责维持 Pod 副本数量。

Q2:Deployment 更新策略两种?

A:

  1. RollingUpdate(默认滚动更新):逐步创建新 Pod,销毁旧 Pod,保证业务不断。可以配置 maxSurge 最大超量副本、maxUnavailable 最大不可用副本。
  2. Recreate:先删掉全部旧 Pod,再创建新 Pod,会中断业务,少用。

Q3:Deployment 回滚机制?

A:每次更新会保存 Revision 版本。回滚时找到历史 revision,用旧版本模板重新创建 ReplicaSet 和 Pod。kubectl rollout操作。

Q4:ReplicaSet 作用?

A:保证指定数量 Pod 副本持续运行。Deployment 一般不直接操作 RS,由 Deployment 控制器管理 RS。

Q5:扩缩容原理?

A:修改 Deployment 副本数,控制器对比期望和实际 Pod 数量,新增或删除 Pod 达到目标副本。

Q6:Deployment 和 StatefulSet 区别一句话?

A:Deployment 面向无状态服务,Pod 名字随机,网络标识不固定;StatefulSet 面向有状态服务,Pod 有序、稳定网络标识与持久存储。


Service

Q1:Service 是什么?

A:一组 Pod 的抽象访问入口,提供固定 ClusterIP,实现 Pod 负载均衡。Pod 会漂移 IP 变化,Service 地址不变。由 kube-proxy 维护转发规则。

Q2:Service 四种类型?

A:

  1. ClusterIP(默认):集群内部可访问,Pod 之间调用
  2. NodePort:宿主机开端口,<节点 IP:NodePort> 访问集群内服务
  3. LoadBalancer:云厂商提供外部负载均衡,底层基于 NodePort
  4. ExternalName:映射外部域名,集群内访问别名

Q3:Endpoint 是什么?和 Service 关系?

A:Endpoint 是 Service 后端就绪 Pod 的 IP + 端口列表。Service 控制器监听 Pod,自动维护 Endpoint。如果 Endpoint 为空,说明没有就绪 Pod,Service 访问不通。

Q4:kube-proxy 三种模式对比?

A:

  1. userspace(老版本淘汰):内核态到用户态转发,性能差
  2. iptables:默认,用 iptables 规则,无独立进程,大规模集群性能下降
  3. ipvs:内核 ipvs 模块,支持更多调度算法,大规模集群推荐

Q5:Service 调度策略(sessionAffinity)

A:会话亲和,同一个客户端 IP 流量固定转发到同一个后端 Pod,默认关闭。适合需要会话保持场景。

Q6:ClusterIP 只能集群内部访问吗?

A:是的,ClusterIP 仅集群内可达,外部访问需要 NodePort、LoadBalancer 或 Ingress。


综合高频题

Q:滚动更新过程简述?

A:Deployment 创建新 RS,按 maxSurge 先拉起新 Pod;新 Pod 就绪通过 readiness 探针后,再逐步销毁旧 RS 上旧 Pod;全部完成,旧 RS 保留用于回滚。

Q:readiness 探针失败有什么影响?

A:Pod 不会被重启,只是从 Service 的 Endpoint 移除,不再接收流量,直到就绪探针成功。

Q:liveness 探针失败会发生什么?

A:kubelet 直接重启容器。

Q:Ingress 和 Service 区别?

A:Service 四层;Ingress 七层(http/https),提供域名、路径路由,外部流量入口,后端绑定 Service。

posted @ 2026-09-19 21:46  JacobJacob  阅读(10)  评论(0)    收藏  举报