在Kubernetes面试中,面试题:K8s Pod Service Ingress 概念是考察容器编排理解的基础题目。这三个核心对象构成了K8s网络架构的基石:Pod作为最小部署单元承载应用,Service提供稳定访问入口,Ingress管理外部流量路由。理解它们的协同机制,是设计高可用、可扩展K8s集群的前提。本文将从概念定义、工作原理、实战配置到面试考点,全面拆解这三个核心组件,结合鳄鱼java技术团队的部署案例,帮你在面试中展现对K8s架构的深度理解,正如鳄鱼java在《K8s实战手册》中强调的:"Pod、Service、Ingress的关系,就像细胞、器官与血管系统,缺一不可。"
Pod:K8s集群的"最小部署单元"

Pod是Kubernetes调度的最小单元,包含一个或多个紧密关联的容器,共享网络命名空间和存储卷,是应用运行的"逻辑主机"。
1. Pod的核心特性与设计理念
Pod的设计遵循"单一责任原则",每个Pod专注于运行一个应用实例,其核心特性包括:
- 共享网络:Pod内所有容器共享一个网络命名空间,通过
localhost相互通信,容器间端口冲突需通过不同端口映射解决。 - 共享存储:通过Volume实现数据持久化,所有容器可访问Pod级别的存储卷(如EmptyDir、PersistentVolume)。
- 生命周期管理:支持健康检查(livenessProbe/readinessProbe)、优雅终止(terminationGracePeriodSeconds)和自动重启(restartPolicy)。
- 短暂性:Pod是临时实体,重建后IP会变化,需通过Service提供稳定访问。
鳄鱼java技术团队实测显示:在高可用配置下,Pod故障自动恢复时间通常小于30秒,远低于传统虚拟机的分钟级恢复速度。
2. Pod的生命周期与关键阶段
Pod从创建到销毁经历多个阶段,核心状态包括:
| 状态 | 含义 | 常见原因 |
|---|---|---|
| Pending | Pod已创建但容器未全部启动 | 资源不足、镜像拉取慢、初始化容器未完成 |
| Running | 所有容器正常运行 | 应用正常启动,健康检查通过 |
| Succeeded | 所有容器成功退出且不会重启 | 一次性任务执行完成(如Job) |
| Failed | 至少一个容器异常退出 | 应用崩溃、健康检查失败、OOM |
| Unknown | API Server无法获取Pod状态 | 节点通信故障、kubelet异常 |
示例Pod配置(nginx-deployment.yaml):
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 10
periodSeconds: 5
Service:Pod的"稳定访问入口"
Service为一组Pod提供固定访问地址和负载均衡能力,解决Pod动态变化导致的IP不稳定问题,是K8s服务发现的核心机制。
1. Service的核心功能与类型
Service通过标签选择器(Label Selector)关联Pod,无论Pod如何重建,Service的虚拟IP(ClusterIP)保持不变,实现"Pod动态变化,Service静态访问"。
Service主要类型及应用场景:
| 类型 | 特点 | 使用场景 |
|---|---|---|
| ClusterIP | 集群内虚拟IP,仅集群内访问 | 内部服务通信(如微服务间调用) |
| NodePort | 在每个节点开放静态端口,外部通过NodeIP:NodePort访问 | 开发测试环境、简单外部访问 |
| LoadBalancer | 结合云厂商负载均衡器,自动分配公网IP | 生产环境外部访问(需云平台支持) |
| ExternalName | 通过CNAME记录映射集群外服务 | 引入外部服务(如数据库、第三方API) |
鳄鱼java技术团队提醒:NodePort端口范围默认30000-32767,生产环境建议通过Ingress暴露服务,而非直接使用NodePort。
2. Service的负载均衡与会话保持
Service默认通过iptables或IPVS实现负载均衡,支持多种调度策略:
- 轮询(Round Robin):默认策略,请求按顺序分发到后端Pod
- 会话亲和性(Session Affinity):通过
sessionAffinity: ClientIP配置,同一客户端请求固定转发到同一Pod,适用于有状态服务 - IPVS高级策略:支持rr(轮询)、wrr(加权轮询)、lc(最小连接)等,需开启IPVS模式
示例Service配置(nginx-service.yaml):
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx # 匹配标签为app=nginx的Pod
ports:
- port: 80 # Service端口
targetPort: 80 # Pod容器端口
type: ClusterIP # 集群内访问
Ingress:K8s集群的"流量入口管家"
Ingress是管理外部访问的API对象,通过HTTP/HTTPS路由规则将外部流量转发到内部Service,实现域名路由、SSL终结、路径匹配等高级功能。
1. Ingress的核心作用与工作原理
Ingress解决了Service无法处理的七层路由问题,其工作流程如下:
- 部署Ingress控制器(如nginx-ingress、traefik),作为集群流量入口
- 定义Ingress规则,指定域名、路径与后端Service的映射关系
- 外部流量到达Ingress控制器,根据规则转发到对应Service
- Service将请求负载均衡到后端Pod
Ingress支持的核心功能: - 基于域名的虚拟主机(如将api.example.com路由到API服务,web.example.com路由到Web服务) - 路径匹配(如将/example/*路由到Example服务) - SSL/TLS终结(配置证书实现HTTPS访问) - 限流、认证、重定向等高级特性
2. Ingress规则配置与实战案例
示例Ingress配置(nginx-ingress.yaml):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec: 版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。





