云原生部署实战培训课程大纲
一、培训对象
1. 开发工程师:熟悉传统应用开发,需掌握云原生环境下的部署与运维技能。
2. 运维工程师:具备基础运维经验,需学习容器化、自动化运维及监控工具。
3. 架构师:需设计高可用、弹性扩展的云原生架构,优化资源利用率。
4. DevOps工程师:希望掌握CI/CD流水线、自动化测试与部署流程。
5. 技术管理者:需理解云原生技术趋势,制定团队技术转型策略。
二、培训目标
1. 核心能力:
· 理解云原生核心概念(容器化、微服务、动态编排、声明式运维)。
· 熟练使用Docker、Kubernetes(K8s)、Helm等工具进行应用部署。
· 掌握云原生架构设计原则(无状态化、弹性伸缩、服务网格)。
2. 实战技能:
· 能独立完成从代码到云上部署的全流程(CI/CD、镜像构建、集群管理)。
· 学会使用Prometheus、Grafana监控应用性能,通过ELK收集日志。
3. 进阶目标:
· 优化云原生应用性能(资源调度、自动扩缩容、服务治理)。
· 设计多云/混合云架构,实现故障自愈与高可用。
三、培训内容与案例说明
模块1:云原生基础与容器化技术
· 内容:
· 云原生定义:对比传统架构,强调敏捷、弹性、可观测性。
· 容器化核心:Docker镜像构建、分层存储、网络模式(Bridge/Host)。
· 镜像优化:多阶段构建、减小镜像体积(如使用Alpine基础镜像)。
· 案例:
· 构建轻量化Nginx镜像:
1. 使用多阶段构建,先编译后复制静态文件。
2. 最终镜像仅包含Nginx二进制文件和配置,体积从1GB缩减至20MB。
# 第一阶段:编译环境
FROM node:14 as builder
RUN echo "Hello World" > index.html
# 第二阶段:生产环境
FROM nginx:alpine
COPY --from=builder /index.html /usr/share/nginx/html
模块2:Kubernetes核心组件与编排
· 内容:
· K8s架构:Master节点(API Server、Scheduler)、Worker节点(Kubelet、Container Runtime)。
· 核心资源对象:Pod、Deployment、Service、Ingress、ConfigMap/Secret。
· 调度策略:节点亲和性、污点与容忍度、资源请求与限制。
· 案例:
· 部署无状态Web应用:
1. 创建Deployment管理Pod副本(如3个Nginx实例)。
2. 通过Service暴露内部访问(ClusterIP),通过Ingress对外提供HTTPS入口。
3. 使用ConfigMap注入环境变量(如数据库连接配置)。
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
envFrom:
- configMapRef:
name: app-config
模块3:云原生存储与数据管理
· 内容:
· 存储类型:EmptyDir(临时存储)、HostPath(宿主机目录)、PersistentVolume(PV)。
· 动态供给:StorageClass + Provisioner(如NFS、Ceph、AWS EBS)。
· 数据库部署:StatefulSet管理有状态应用(如MySQL集群)。
· 案例:
· 动态分配PV给WordPress:
1. 创建StorageClass定义存储类型(如SSD)。
2. WordPress Deployment通过PVC(PersistentVolumeClaim)自动绑定PV。
3. 数据持久化,即使Pod重建也不丢失。
# storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-storage
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
模块4:服务网格与微服务治理
· 内容:
· 服务网格核心:Istio/Linkerd实现流量管理、安全通信、可观测性。
· 流量控制:金丝雀发布、A/B测试、熔断限流(通过VirtualService/DestinationRule)。
· 安全策略:mTLS加密、RBAC权限控制。
· 案例:
· Istio金丝雀发布:
1. 将10%流量导向新版本(v2)的Pod,90%保留在旧版本(v1)。
2. 监控v2的错误率,若低于阈值则逐步增加流量。
# virtualservice.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-app
spec:
hosts:
- my-app.default.svc.cluster.local
http:
- route:
- destination:
host: my-app
subset: v1
weight: 90
- destination:
host: my-app
subset: v2
weight: 10
模块5:CI/CD流水线与自动化运维
· 内容:
· 流水线工具:Jenkins/GitLab CI/Argo CD实现代码构建、测试、部署。
· GitOps理念:通过Git仓库管理K8s配置,实现声明式运维。
· 自动化测试:集成Postman/JMeter进行API测试,SonarQube代码质量扫描。
· 案例:
· GitLab CI部署Spring Boot应用到K8s:
1. 代码提交触发流水线,执行单元测试、构建镜像、推送至Harbor仓库。
2. 通过Argo CD同步K8s集群配置,自动滚动更新Deployment。
# .gitlab-ci.yml
stages:
- build
- deploy
build:
stage: build
script:
- mvn package
- docker build -t my-app:$CI_COMMIT_SHA .
- docker push harbor.example.com/my-app:$CI_COMMIT_SHA
deploy:
stage: deploy
script:
- kubectl set image deployment/my-app my-app=harbor.example.com/my-app:$CI_COMMIT_SHA
模块6:监控与日志管理
· 内容:
· 监控体系:Prometheus采集指标(CPU/内存/QPS),Grafana可视化。
· 日志管理:EFK(Elasticsearch-Fluentd-Kibana)收集与分析日志。
· 告警策略:Alertmanager根据阈值触发Slack/邮件通知。
· 案例:
· 监控Nginx性能:
1. Prometheus通过Node Exporter采集节点指标,通过Blackbox Exporter探测Nginx可用性。
2. Grafana仪表盘展示响应时间、错误率,设置告警规则(如5XX错误率>5%)。
模块7:多云与混合云架构
· 内容:
· 多云部署:使用Karmada/Cluster API管理多个K8s集群。
· 混合云策略:私有云部署核心服务,公有云处理突发流量(如电商大促)。
· 跨云服务发现:Consul/CoreDNS实现服务注册与发现。
· 案例:
· AWS + 阿里云混合部署:
1. 主集群部署在AWS,备用集群在阿里云。
2. 通过Ingress Controller实现全局负载均衡,故障时自动切换流量。
模块8:综合实战:电商系统云原生化
· 内容:
· 需求分析:用户服务、商品服务、订单服务、支付服务。
· 技术栈:
· 前端:React + Nginx(容器化部署)。
· 后端:Spring Cloud Alibaba + K8s(微服务拆分)。
· 数据层:MySQL集群(StatefulSet) + Redis缓存(Helm Chart)。
· 分阶段实施:
0. 容器化所有服务,编写K8s YAML/Helm Chart。
1. 部署Istio实现服务治理(熔断、限流)。
2. 配置CI/CD流水线,实现自动化发布。