K8s L3 运维能力实操手册(Java 开发者 · Windows)
目标人群:Java 开发工程师、Windows 电脑、K8s 一知半解
最终目标(L3):
- 能独立完成部署、升级、回滚
- 网络 / 存储 / 配置出问题能快速定位
- 能和专业运维在同一频道交流
使用方式:
👉 从上到下,一章一章照着做,不跳级
第一章:整体认知(先把脑子里的模型搭起来)
1.1 Docker 和 Kubernetes 的关系
-
Docker:
- 负责 打包应用(镜像)
- 提供 容器运行环境
-
Kubernetes(K8s) :
- 负责 管理和编排容器
- 决定容器跑在哪、挂没挂、要不要重启
类比:
- Docker = JVM
- K8s = Spring Boot + Tomcat + 运维系统
1.2 镜像是什么?
-
镜像是 只读的应用快照
-
包含:
- 操作系统基础层(如 alpine / debian)
- JDK
- 你的应用
特点:
- 不可变
- 分层存储
- 可复用
1.3 镜像仓库是怎么回事?
- 镜像仓库 = 镜像的「仓库服务器」
常见仓库:
- Docker Hub
- Harbor(企业私有)
- 阿里云 / 腾讯云镜像仓库
流程:
Docker build → Docker push → Kubernetes pull
1.4 容器是什么?
- 容器 = 镜像 + 运行时状态
- 容器不是虚拟机
区别:
| 容器 | 虚拟机 |
|---|---|
| 共享宿主机内核 | 独立 OS |
| 启动快 | 启动慢 |
| 轻量 | 重 |
1.5 容器的网络是怎么回事?(先有印象)
- 每个 Pod 一个 IP
- Pod 之间可以直接通信
- Service 提供稳定访问地址
先记住一句话:
K8s 自己不做网络,网络由 CNI 插件完成
第二章:Kubernetes 核心概念(必须吃透)
2.1 Pod
- Pod 是 最小调度单位
- 一个 Pod 里可以有多个容器(通常一个)
容器挂了 ≠ Pod 一定没了
2.2 Deployment
-
Deployment 用来管理 Pod
-
保证:
- 副本数
- 滚动更新
- 回滚
关系:
Deployment → ReplicaSet → Pod
2.3 Node
-
Node 是真正跑容器的机器
-
可以是:
- 物理机
- 虚拟机
2.4 Namespace
-
用于资源隔离
-
常见:
- default
- kube-system
第三章:Windows 本地环境搭建(必须完成)
3.1 安装 Docker Desktop
要求:
- Windows 10/11
- 启用 WSL2
步骤:
- 安装 Docker Desktop
- Settings → Kubernetes → Enable
- 等待启动完成
验证:
kubectl get nodes
第四章:第一个容器 & 镜像
4.1 Spring Boot Dockerfile(示例)
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY app.jar app.jar
ENTRYPOINT ["java","-jar","/app/app.jar"]
4.2 构建镜像
docker build -t demo-app:1.0 .
查看:
docker images
4.3 运行容器验证
docker run -p 8080:8080 demo-app:1.0
第五章:镜像仓库 & 上传
5.1 登录仓库
docker login
5.2 推送镜像
docker tag demo-app:1.0 yourname/demo-app:1.0
docker push yourname/demo-app:1.0
第六章:第一个 K8s Deployment
6.1 Deployment YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-app
spec:
replicas: 2
selector:
matchLabels:
app: demo-app
template:
metadata:
labels:
app: demo-app
spec:
containers:
- name: app
image: yourname/demo-app:1.0
ports:
- containerPort: 8080
部署:
kubectl apply -f deployment.yaml
第七章:Service(网络核心)
7.1 Service YAML
apiVersion: v1
kind: Service
metadata:
name: demo-app
spec:
type: ClusterIP
selector:
app: demo-app
ports:
- port: 80
targetPort: 8080
第八章:Ingress(对外访问)
8.1 Ingress 核心链路
Browser → Ingress → Service → Pod
第九章:存储 & 文件映射
9.1 Volume 类型
- emptyDir(临时)
- hostPath(慎用)
- PVC / PV(生产)
9.2 PVC 示例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: demo-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
第十章:经典问题 & 排查手册(L3 核心)
10.1 Pod 起不来
- kubectl describe pod
- kubectl logs
常见原因:
- 镜像拉不下来
- 配置错误
10.2 服务访问不了
排查顺序:
Ingress → Service → Pod → 应用端口
10.3 数据丢失
- 是否使用 emptyDir
- 是否 Pod 重建
结束语
当你能:
- 看 YAML 不慌
- 网络不通能画拓扑
- 数据丢失知道查 Volume
👉 你已经是 K8s L3(运维级)