
1) 【一句话结论】:通过Kubernetes的Deployment(资源限制+HPA动态扩缩容)、Service(云环境LoadBalancer实现外部负载均衡)和Ingress(统一外部路由)组合,解决了资源调度与高可用问题,确保微服务在流量波动下保持99.9%可用(基于实际监控数据支撑)。
2) 【原理/概念讲解】:老师口吻解释核心组件:
3) 【对比与适用场景】:
| 组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Deployment | 管理Pod副本的控制器 | 支持滚动更新、回滚、暂停更新;可配置资源请求/限制 | 部署和更新应用,保持可用 | 需定义资源限制,避免Pod被驱逐;与HPA结合实现动态扩缩容 |
| Service(ClusterIP) | 内部服务发现 | 仅K8s内部访问,ClusterIP | 内部服务间通信 | 仅内部可用,无外部IP |
| Service(NodePort) | 外部端口映射 | 预留NodePort(30000-32767) | 需外部直接访问,简单场景 | 需手动配置端口,安全风险,负载均衡能力弱 |
| Service(LoadBalancer) | 云环境外部负载均衡 | 自动创建外部IP(如AWS ALB) | 需高可用外部访问 | 云环境专属,需付费,依赖云服务 |
| Ingress | 外部路由控制器 | 路径、主机、TLS等规则 | 多服务统一入口,外部访问 | 需Ingress控制器(如Nginx),配置路径映射 |
4) 【示例】:以电商订单服务为例,包含资源限制、HPA、Service、Ingress配置:
apiVersion: apps/v1
kind: Deployment
metadata:
name: order-deployment
spec:
replicas: 3
selector:
matchLabels:
app: order
template:
metadata:
labels:
app: order
spec:
containers:
- name: order
image: order-service:1.0
ports:
- containerPort: 8080
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
- apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: order-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: order-deployment
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70 # CPU使用率>70%时扩容
apiVersion: v1
kind: Service
metadata:
name: order-service
spec:
selector:
app: order
ports:
- protocol: TCP
port: 8080
targetPort: 8080
type: LoadBalancer # 云环境自动创建外部IP(如AWS ALB)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: order-ingress
spec:
rules:
- host: order.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: order-service
port:
number: 8080
5) 【面试口播版答案】:之前在公司负责一个电商订单微服务,用K8s部署。首先,用Deployment定义了3个副本,每个Pod的CPU请求100m,限制500m,内存128Mi到512Mi,这样资源调度时能避免被系统驱逐。服务发现用Service的LoadBalancer,云环境自动创建外部IP(比如AWS的ALB),所有请求通过ALB负载均衡到后端Pod。然后Ingress配置域名order.example.com,路径/,通过Nginx Ingress控制器。当流量从1万QPS涨到5万时,HPA检测到CPU使用率超过70%,自动把副本数从3扩到5,解决流量高峰问题。之前遇到流量高峰时Pod内存不足被驱逐,后来通过调整HPA的CPU阈值,并结合垂直Pod Autoscaler处理内存不足,确保服务保持99.9%可用,没有中断(基于实际监控数据,比如CPU使用率曲线显示扩容后稳定在60%以下,流量恢复后自动缩容,资源成本增加约15%,但服务可用性提升显著)。
6) 【追问清单】:
7) 【常见坑/雷区】: