阶段一:容器与 Kubernetes 核心概念
目标:理解容器技术,掌握 Kubernetes 核心组件与对象。
容器基础(Docker) • 学习:容器概念、镜像构建、Dockerfile 编写、容器网络/存储。 • 任务: ◦ 安装 Docker,运行
nginx容器并映射端口。 ◦ 编写 Dockerfile 打包一个 Python/Node.js 应用。Kubernetes 初探 • 核心概念: ◦ Pod、Deployment、Service、Namespace、ConfigMap、Secret。 ◦ 控制器:ReplicaSet、DaemonSet、StatefulSet、Job/CronJob。 • 架构:Master 节点(API Server、Scheduler、Controller Manager、etcd)、Worker 节点(kubelet、kube-proxy、容器运行时)。 • 任务: ◦ 使用 Minikube 或 Kind 快速搭建本地集群。 ◦ 运行第一个 Pod:
kubectl run nginx --image=nginx,通过kubectl expose创建 Service。YAML 与资源定义 • 学习:编写 Kubernetes 资源清单(Deployment、Service 等)。 • 任务: ◦ 手动编写一个 Deployment YAML 文件,部署一个 Web 应用并暴露 Service。 ◦ 使用
kubectl apply -f应用配置。
阶段二:深入集群操作与网络存储
目标:掌握集群管理、网络模型、持久化存储。
集群生命周期管理 • 工具:
kubeadm手动搭建集群(理解组件交互)。 • 云服务:尝试 EKS(AWS)、GKE(Google)、AKS(Azure)的托管集群。 • 任务:使用kubeadm在虚拟机(如 2 台 Ubuntu)上部署集群。网络深入 • 核心问题:Pod 如何跨节点通信?Service 如何实现负载均衡? • 学习:CNI 插件(Calico、Flannel)、Service 类型(ClusterIP、NodePort、LoadBalancer)、Ingress 控制器(Nginx、Traefik)。 • 任务: ◦ 部署一个应用,通过 Ingress 暴露 HTTPS 服务。 ◦ 使用
kubectl port-forward调试内部服务。存储管理 • 概念:PersistentVolume(PV)、PersistentVolumeClaim(PVC)、StorageClass。 • 任务: ◦ 在集群中创建 PVC,挂载到 Pod 并持久化数据(如 MySQL 数据库)。
阶段三:高级运维与生态工具
目标:掌握监控、日志、CI/CD、安全、自定义资源。
监控与日志 • 工具链: ◦ 监控:Prometheus + Grafana(使用 kube-prometheus)。 ◦ 日志:EFK(Elasticsearch+Fluentd+Kibana)或 Loki。 • 任务:部署 Prometheus 监控集群 CPU/内存,设置 Grafana 仪表盘。
CI/CD 与 GitOps • 工具:Jenkins、Argo CD、Flux。 • 任务:使用 Argo CD 实现 GitOps 流程,自动同步 Git 仓库中的 YAML 到集群。
安全与 RBAC • 学习:ServiceAccount、Role、RoleBinding、NetworkPolicy。 • 任务:创建一个只能读取特定 Namespace 的 ServiceAccount。
Helm 包管理 • 学习:Chart 模板、Values 文件、Hooks。 • 任务:将你的应用打包为 Helm Chart 并部署。
阶段四:生产级集群与深度优化
目标:解决生产环境问题,性能调优,多集群管理。
高可用与灾备 • 方案:多 Master 节点(etcd 集群)、跨 AZ 部署、Velero 备份恢复。 • 任务:使用
kubeadm部署 3 个 Master 节点的高可用集群。性能调优 • 方向:节点资源分配(requests/limits)、调度器优化(亲和性/反亲和性)、HPA(Horizontal Pod Autoscaler)。 • 任务:为应用配置 HPA,基于 CPU 使用率自动扩缩容。
服务网格与 Istio • 学习:Sidecar 模式、流量管理(金丝雀发布)、可观测性。 • 任务:部署 Istio,实现流量拆分和链路追踪(Jaeger)。
多集群与联邦 • 工具:Kubefed、Cluster API。 • 场景:跨云或混合云部署应用。