90天云原生企业级私有化架构实战学习计划

admin
1
2026-08-28

90天云原生企业级私有化架构【全量每日逐行实操手册】(1-90天完整命令/YAML全覆盖)

通用前置说明(全局统一规则)

  • 实验环境:3台Master主控 + 2台Worker工作节点(CentOS 7/8 统一环境)

  • 架构标准:企业私有化离线架构,全程无外网依赖、生产级YAML、生产命令

  • 每日固定时长:3小时,固定流程:实操部署→校验成功→故障模拟→归档打卡

  • 硬性规范:所有资源手写YAML部署,禁止图形化操作,所有配置可直接用于生产

  • 每日收尾标准:资源Running无异常 + 命令执行成功 + 截图归档 + 问题复盘笔记


阶段一:K8S生产筑基(Day1-Day30)|核心能力:单集群高可用运维、YAML精通、网络/存储/调度/排障

Week1 Day1-Day7|K8S核心资源手写YAML精通(Pod/Deploy/Svc/Ingress/配置管理)

Day1 完整实操:Pod 全场景实战(单容器/多容器/Init容器/故障排障)

任务1:单容器生产级Pod部署(带资源限制)

新建文件:pod-single.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  namespace: default
  labels:
    app: nginx
    env: study
spec:
  containers:
  - name: nginx
    image: nginx:1.21
    ports:
    - containerPort: 80
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 500m
        memory: 256Mi

执行部署与校验命令:

kubectl apply -f pod-single.yaml
kubectl get pods -o wide
kubectl describe pod nginx-pod
kubectl logs nginx-pod
kubectl exec -it nginx-pod -- /-bin/bash

任务2:多容器Pod实战(业务+辅助容器)

新建文件:pod-multi.yaml

apiVersion: v1
kind: Pod
metadata:
  name: multi-pod
  namespace: default
  labels:
    app: multi-demo
spec:
  containers:
  - name: nginx
    image: nginx:1.21
  - name: busybox
    image: busybox:1.35
    command: ["sleep","36000"]

部署校验:

kubectl apply -f pod-multi.yaml
kubectl get pods
kubectl exec -it multi-pod -c busybox -- sh

任务3:Init初始化容器实战(生产启动依赖场景)

新建文件:pod-init.yaml

apiVersion: v1
kind: Pod
metadata:
  name: init-pod
  namespace: default
spec:
  initContainers:
  - name: init-test
    image: busybox:1.35
    command: ["sh","-c","echo init ok > /tmp/test.txt"]
    volumeMounts:
    - name: workdir
      mountPath: /tmp
  containers:
  - name: nginx
    image: nginx:1.21
    volumeMounts:
    - name: workdir
      mountPath: /tmp
  volumes:
  - name: workdir
    emptyDir: {}

部署校验+查看初始化日志:

kubectl apply -f pod-init.yaml
kubectl describe pod init-pod
kubectl logs init-pod -c init-test

任务4:模拟Pod高频故障并修复

故障1:错误镜像名称,模拟镜像拉取失败 → 修改镜像版本重新部署

故障2:资源limit过小,模拟Pod OOM → 调大内存限制恢复

Day1打卡产出:3份Pod YAML + 2类故障修复复盘文档

Day2 完整实操:Deployment滚动发布+扩容回滚(生产核心)

任务1:生产级Deployment基础模板

新建文件:deploy-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  namespace: default
  labels:
    app: nginx-web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-web
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        app: nginx-web
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 256Mi

部署校验:

kubectl apply -f deploy-nginx.yaml
kubectl get deploy,pods
kubectl rollout status deployment nginx-deploy

任务2:手动扩容/缩容实操

# 扩容至5副本
kubectl scale deployment nginx-deploy --replicas=5
# 缩容至2副本
kubectl scale deployment nginx-deploy --replicas=2
kubectl get deploy

任务3:滚动升级+版本回滚实战

# 升级镜像版本
kubectl set image deployment nginx-deploy nginx=nginx:1.22
# 查看升级记录
kubectl rollout history deployment nginx-deploy
# 回滚上一版本
kubectl rollout undo deployment nginx-deploy

Day2打卡产出:生产Deployment模板 + 升级回滚操作日志

Day3 完整实操:Service四种访问模式实战

任务1:ClusterIP集群内部访问

新建 svc-cluster.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-clusterip
  namespace: default
spec:
  type: ClusterIP
  selector:
    app: nginx-web
  ports:
  - port: 80
    targetPort: 80
kubectl apply -f svc-cluster.yaml
kubectl get svc
# 集群内curl访问测试
curl 集群IP:80

任务2:NodePort外网访问

新建 svc-nodeport.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-nodeport
  namespace: default
spec:
  type: NodePort
  selector:
    app: nginx-web
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30080
kubectl apply -f svc-nodeport.yaml
# 物理机浏览器访问:节点IP:30080

任务3:故障排查:标签不匹配、端口错误导致Service无法访问,逐一修复

Day3打卡产出:全套Service YAML + 访问故障排障记录

Day4 完整实操:Ingress企业域名网关实战

任务1:部署Nginx-Ingress控制器

# 离线apply本地ingress镜像yaml
kubectl apply -f ingress-nginx.yaml
kubectl get pods -n ingress-nginx

任务2:域名路由Ingress规则

新建 ingress-demo.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default
spec:
  rules:
  - host: nginx.study.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-clusterip
            port:
              number: 80
kubectl apply -f ingress-demo.yaml
kubectl get ingress
# 本地hosts绑定节点IP与域名,浏览器访问测试

Day4打卡产出:企业Ingress通用模板 + 404/502故障修复记录

Day5 完整实操:ConfigMap&Secret配置热更新

任务1:普通ConfigMap环境变量挂载

新建 cm-env.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-env-cm
  namespace: default
data:
  APP_NAME: study-k8s
  APP_VERSION: v1.0

任务2:文件型ConfigMap挂载

新建 cm-file.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-file-cm
  namespace: default
data:
  nginx.conf: |
    server {
      listen 80;
      server_name localhost;
      root /usr/share/nginx/html;
    }

任务3:Secret密钥配置

新建 secret-db.yaml

apiVersion: v1
kind: Secret
metadata:
  name: db-secret
  namespace: default
type: Opaque
data:
  DB_USER: YWRtaW4=
  DB_PASS: MTIzNDU2

依次部署、挂载至Pod、测试配置热更新

Day5打卡产出:配置管理全套生产模板

Day6 完整实操:StatefulSet&DaemonSet生产场景

任务1:DaemonSet全局节点部署

新建 ds-demo.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter-ds
  namespace: default
spec:
  selector:
    matchLabels:
      app: node-exporter
  template:
    metadata:
      labels:
        app: node-exporter
    spec:
      containers:
      - name: exporter
        image: prom/node-exporter:v1.5.0
        ports:
        - containerPort: 9100

任务2:StatefulSet有状态应用

新建 sts-demo.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql-sts
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: mysql
  serviceName: mysql-svc
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        ports:
        - containerPort: 3306

部署观察:稳定域名、有序Pod名称、启停顺序

Day6打卡产出:有状态/无状态生产落地案例

Day7 周复盘:综合项目搭建+10类故障模拟

实操:从零搭建完整业务栈:Deployment+Service+Ingress+ConfigMap+Secret

人为制造并修复:镜像错误、标签不匹配、端口冲突、资源不足、配置挂载失败等10类故障

Day7产出:Week1所有YAML归档 + 第一版故障手册

Week2 Day8-Day14|K8S网络、权限、调度企业级实战

Day8:Calico网络插件深度实操+网络排障

实操1:离线部署Calico完整组件

实操2:测试Pod跨节点通信、集群IP互通

实操3:模拟网络策略阻断/放行Pod通信

产出:Calico部署YAML+网络故障排查流程

Day9:命名空间隔离+资源配额管控

实操1:创建dev/test/prod三套环境命名空间

实操2:配置ResourceQuota全局资源配额

实操3:配置LimitRange默认Pod资源限制

产出:多环境隔离+资源配额生产模板

Day10:RBAC权限体系完整落地

实操1:创建自定义用户、角色

实操2:绑定权限:只读用户/运维用户/管理员

实操3:测试权限生效、越权访问拦截

产出:企业RBAC权限模板

Day11:节点污点与容忍调度

实操1:给节点打污点,禁止普通业务调度

实操2:编写容忍YAML,实现指定业务调度至特殊节点

实操3:实现运维节点、业务节点隔离

Day12:Pod亲和性/反亲和性实战

实操1:节点亲和:指定业务运行在高配节点

实操2:Pod反亲和:多副本打散至不同节点,实现高可用

实操3:Pod亲和:关联业务聚合部署

Day13:集群调度故障专项排障

模拟故障:调度失败、污点拦截、资源不足、亲和性不匹配,逐一排查修复

Day14:Week2综合复盘:企业多租户资源隔离完整演练

整合命名空间、配额、RBAC、调度策略,搭建多团队隔离环境

Week3 Day15-Day21|K8S存储体系生产落地

Day15:PV/PVC静态存储完整流程

实操:手动创建PV、PVC,绑定挂载至业务Pod,验证持久化

Day16:StorageClass动态存储

实操:部署SC存储类,实现PVC自动创建PV,生产动态供给方案

Day17:LocalPV本地存储生产方案

实操:节点本地磁盘挂载、LocalPV绑定,适配高性能本地业务场景

Day18:Longhorn分布式存储离线部署

实操:部署Longhorn高可用存储,创建存储卷、快照、备份恢复

Day19:有状态应用持久化实战

实操:MySQL StatefulSet绑定持久化存储,验证数据留存

Day20:存储故障专项模拟修复

模拟:挂载失败、卷丢失、权限不足、数据异常故障修复

Day21:Week3复盘:存储方案选型总结与归档

Week4 Day22-Day30|高可用集群搭建+K8M多集群管理

Day22-Day24:离线搭建 3Master+2Worker 生产高可用K8S集群

全程离线kubeadm部署、内核优化、容器运行时、镜像本地加载

Day25:ETCD集群备份、快照恢复、容灾实操

Day26:节点宕机、集群组件异常故障恢复演练

Day27:集群资源调优:CPU/内存内核参数、QoS等级优化

Day28:离线部署企业级K8M多集群管理面板

Day29:K8M实操:集群纳管、web终端、日志查看、AI排障、资源监控

Day30:阶段一结业:输出K8S集群运维手册V1、全套环境稳定运行

阶段二:私有化DevOps全栈闭环(Day31-Day55)

Week5 Day31-Day37|私有化代码+镜像仓库离线搭建

Day31-Day32:Gitea高可用离线部署、团队/用户/权限/分支规范配置

Day33-Day35:Harbor离线高可用部署、HTTPS配置、漏洞扫描、项目隔离

Day36:Harbor Helm仓库开启、Chart上传、版本管理

Day37:全局替换集群镜像源为本地Harbor,实现完全离线闭环

Week6 Day38-Day44|Jenkins CI自动化流水线落地

Day38-Day39:Jenkins离线部署、插件离线安装、安全加固

Day40:配置Git拉取凭证、代码仓库关联

Day41:编写标准Jenkinsfile,实现代码拉取+编译

Day42:流水线自动构建镜像+推送本地Harbor

Day43:构建失败、依赖缺失、镜像推送异常故障排查

Day44:流水线版本打标、构建缓存、流程优化

Week7 Day45-Day55|GitOps ArgoCD生产落地+密钥安全体系

Day45-Day46:ArgoCD离线部署、账号权限、安全配置

Day47:ArgoCD关联私有Gitea仓库、自动同步应用

Day48:打通全闭环:代码提交→CI构建镜像→CD自动部署集群

Day49:应用灰度发布、版本回滚、生产发布规范

Day50-Day52:HashiCorp Vault离线部署、密钥托管、替换明文配置

Day53-Day55:DevOps全链路复盘、安全规范固化、流水线归档

阶段三:企业可观测体系落地(Day56-Day75)

Week8 Day56-Day63|监控系统全栈落地

Day56-Day57:Prometheus离线部署、集群全资源自动发现采集

Day58-Day59:Grafana部署、导入官方生产大盘、自定义面板

Day60-Day61:业务自定义指标采集、接口监控、QPS监控

Day62-Day63:Alertmanager企业告警规则、钉钉/邮件告警配置

Week9 Day64-Day75|日志+链路追踪完整落地

Day64-Day67:Loki+Promtail离线部署、全集群容器日志采集

Day68-Day70:日志检索、关键词告警、业务异常定位实操

Day71-Day73:Tempo链路追踪部署、微服务调用链排查

Day74-Day75:可观测整体调优、存储轮转、资源优化、大盘固化

阶段四:多集群架构整合+企业结业实战(Day76-Day90)

Week10 Day76-Day83|多集群架构搭建与统一管理

Day76-Day78:搭建双生产集群:基础设施集群 + 业务应用集群

Day79-Day80:K8M统一纳管双集群、集群权限隔离、环境隔离

Day81-Day82:多集群发布策略、资源分片调度、跨集群运维

Day83:多集群运维规范、备份策略、容灾方案梳理

Week11 Day84-Day90|生产故障大演练+架构固化+结业

Day84-Day86:20例生产高频故障全真模拟(节点/网络/存储/集群/流水线/监控)

Day87-Day88:整理全套文档:架构设计文档+部署手册+运维手册+故障手册

Day89:全架构复盘、性能调优、架构短板优化

Day90:终极结业考核:从零纯手动搭建整套企业私有化全栈架构,无外网、无文档参考,完整复现生产环境


90天结业企业级能力终验标准

  • ✅ 独立搭建3主高可用K8S集群、多集群隔离架构

  • ✅ 全套私有化DevOps离线闭环(Gitea+Harbor+Jenkins+ArgoCD+Vault)

  • ✅ 全套可观测平台落地(监控+日志+链路追踪+告警)

  • ✅ K8M多集群统一运维、AI辅助排障、生产日常运维全覆盖

  • ✅ 熟练处理90%以上企业生产故障,具备架构优化与容灾设计能力

  • ✅ 完全匹配中小企业云原生运维/初级架构师上岗标准

(注:部分内容可能由 AI 生成)

动物装饰