K8s L3 运维能力实操手册(Java 开发者 · Windows)

23 阅读3分钟

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

步骤:

  1. 安装 Docker Desktop
  2. Settings → Kubernetes → Enable
  3. 等待启动完成

验证:

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(运维级)