i007.cc

i007.cc

优先队列-降维打击

05.价值资料

根据你的基础,真正需要补的只有三块:

❌ FastAPI(Python HTTP 服务开发)— 没写过
❌ Kubernetes 实操              — 程度未知
❌ Terraform 系统化             — 看过但没深用

 

其他的:gRPC 直接跳过,CI/CD 直接跳过,Python 基础直接跳过。


精准两周计划

第一周:Kubernetes 实操(最重要)

你现在 K8s 用过 kubectl 吗?自己部署过服务吗?

这个我需要你先回答,决定第一周从哪里切入。

如果完全没实操过,第一周这样走:

Day 1:装环境
  brew install minikube kubectl
  minikube start
  kubectl get nodes  # 看到 Ready 就成功了

Day 2-3:部署你自己的服务
  把之前写过的任何一个程序打成 Docker 镜像
  写 Deployment + Service 的 yaml,部署上去
  用 kubectl logs / describe / exec 排查问题

Day 4-5:进阶配置
  ConfigMap 注入配置
  Secret 注入密码
  设置 resource limits 和 readinessProbe
  
Day 6-7:故障演练
  手动 kill 一个 Pod,看自愈
  把 image 改成不存在的,排查 ImagePullBackOff
  把内存 limit 设很小,触发 OOMKilled,排查
  练到这些故障你看一眼就知道怎么处理

 


第二周:FastAPI + Terraform

Day 8-10:FastAPI

你会 requests 调 API,现在反过来 API:

python
# 目标:三天内能写出这样一个服务

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import uvicorn

app = FastAPI()

# 模拟一个车队状态服务
vehicles = {
    "v001": {"battery": 85, "online": True},
    "v002": {"battery": 20, "online": False},
}

class StatusUpdate(BaseModel):
    battery: int
    online: bool

@app.get("/vehicles/{vehicle_id}")
def get_vehicle(vehicle_id: str):
    if vehicle_id not in vehicles:
        raise HTTPException(status_code=404, detail="Vehicle not found")
    return vehicles[vehicle_id]

@app.put("/vehicles/{vehicle_id}")
def update_vehicle(vehicle_id: str, update: StatusUpdate):
    vehicles[vehicle_id] = update.dict()
    return {"message": "updated"}

@app.get("/health")
def health():
    return {"status": "ok"}

 

Day 8:写完这个服务,本地跑通。
Day 9:打成 Docker 镜像,部署到第一周搭好的 K8s。
Day 10:加上 ConfigMap 注入配置,练习完整的开发到部署链路。

Day 11-13:Terraform

你用过 ARM Template,思维模型是一样的,语法切换两天够了:

hcl
# ARM Template 你写过这种:
# "type": "Microsoft.Network/virtualNetworks"

# Terraform 等价写法:
resource "azurerm_virtual_network" "main" {
  name                = "fleet-vnet"
  resource_group_name = azurerm_resource_group.main.name
  location            = "East Asia"
  address_space       = ["10.0.0.0/16"]
}

# 核心命令就这四个:
terraform init
terraform plan    # 等价于 ARM 的 what-if
terraform apply
terraform destroy

 

Day 11:把 ARM Template 的概念映射到 Terraform,写一个简单的 Azure 资源。
Day 12:练 state 管理,理解 remote state 为什么要放到 Blob Storage。
Day 13:写一个完整的小模块:VNet + K8s 集群 + 输出 endpoint。

Day 14:串联演练

用 Terraform 建好基础设施
→ GitHub Actions 触发构建
→ Docker 镜像推到 ACR
→ 部署到 K8s
→ kubectl 验证服务正常

 

走通这条链路一遍,面试里就可以说”我做过完整的端到端部署”。


面试话术准备

这三块学完,面试里这样表达最有力:

Kubernetes:

“我在本地搭过 K8s 环境,部署过自己写的服务,模拟过 OOMKilled、CrashLoopBackOff 等常见故障的排查。在微软做 Azure 服务期间也接触过生产级别的容器编排。”

Terraform:

“我在微软用过 ARM Template 和 Bicep,Terraform 的状态机模型和声明式思路是一样的,语法切换很快。我理解 remote state、state locking 这些生产环境必须处理的问题。”

FastAPI:

“我用 Python 写过 RESTful API 服务,理解 Pydantic 做数据校验、依赖注入、HTTP 异常处理这些实践。也打包成 Docker 部署到 K8s 过。”


你现在告诉我

K8s 你现在实操水平怎么样? 用过 kubectl?还是只停留在概念层面?

这个决定第一周从 Day 1 开始还是从 Day 3 开始。

发表回复