
1) 【一句话结论】
通过Kubernetes的Deployment(管理Pod)、Service(服务发现与负载均衡)、Ingress(外部请求入口)、HPA(自动扩缩容)及PV/PVC(持久化存储)等组件协同,实现视频处理微服务的自动化部署、服务发现、负载均衡、自动扩缩容及持久化存储。
2) 【原理/概念讲解】
老师口吻解释各核心组件的作用与关系:
3) 【对比与适用场景】
以Service类型为例(核心服务发现与负载均衡组件):
| 服务类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| ClusterIP | 集群内部IP | 仅集群内访问 | 微服务间通信(内部调用) | 需配合Ingress或NodePort暴露外部 |
| NodePort | Node的固定端口 | 集群内+外部访问 | 测试或临时访问(如开发环境) | 端口占用,可能冲突 |
| LoadBalancer | 云服务商的负载均衡器 | 外部访问 | 生产环境(高可用) | 依赖云服务商,成本较高 |
4) 【示例】
以视频转码服务为例,给出最小可运行部署文件(伪代码+关键配置):
Deployment(管理Pod):
apiVersion: apps/v1
kind: Deployment
metadata:
name: video-transcoder
spec:
replicas: 3
selector:
matchLabels:
app: video-transcoder
template:
metadata:
labels:
app: video-transcoder
spec:
containers:
- name: transcoder
image: mycompany/video-transcoder:latest
ports:
- containerPort: 8080
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
Service(服务发现与负载均衡):
apiVersion: v1
kind: Service
metadata:
name: transcoder-svc
spec:
selector:
app: video-transcoder
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP # 内部服务发现,配合Ingress暴露
Ingress(外部请求入口):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: transcoder-ingress
spec:
rules:
- host: transcoder.video.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: transcoder-svc
port:
number: 80
HPA(自动扩缩容):
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: transcoder-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: video-transcoder
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70 # CPU利用率超70%时扩容
PV/PVC(持久化存储):
# PersistentVolume(存储资源,假设云服务商提供)
apiVersion: v1
kind: PersistentVolume
metadata:
name: video-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/video-storage
# PersistentVolumeClaim(Pod的存储请求)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: video-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
selector:
matchLabels:
app: video-transcoder
5) 【面试口播版答案】
(约90秒,自然表达)
“在万兴的云服务中部署视频转码微服务,核心是通过Kubernetes的组件协同实现自动化运维。首先,用Deployment定义视频转码容器,设置3个副本和资源限制(CPU/内存),确保服务稳定;然后创建ClusterIP类型的Service,让内部服务能通过IP找到彼此;接着配置Ingress,将外部请求(如域名transcoder.video.example.com)路由到Service,方便用户访问;再设置HPA,根据CPU利用率自动调整副本数,比如当CPU使用率超过70%时增加副本,应对负载高峰;最后用PersistentVolumeClaim绑定PersistentVolume,为视频文件提供持久化存储,避免转码过程中数据丢失。整个过程实现了微服务的自动化部署、服务发现、负载均衡、自动扩缩容及持久化存储,符合云原生架构的要求。”
6) 【追问清单】
视频文件很大时如何优化存储?
服务间通信如何处理?
Ingress被攻击时如何保障安全?
HPA的指标除了CPU,还可以用哪些?
部署时如何保证镜像安全?
7) 【常见坑/雷区】