
1) 【一句话结论】:云原生技术通过容器化封装应用并借助Kubernetes声明式编排,为智慧城市提供弹性、可扩展的运行环境,支持快速迭代、资源优化及多应用协同,提升系统可靠性与运维效率。
2) 【原理/概念讲解】:老师口吻解释核心概念:
3) 【对比与适用场景】:
| 对比维度 | 传统部署(虚拟机) | 云原生(容器化+K8s) |
|---|---|---|
| 定义 | 应用部署在虚拟机(VM),每个VM包含OS、应用 | 应用打包为容器镜像,K8s管理容器 |
| 核心特性 | 资源隔离(基于OS),启动慢(分钟级),扩展慢(需手动调整VM数量) | 轻量级隔离(基于Linux容器),启动快(秒级),弹性伸缩(自动扩缩容) |
| 使用场景 | 长期运行、资源固定、对性能要求高的应用(如数据库、核心业务系统) | 需快速迭代、高可用、弹性伸缩的应用(如智慧城市交通信号灯、安防监控、应急指挥系统) |
| 注意点 | 环境一致性差(依赖OS版本),扩展成本高(需购买更多VM) | 需K8s集群,管理复杂(需关注镜像安全、网络策略),但可通过自动化降低运维成本 |
4) 【示例】:以“智慧城市交通信号灯控制系统”为例,用K8s部署(包含资源限制、网络策略、数据持久化):
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "traffic_control.py"]
apiVersion: apps/v1
kind: Deployment
metadata:
name: traffic-light-deployment
spec:
replicas: 3
selector:
matchLabels:
app: traffic-light
template:
metadata:
labels:
app: traffic-light
spec:
containers:
- name: traffic-light
image: my-traffic-light:latest
ports:
- containerPort: 5000
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
apiVersion: v1
kind: Service
metadata:
name: traffic-light-service
spec:
type: LoadBalancer
selector:
app: traffic-light
ports:
- protocol: TCP
port: 80
targetPort: 5000
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-traffic-light
spec:
podSelector:
matchLabels:
app: traffic-light
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: traffic-monitor
ports:
- protocol: TCP
port: 5000
apiVersion: v1
kind: PersistentVolume
metadata:
name: traffic-data-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/traffic
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: traffic-data-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: traffic-light-deployment
spec:
replicas: 3
selector:
matchLabels:
app: traffic-light
template:
metadata:
labels:
app: traffic-light
spec:
containers:
- name: traffic-light
image: my-traffic-light:latest
ports:
- containerPort: 5000
volumeMounts:
- name: traffic-data
mountPath: /data/traffic
volumes:
- name: traffic-data
persistentVolumeClaim:
claimName: traffic-data-pvc
5) 【面试口播版答案】:
“面试官您好,云原生技术在智慧城市中的应用核心是通过容器化封装应用,结合Kubernetes声明式编排,实现弹性、可扩展的运行。比如智慧城市的交通信号灯控制,我们用Docker打包应用及其依赖,然后用K8s部署。具体来说,创建一个Deployment定义3个副本,并设置资源请求和限制(CPU、内存),用Service暴露服务,同时配置NetworkPolicy确保容器间安全通信,还通过PersistentVolume实现数据持久化。这样系统可以自动扩缩容,比如高峰期增加容器,低峰期减少,故障时自动重启,保证系统持续运行。云原生让智慧城市应用更灵活,能快速响应需求,比如突发交通事件时,能快速部署新的控制策略。”
6) 【追问清单】:
7) 【常见坑/雷区】: