Kubernetes 入门:
一、Kubernetes 是什么?
传统部署方式
手动管理服务器
负载均衡配置复杂
维护困难
Kubernetes部署方式
智能容器编排
自动负载均衡
自动化运维
二、Kubernetes 的核心特性
K8s核心特性
自动化部署
智能调度
资源管理
系统自愈
自动重启
故障转移
健康检查
水平扩展
HPA自动扩缩
负载均衡
服务发现
DNS命名
负载均衡
自动更新
滚动更新
零停机部署
版本回滚
配置管理
ConfigMap
Secret
存储管理
持久化存储
多种存储类型
批量作业
Job
CronJob
三、Kubernetes 的总体架构
Worker Node 3
Worker Node 2
Worker Node 1
Control Plane (Master)
kube-apiserver
集群入口
etcd
键值存储
kube-scheduler
调度器
kube-controller-manager
控制器管理器
etcd
持久化存储
kubelet
节点代理
Container Runtime
容器运行时
kube-proxy
网络代理
Pod
容器组
应用容器
kubelet
节点代理
Container Runtime
容器运行时
kube-proxy
网络代理
Pod
容器组
应用容器
kubelet
节点代理
Container Runtime
容器运行时
kube-proxy
网络代理
Pod
容器组
应用容器
四、Kubernetes 的核心基础概念
3. Pod 结构
Pod
共享网络命名空间
共享存储卷
容器1
主应用
容器2
Sidecar
容器3
Init容器
IP地址
localhost通信
data
共享文件系统
4. Service 工作原理
客户端
Service
my-service:80
负载均衡
Pod1
IP: 10.1.0.1
Pod2
IP: 10.1.0.2
Pod3
IP: 10.1.0.3
容器
容器
容器
Selector:
app=myapp
7. Deployment 管理流程
Pod ReplicaSet Deployment 用户 Pod ReplicaSet Deployment 用户 滚动更新开始 创建Deployment (replicas: 3, image: v1) 创建ReplicaSet v1 创建3个Pod (v1) Pod Running 状态更新 部署完成 更新镜像到v2 创建ReplicaSet v2 创建1个Pod (v2) Pod Running 删除1个Pod (v1) 创建1个Pod (v2) Pod Running 删除1个Pod (v1) 创建1个Pod (v2) Pod Running 删除1个Pod (v1) 滚动更新完成
9. StatefulSet 与 Deployment 对比
StatefulSet (有状态)
web-0
有序稳定名称
web-1
web-2
持久化存储
数据持久性
稳定网络标识
可预测访问
存储卷1
存储卷2
存储卷3
Deployment (无状态)
web-76d7c5b8c7
随机名称
web-76d7c5b8c8
web-76d7c5b8c9
临时存储
无持久性
动态IP
无稳定网络标识
10. ConfigMap 工作原理
应用配置
传统方式
打包到Docker镜像
修改需重建镜像
应用配置
ConfigMap方式
创建ConfigMap对象
Pod通过环境变量引用
Pod通过Volume挂载
动态更新配置
13. Ingress 工作原理
路径: /api
域名: app.example.com
路径: /admin
互联网用户
Ingress Controller
Nginx/Traefik
路由规则
Service: api-service
Service: web-service
Service: admin-service
Pod: api-1
Pod: api-2
Pod: web-1
Pod: web-2
Pod: web-3
Pod: admin-1
SSL/TLS终止
负载均衡
访问控制
14. HPA 自动扩缩容
当前: 80%
目标: 50%
当前: 20%
目标: 50%
当前: 50%
目标: 50%
监控指标
HPA控制器
检查CPU使用率
需要扩容
需要缩容
保持现状
增加副本数: 3→5
减少副本数: 3→2
Deployment
创建新Pod
Deployment
删除Pod
负载降低
CPU: 80%→50%
负载提高
CPU: 20%→50%
15. kubectl 工作流程
Pod kubelet Scheduler Controller Manager etcd存储 kube-apiserver kubectl CLI 开发者/管理员 Pod kubelet Scheduler Controller Manager etcd存储 kube-apiserver kubectl CLI 开发者/管理员 kubectl apply -f deployment.yaml REST API 请求 存储资源定义 通知控制器 创建ReplicaSet 调度Pod 选择节点 创建Pod指令 启动容器 容器运行状态 状态报告 更新状态 返回结果 显示结果
五、Kubernetes 学习路径
Pod Service Volume 可观测性 外部访问 密钥管理 批处理任务 持久化存储 掌握Master/Node 无状态应用 有状态应用 服务发现 理解Docker基础 网络安全 自动扩缩容 节点守护进程 资源管理 配置管理 基础知识 基础知识 理解Docker基础 理解容器概念 理解容器概念 掌握Master/Node 学习K8s架构 学习K8s架构 Pod Service Volume 核心概念入门 核心概念入门 工作负载 工作负载 无状态应用 Deployment Deployment 有状态应用 StatefulSet StatefulSet 节点守护进程 DaemonSet DaemonSet 批处理任务 Job/CronJob Job/CronJob 配置与存储 配置与存储 配置管理 ConfigMap ConfigMap 密钥管理 Secret Secret 持久化存储 PV/PVC PV/PVC 网络与服务 网络与服务 服务发现 Service Service 外部访问 Ingress Ingress 网络安全 网络策略 网络策略 运维与监控 运维与监控 自动扩缩容 HPA HPA 资源管理 资源配额 资源配额 可观测性 监控日志 监控日志 Kubernetes 学习路径
核心概念关系图
Namespace
Deployment
StatefulSet
DaemonSet
Service
ConfigMap
Secret
Ingress
ReplicaSet
Pod
Container 1
Container 2
Container 3
Volume
PersistentVolume