
1) 【一句话结论】针对AI推理服务的容器化部署,核心是通过Kubernetes的Deployment管理多副本、Service实现负载均衡、Horizontal Pod Autoscaler(HPA)根据负载自动扩缩容Pod,配合Cluster Autoscaler动态调整节点数量,结合持久化存储确保数据不丢失,从而实现高可用与弹性伸缩。
2) 【原理/概念讲解】老师口吻,解释关键组件:
3) 【对比与适用场景】
| 特性 | Deployment | StatefulSet | HPA | Cluster Autoscaler |
|---|---|---|---|---|
| 定义 | 管理无状态应用的Pod副本,自动重启故障Pod | 管理有状态应用的Pod,保证Pod有序,持久化存储 | 水平扩缩容Pod数量,根据指标(CPU、内存) | 水平扩缩容节点数量,根据节点负载 |
| 特性 | Pod无唯一标识,可随意扩缩容 | Pod有唯一标识(如序号),有序部署,持久化存储 | 调整Pod副本数,影响服务处理能力 | 调整节点数量,影响集群资源总量 |
| 使用场景 | AI推理服务(无状态,模型文件通过PVC持久化) | 数据库、消息队列(有状态,需有序和持久化) | AI推理服务(根据负载调整处理能力) | 集群资源紧张时,自动增加节点 |
| 注意点 | 需结合PVC实现数据持久化 | 需配置持久化存储,保证数据不丢失 | 需定义指标(CPU、QPS等) | 需配置最小/最大节点数,节点选择器 |
4) 【示例】(K8s部署文件示例)
apiVersion: apps/v1
kind: Deployment
metadata:
name: ai-inference-service
labels:
app: ai-inference
spec:
replicas: 2
selector:
matchLabels:
app: ai-inference
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: ai-inference
spec:
containers:
- name: ai-inference
image: my-ai-inference:latest
ports:
- containerPort: 5000
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "1"
memory: "2Gi"
env:
- name: MODEL_PATH
value: "/models"
volumeMounts:
- name: model-volume
mountPath: /models
volumes:
- name: model-volume
persistentVolumeClaim:
claimName: ai-model-pvc
---
apiVersion: v1
kind: Service
metadata:
name: ai-inference-service
spec:
type: ClusterIP
selector:
app: ai-inference
ports:
- protocol: TCP
port: 80
targetPort: 5000
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: ai-inference-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: ai-inference-service
minReplicas: 1
maxReplicas: 5
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ai-model-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
5) 【面试口播版答案】(约90秒)
“面试官您好,针对AI推理服务的容器化部署,确保高可用和弹性伸缩,核心方案是利用Kubernetes的Deployment、Service、Horizontal Pod Autoscaler(HPA)和Cluster Autoscaler。首先,通过Deployment管理多个Pod副本,每个Pod运行AI推理服务容器,并配置自动重启策略,保证单个Pod故障时服务不中断。然后,用Service(ClusterIP模式)提供稳定的访问入口,实现负载均衡,即使某个Pod故障,其他Pod继续响应请求。接着,部署Horizontal Pod Autoscaler,根据CPU使用率等指标,自动增加或减少Pod副本数,比如当CPU使用率超过80%时,自动扩容到3个副本,低于50%时缩容到1个,确保资源利用率最优。同时,配合Cluster Autoscaler,根据节点负载自动调整节点数量,比如当节点CPU使用率超过70%时,自动增加节点,避免资源瓶颈。另外,如果AI推理服务需要持久化数据(比如模型文件),通过PersistentVolumeClaim绑定持久化存储(如NFS),确保模型文件不丢失,Pod重启或故障转移后数据可用。这样,整体方案实现了高可用(多副本、自动故障转移)和弹性伸缩(根据负载自动调整资源),满足业务需求。”
6) 【追问清单】
7) 【常见坑/雷区】