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 生成)