快速开始
本文档将带你在 10 分钟内完成 KitOps 的完整工作流:从打包模型到推送 TCR,再到在 TKE 中解包部署。
🎯 学习目标
Section titled “🎯 学习目标”- 安装和配置 Kit CLI
- 创建第一个 ModelKit
- 推送到 TCR 容器镜像仓库
- 在 TKE 中拉取和解包
📋 前置条件
Section titled “📋 前置条件”| 条件 | 说明 |
|---|---|
| 腾讯云账号 | 用于访问 TCR 和 TKE |
| TCR 实例 | 企业版或个人版均可 |
| TKE 集群 | Kubernetes 1.20+ |
| kubectl | 已配置并可访问集群 |
🛠️ 安装 Kit CLI
Section titled “🛠️ 安装 Kit CLI”# 使用 Homebrewbrew install kitops-ml/kitops/kit
# 验证安装kit version# 一键安装脚本curl -fsSL https://get.kitops.org | sh
# 或手动下载VERSION=1.11.0curl -LO https://github.com/kitops-ml/kitops/releases/download/v${VERSION}/kit-linux-amd64.tar.gztar -xzf kit-linux-amd64.tar.gzsudo mv kit /usr/local/bin/
# 验证安装kit versionWindows
Section titled “Windows”# 使用 Scoopscoop bucket add kitops https://github.com/kitops-ml/scoop-kitops.gitscoop install kit
# 验证安装kit version📦 创建示例项目
Section titled “📦 创建示例项目”1. 初始化项目结构
Section titled “1. 初始化项目结构”# 创建项目目录mkdir kitops-demo && cd kitops-demo
# 创建标准目录结构mkdir -p models data notebooks config
# 创建示例模型文件(实际场景替换为真实模型)echo '{"model_type": "bert", "version": "1.0"}' > models/config.jsondd if=/dev/urandom of=models/model.bin bs=1M count=10 2>/dev/null
# 创建示例数据集cat > data/train.csv << 'EOF'text,label"这个产品非常好用",1"服务态度很差",0"性价比很高,推荐购买",1"不值得购买",0EOF
# 创建示例代码cat > notebooks/inference.py << 'EOF'#!/usr/bin/env python3"""模型推理脚本"""
import json
def load_model(model_path): """加载模型配置""" with open(f"{model_path}/config.json") as f: return json.load(f)
def predict(text, model): """执行推理(示例)""" # 实际场景替换为真实推理逻辑 return {"text": text, "sentiment": "positive", "confidence": 0.95}
if __name__ == "__main__": model = load_model("../models") result = predict("这个产品非常好用", model) print(f"推理结果: {result}")EOF2. 编写 Kitfile
Section titled “2. 编写 Kitfile”cat > Kitfile << 'EOF'manifestVersion: v1.0.0
package: name: sentiment-classifier version: 1.0.0 description: 中文情感分类模型 - 用于评论情感分析 authors: - TKE Workshop Team license: Apache-2.0
model: name: bert-sentiment path: ./models framework: PyTorch description: 基于 BERT 的情感分类模型 version: 1.0.0
datasets: - name: training-data path: ./data/train.csv description: 情感分类训练数据
code: - path: ./notebooks description: 推理代码EOF3. 查看项目结构
Section titled “3. 查看项目结构”tree .# 输出:# .# ├── Kitfile# ├── config/# ├── data/# │ └── train.csv# ├── models/# │ ├── config.json# │ └── model.bin# └── notebooks/# └── inference.py📤 打包和推送到 TCR
Section titled “📤 打包和推送到 TCR”1. 打包为 ModelKit
Section titled “1. 打包为 ModelKit”# 打包并标记# 格式: kit pack <目录> -t <仓库地址>:<标签>kit pack . -t ccr.ccs.tencentyun.com/<命名空间>/sentiment-model:v1.0.0
# 输出示例:# Packing from context: .# Model: bert-sentiment# Datasets: training-data# Code: ./notebooks# Created ModelKit: ccr.ccs.tencentyun.com/<命名空间>/sentiment-model:v1.0.02. 查看本地 ModelKit
Section titled “2. 查看本地 ModelKit”# 列出本地所有 ModelKitkit list
# 输出示例:# REPOSITORY TAG DIGEST SIZE# ccr.ccs.tencentyun.com/<命名空间>/sentiment-model v1.0.0 sha256:abc123 10.5 MB
# 查看 ModelKit 详情kit inspect ccr.ccs.tencentyun.com/<命名空间>/sentiment-model:v1.0.03. 登录 TCR
Section titled “3. 登录 TCR”# 获取 TCR 访问凭证(腾讯云控制台 -> 容器镜像服务 -> 访问管理)# 方式 1: 使用用户名密码kit login ccr.ccs.tencentyun.com -u <用户名> -p <密码>
# 方式 2: 使用临时凭证(推荐)kit login ccr.ccs.tencentyun.com -u <临时用户名> -p <临时密码>
# 输出: Login Succeeded!!! tip “TCR 凭证获取” 1. 登录 腾讯云控制台 2. 进入容器镜像服务 -> 访问管理 3. 生成长期凭证或临时凭证
4. 推送到 TCR
Section titled “4. 推送到 TCR”# 推送 ModelKitkit push ccr.ccs.tencentyun.com/<命名空间>/sentiment-model:v1.0.0
# 输出示例:# Pushing to ccr.ccs.tencentyun.com/<命名空间>/sentiment-model:v1.0.0# Layer sha256:abc123: Pushed# Layer sha256:def456: Pushed# v1.0.0: digest: sha256:789xyz size: 10.5 MB# Push complete!📥 在 TKE 中拉取和解包
Section titled “📥 在 TKE 中拉取和解包”方式 1: 在 TKE 节点上直接操作
Section titled “方式 1: 在 TKE 节点上直接操作”# SSH 到 TKE 节点ssh root@<节点IP>
# 安装 Kit CLI(如果未安装)curl -fsSL https://get.kitops.org | sh
# 登录 TCR(使用内网地址,更快)kit login <实例名>.tencentcloudcr.com -u <用户名> -p <密码>
# 拉取 ModelKitkit pull <实例名>.tencentcloudcr.com/<命名空间>/sentiment-model:v1.0.0
# 解包到指定目录kit unpack <实例名>.tencentcloudcr.com/<命名空间>/sentiment-model:v1.0.0 \ -d /opt/models/sentiment
# 验证ls -la /opt/models/sentiment方式 2: 使用 Init Container(推荐)
Section titled “方式 2: 使用 Init Container(推荐)”创建一个带有 Kit CLI 的 Init Container,自动拉取和解包 ModelKit:
apiVersion: apps/v1kind: Deploymentmetadata: name: sentiment-inference namespace: ai-workloadsspec: replicas: 1 selector: matchLabels: app: sentiment-inference template: metadata: labels: app: sentiment-inference spec: # Init Container: 使用 KitOps 解包模型 initContainers: - name: model-loader image: ghcr.io/kitops-ml/kit:latest command: - /bin/sh - -c - | kit login ${TCR_REGISTRY} -u ${TCR_USERNAME} -p ${TCR_PASSWORD} kit pull ${MODEL_IMAGE} kit unpack ${MODEL_IMAGE} -d /model-data env: - name: TCR_REGISTRY value: "<实例名>.tencentcloudcr.com" - name: TCR_USERNAME valueFrom: secretKeyRef: name: tcr-credentials key: username - name: TCR_PASSWORD valueFrom: secretKeyRef: name: tcr-credentials key: password - name: MODEL_IMAGE value: "<实例名>.tencentcloudcr.com/<命名空间>/sentiment-model:v1.0.0" volumeMounts: - name: model-volume mountPath: /model-data
# 主容器: 运行推理服务 containers: - name: inference image: python:3.10-slim command: - python - /model-data/notebooks/inference.py volumeMounts: - name: model-volume mountPath: /model-data ports: - containerPort: 8080
volumes: - name: model-volume emptyDir: {}---# TCR 凭证 SecretapiVersion: v1kind: Secretmetadata: name: tcr-credentials namespace: ai-workloadstype: OpaquestringData: username: "<TCR用户名>" password: "<TCR密码>"部署到 TKE:
# 创建命名空间kubectl create namespace ai-workloads
# 应用配置kubectl apply -f kitops-deployment.yaml
# 检查状态kubectl get pods -n ai-workloads -w
# 查看日志kubectl logs -n ai-workloads -l app=sentiment-inference -c model-loader✅ 验证部署
Section titled “✅ 验证部署”# 检查 Pod 状态kubectl get pods -n ai-workloads
# 输出示例:# NAME READY STATUS RESTARTS AGE# sentiment-inference-7b8f9c6d4-x2k9m 1/1 Running 0 2m
# 进入 Pod 验证模型文件kubectl exec -it -n ai-workloads deployment/sentiment-inference -- ls -la /model-data
# 输出示例:# total 10568# drwxr-xr-x 5 root root 4096 Mar 6 10:00 .# -rw-r--r-- 1 root root 423 Mar 6 10:00 Kitfile# drwxr-xr-x 2 root root 4096 Mar 6 10:00 data# drwxr-xr-x 2 root root 4096 Mar 6 10:00 models# drwxr-xr-x 2 root root 4096 Mar 6 10:00 notebooks🎉 恭喜完成!
Section titled “🎉 恭喜完成!”你已经完成了 KitOps on TKE 的快速入门:
- ✅ 安装了 Kit CLI
- ✅ 创建了第一个 ModelKit
- ✅ 推送到了 TCR 镜像仓库
- ✅ 在 TKE 中成功解包和部署
:octicons-arrow-right-24: 学习 Kitfile 编写